HAProxy的优化及HAProxy与nginx高可用的实现

目录

一、haproxy调优

1、进程

2、cpu亲缘性

3、状态页

二、实验:部署HAProxy集群 

1、 部署Nginx 服务器:192.168.80.111和192.168.80.112

 nginx2服务器设置同上,只是在设置站点目录的时候不一样 

 2、修改haproxy配置文件

3、验证 

三、 实验:重新定义HAProxy集群的日志


一、haproxy调优

1、进程

服务启动以后,可以看到默认开启一个主进程,带一个工作进程以及三个线程

可以根据cpu个数来决定开机时启动的work进程数量:在全局配置中添加nbproc参数

nbproc   n     #开启的haproxy work 进程数,默认进程数是一个

 重启之后打开的工作进程就是设置的数量

2、cpu亲缘性

CPU亲缘性(CPU Affinity)是指将进程或线程绑定到特定的CPU核心上运行的技术。通过设置CPU亲缘性,可以避免进程在不同核心之间频繁迁移,从而减少缓存失效、上下文切换等开销,提高系统的整体性能和效率

 通过添加cpu-map参数将工作进程与cpu绑定:cpu-map n(work)  n(cpu)

重启服务后可以看到工作进程与CPU进行了绑定

这样设置后,haproxy的工作进程将会在指定的核心上运行,有利于优化并行处理能力和减少资源竞争。使得每个进程都在固定的核心上执行,有助于提升数据包处理的稳定性和一致性,尤其在多核处理器环境中更为重要。当然,实际应用时需要根据具体的硬件环境和负载情况合理配置CPU亲缘性。 

3、状态页

可以通过http服务来查看状态页,在写配置文件时就已经添加好了

使用浏览器进行访问

可以看到服务的一些状态信息,所以需要妥善保管密码 

二、实验:部署HAProxy集群 

实验环境:
Haproxy服务器:192.168.80.114
Nginx 服务器1:192.168.80.112
Nginx 服务器2:192.168.80.113
客户端:192.168.80.111

1、 部署Nginx 服务器:192.168.80.111和192.168.80.112

1. #关闭防火墙
systemctl stop firewalld
setenforce 0
 
2. #安装依赖关系包
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
 
3. #新建用户和组便于管理
useradd -M -s /sbin/nologin nginx
 
4. #切换至opt目录,将下载好的压缩包传进来解压
cd /opt
rz -E
tar -zxf nginx-1.12.0.tar.gz 
 
5. #切换至解压后的目录下编译
cd nginx-1.12.0
 
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
 
6. #安装
make -j4 && make install
 
7. #做软连接,让系统识别nginx的操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
 
8. #将nginx命令加入服务
cd /lib/systemd/system
vim nginx.service
#!/bin.bash
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
 
9. #创建站点目录
echo "this is 220nginx1 web" > /usr/local/nginx/html/index.html 
cat /usr/local/nginx/html/index.html
 
10. #重新加载单元.启动服务
systemctl daemon-reload 
systemctl start nginx
 
11. #查看是否能成功启动
ss -ntap|grep nginx
curl 192.168.80.111
或者浏览器访问
192.168.80.111

 

 

 nginx2服务器设置同上,只是在设置站点目录的时候不一样 

 2、修改haproxy配置文件


listen  webcluster 0.0.0.0:80			#定义一个名为webcluster的应用
        option httpchk GET /index.html	#检查服务器的index.html文件
        balance roundrobin				#负载均衡调度算法使用轮询算法roundrobin
        server inst1 192.168.80.112:80 check inter 2000 fall 3		#定义在线节点
        server inst2 192.168.80.113:80 check inter 2000 fall 3

3、验证 

三、 实验:重新定义HAProxy集群的日志

  • HAproxy本身不记录客户端的访问日志,以减少服务器负载,一般生产中HAProxy不记录日志,也可以配置HAProxy利用rsyslog服务记录日志到指定日志文件中。
#在global配置项定义:
log 127.0.0.1 local{1-7} info #基于syslog记录日志到指定设备,级别有(err、warning、info、debug)
listen web_port
 bind 127.0.0.1:80
 mode http
 log global #开启当前web_port的日志功能,默认不记录日志
 server web1  127.0.0.1:8080 check inter 3000 fall 2 rise 5

将日志记录到指定的文件中(本地日志):

#修改配置文件
vim /etc/haproxy/haproxy.cfg
log 127.0.0.1 local3 info
#记录日志到local3 info

#修改配置文件
vim /etc/rsyslog.conf
 14 # Provides UDP syslog reception
 15 $ModLoad imudp
 16 $UDPServerRun 514
 74 local3.*                                                /var/log/haproxy.log

systemctl restart haproxy.service 
systemctl restart rsyslog.service 
#重启服务

ls /var/log/haproxy.log
#访问haproxy状态页,生成日志文件

192.168.80.114:9999/haproxy-status
#验证访问

tail -f /var/log/haproxy.log
#实时查看

将日志传给远端服务器(远程日志):

#修改配置文件
vim /etc/haproxy/haproxy.cfg
log 127.0.0.1 local3 info
log 192.168.10.11  local6 info
#指定远端服务器记录日志到local6 info
 
systemctl restart haproxy.service 
#重启服务
 
#修改远端服务器配置文件
vim /etc/rsyslog.conf
14 # Provides UDP syslog reception
15 $ModLoad imudp
16 $UDPServerRun 514
#服务器要开启udp端口
72 # Save boot messages also to boot.log
73 local7.*                                                /var/log/boot.log
74 local6.*                                                /var/log/haproxy.log
#指定日志存放位置
 
systemctl restart rsyslog.service 
#重启服务

192.168.10.12:9999/haproxy-status
#验证访问

tail -f /var/log/haproxy.log
#实时查看

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值