介绍
haproxy是一种开源的TCP和HTTP负载均衡代理服务器软件。客户端通过Haproxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器
下载Haproxy

开启服务
配置文件

global:全局配置

proxies:代理配置

Haproxy的8种负载均衡
1. 轮询 (Round Robin): 请求依次分发到每个后端服务器,按顺序进行负载均衡。
2. 加权轮询 (Weighted Round Robin): 可以为每个后端服务器设置权重,根据权重分配请求,以实现不同性能的服务器在负载均衡中发挥不同作用。
3. 最少连接 (Least Connection): 请求分发到当前连接数最少的后端服务器,以实现负载均衡。
4. 加权最少连接 (Weighted Least Connection): 与加权轮询类似,可以为每个后端服务器设置权重,但该模式根据连接数来决定负载均衡。
5. URI哈希 (URI Hash): 将请求的URI进行哈希,然后根据哈希值将请求分发到对应的后端服务器,确保相同URI的请求经常落在同一后端服务器上。
6. IP哈希 (IP Hash): 将请求的源IP进行哈希,然后根据哈希值将请求分发到对应的后端服务器,确保同一IP的请求经常落在同一后端服务器上。
7. URL参数哈希 (URL Parameter Hash): 与URI哈希类似,不过该模式是根据请求的URL参数进行哈希来实现负载均衡。
8. 复制(Backup): 当主要的服务器不可用时,请求会被转发到指定的备用服务器,用于故障转移和故障恢复。
Haproxy负载均衡实例(一)
修改主配置文件

修改rsyslog配置


开启远程日志

重启服务

测试



问题解决



使用Keepalived实现HAProxy高可用
主机192.168.199.149 虚拟IP192.168.199.148
备机192.168.199.151
后端真实服务器192.168.199.150,192.168.199.155
主机+备机 keepalived,haproxy
真实服务器 nginx
关闭firewalld和selinux
主机配置
yum install keepalived
yum install hapoxyd
keepalived配置
vim /etc/keepalived/keepalived.cfg
haproxy配置
vim /etc/haproxy/haproxy.cfg
备机配置
直接把主机的配置传到备机上
在主机上执行
scp /etc/keepalived/keepalived.cfg 192.168.199.151:/etc/keepalived/keepalived.cfg
scp /etc/haproxy/haproxy.conf 192.168.199.151:/etc/haproxy/haproxy.conf
在备机的/etc/keepalivedkeepalived.cfg中把state 后面修改为BACKUP
priority修改为小于100(一般为90)
真实服务器配置
配置好nginx,开启服务并能curl自己显示界面
开启nginx服务
测试
在主机和备机分别开启服务
systemctl start keepalived
systemctl start haproxy
只有当system status 服务 显示成功启动成功才行(显示绿色running)
测试负载均衡
测试高可用
添加虚拟IP
ip addr add 192.168.199.148/32 dev ens33
主节点IP
备机IP
停掉主机的keepalived服务,查看ip是否漂移
发现没有漂移,访问192.168.199.148出现问题
检查后发现keepalived配置文件缺少检查配置,修改后如下
添加一个vrrp_script
在 Keepalived 中,vrrp_script 是用于定义状态检测脚本的配置项。通过 vrrp_script 配置,Keepalived 可以定期执行指定的状态检测脚本,用于检测特定服务或资源的可用性,从而决定节点的状态切换
再次测试
重启服务,再次测试,停止主机的haproxy服务
查看主机ip,实现漂移
备机IP
测试页面,成功
重新启动主机的haproxy服务,查看主机ip
148虚拟IP漂移回来(大概过几秒钟)