使用 Haproxy + Nginx 实现高可用配置

您所在的位置:网站首页 f5与nginx配合 使用 Haproxy + Nginx 实现高可用配置

使用 Haproxy + Nginx 实现高可用配置

2024-06-15 07:03| 来源: 网络整理| 查看: 265

使用 Haproxy + Nginx 实现高可用配置 一、基本介绍二、使用 Haproxy + Nginx 实现高可用配置1.安装 Nginx2.安装 Haproxy3.修改 Haproxy 配置文件4.启动 Haproxy 服务5.验证

一、基本介绍

Haproxy 是目前比较流行的一种集群调度工具,同类集群调度器工具有很多,如 LVS 和 Nginx。相比较而言,LVS 性能最好,但是搭建相对复杂;Nginx 的 upstream 模块虽然支持集群功能,但是对集群节点健康检查功能不强,性能没有 Haproxy 好。

Haproxy 可以提供高可用性、负载均衡以及基于 TCP 和 HTTP 应用的代理,并且支持虚拟主机配置。官方介绍

常见调度模式:

调度模式作用Round Robin(轮询)根据轮询分配访问请求,来实现负载均衡的效果(可以配置权重,以此增加调度概率)Least Connections(最小连接数)根据后端节点的连接数大小,来动态的分配前端请求(将请求优先分配到连接数小的节点上)Source Hashing(基于来源访问调度)用于一些有 Session 会话记录在服务器端的场景,可以基于来源 IP、Cookie 等进行集群调度。 二、使用 Haproxy + Nginx 实现高可用配置

准备工作:

主机名操作系统IP地址软件包Nginx-1CentOS7.4192.168.1.1nginx-1.21.0.tar.gzNginx-2CentOS7.4192.168.1.2nginx-1.21.0.tar.gzHaproxyCentOS7.4192.168.1.3haproxy-2.6.0.tar.gz 1.安装 Nginx

1)安装并启动 Nginx 服务

[root@Nginx-1 ~]# yum -y install pcre-devel zlib-devel popt-devel openssl-devel openssl [root@Nginx-1 ~]# wget http://www.nginx.org/download/nginx-1.21.0.tar.gz [root@Nginx-1 ~]# ls anaconda-ks.cfg nginx-1.21.0.tar.gz [root@Nginx-1 ~]# tar zxf nginx-1.21.0.tar.gz -C /usr/src/ [root@Nginx-1 ~]# cd /usr/src/nginx-1.21.0/ [root@Nginx-1 nginx-1.21.0]# useradd -M -s /sbin/nologin nginx [root@Nginx-1 nginx-1.21.0]# ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-file-aio \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-http_flv_module \ --with-http_ssl_module \ --with-stream \ --with-pcre && make && make install [root@Nginx-1 nginx-1.21.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ [root@Nginx-1 nginx-1.21.0]# cd [root@Nginx-1 ~]# nginx [root@Nginx-1 ~]# netstat -anpt | grep 80

2)配置 Nginx 页面

[root@Nginx-1 ~]# echo "This is 192.168.1.1" > /usr/local/nginx/html/index.html [root@Nginx-2 ~]# echo "This is 192.168.1.2" > /usr/local/nginx/html/index.html

在这里插入图片描述

2.安装 Haproxy [root@Haproxy ~]# wget https://www.haproxy.org/download/2.6/src/haproxy-2.6.0.tar.gz [root@Haproxy ~]# ls anaconda-ks.cfg haproxy-2.6.0.tar.gz [root@Haproxy ~]# tar xf haproxy-2.6.0.tar.gz -C /usr/src/ [root@Haproxy ~]# cd /usr/src/haproxy-2.6.0/ [root@Haproxy haproxy-2.6.0]# make \ TARGET=linux$(uname -r | awk -F. '{print $1$2}') ARCH=$(uname -r | awk -F. '{print $NF}') [root@Haproxy haproxy-2.6.0]# make install PREFIX=/usr/local/haproxy TARGET 和 ARCH:分别对应系统的内核版本和系统位数。 3.修改 Haproxy 配置文件 [root@Haproxy ~]# vim /usr/local/haproxy/haproxy.cfg global log 127.0.0.1 local0 info log 127.0.0.1 local1 notice maxconn 204800 # 最大连接数 chroot /usr/local/haproxy # pidfile /usr/local/haproxy/haproxy.pid # 进程文件位置 uid 99 # 运行用户的 UID (对应的用户是 nobody) gid 99 # 运行组的 GID daemon # 后台启动 defaults log global # 引用 global 定义的日志格式 mode http # 代理模式为 HTTP option httplog # 采用 HTTP 日志格式记录日志 option httpclose # 请求完成后主动关闭 HTTP 通道 option dontlognull # 禁止记录空连接日志记录 option forwardfor # 将客户端真实IP发送至后端服务器 retries 3 # 最大失败次数 balance leastconn # 基于最小连接数进行调度 timeout connect 10s timeout client 1m timeout server 1m timeout check 10s listen admin_status bind 0.0.0.0:8001 mode http stats uri /haproxy # Haproxy 监控界面的 URL stats auth admin:123123 stats hide-version # 隐藏 Haproxy 监控界面的版本号 listen nginx_upstream bind 0.0.0.0:8080 mode http server nginx_1 192.168.1.1:80 check inter 10s fall 3 server nginx_2 192.168.1.2:80 check inter 10s fall 3 4.启动 Haproxy 服务

1)启动 Haproxy 服务

[root@Haproxy ~]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg [root@Haproxy ~]# ps aux | grep haproxy

2)修改 Rsyslog 配置文件

Haproxy 在默认情况下并不会记录日志,除了需要在 Haproxy 配置文件内指定日志的输出外,还需要修改系统日志的配置文件。

[root@Haproxy ~]# sed -i 's/ModLoad imudp/^#//' /etc/rsyslog.conf [root@Haproxy ~]# sed -i 's/UDPServerRun 514/^#//' /etc/rsyslog.conf [root@Haproxy ~]# echo "local0.info /usr/local/haproxy/logs/access.log" >> /etc/rsyslog.conf [root@Haproxy ~]# echo "local0.notice /usr/local/haproxy/logs/error.log" >> /etc/rsyslog.conf [root@Haproxy ~]# mkdir /usr/local/haproxy/logs [root@Haproxy ~]# systemctl restart rsyslog 5.验证

1)验证 LB(负载均衡)

[root@Haproxy ~]# for i in $(seq 1 10);do curl 192.168.1.3:8080;done

在这里插入图片描述

2)验证 HA(高可用)

[root@Nginx-1 ~]# /usr/local/nginx/sbin/nginx -s stop [root@Haproxy ~]# for i in $(seq 1 10);do curl 192.168.1.3:8080;done

在这里插入图片描述 3)查看日志

[root@Haproxy ~]# tail /usr/local/haproxy/logs/access.log Jul 27 10:21:24 localhost haproxy[19810]: 192.168.1.1:34478 [27/Jul/2022:10:21:24.095] nginx_upstream nginx_upstream/nginx_2 0/0/0/0/0 200 228 - - ---- 1/1/0/0/0 0/0 "GET / HTTP/1.1" Jul 27 10:21:25 localhost haproxy[19810]: 192.168.1.1:34480 [27/Jul/2022:10:21:25.102] nginx_upstream nginx_upstream/nginx_2 0/0/0/0/0 200 228 - - ---- 1/1/0/0/0 0/0 "GET / HTTP/1.1" Jul 27 10:21:26 localhost haproxy[19810]: 192.168.1.1:34482 [27/Jul/2022:10:21:26.109] nginx_upstream nginx_upstream/nginx_2 0/0/0/0/0 200 228 - - ---- 1/1/0/0/0 0/0 "GET / HTTP/1.1" Jul 27 10:21:27 localhost haproxy[19810]: 192.168.1.1:34484 [27/Jul/2022:10:21:27.117] nginx_upstream nginx_upstream/nginx_2 0/0/0/0/0 200 228 - - ---- 1/1/0/0/0 0/0 "GET / HTTP/1.1" Jul 27 10:21:28 localhost haproxy[19810]: 192.168.1.1:34486 [27/Jul/2022:10:21:28.125] nginx_upstream nginx_upstream/nginx_2 0/0/0/0/0 200 228 - - ---- 1/1/0/0/0 0/0 "GET / HTTP/1.1"

4)查看 Haproxy 监控界面

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3