简介
使用haproxy制作负载均衡集群,keepalived通过状态检测脚本检测本机haproxy状态,若为离线状态,则会降低该节点的优先级。
实验准备
四台虚拟机:KA1、KA2为keepalived+haproxy,web1、web2为后端服务器,均关闭防火墙以及SELinux,VMware关闭DHCP
Virtual IP | 192.168.0.100 |
KA1 | 192.168.0.10/24 |
KA2 | 192.168.0.20/24 |
web1 | 192.168.0.110/24 |
web2 | 192.168.0.120/24 |
实验步骤
KA1、KA2添加内核参数:net.ipv4.ip_nonlocal_bind = 1
该参数允许非本地IP地址绑定到socket上。这个功能通常在主机作为网关、反向代理或负载均衡器时使用,尤其是在实现双机热备高可用性时,需要绑定监听虚拟VIP地址,但该VIP地址并不一定在本机上实际配置。通过设置这个参数,可以使得即使VIP地址不在本机的网络接口上,相关服务(如HAProxy或Nginx)也能够监听该地址。
KA1
vim /etc/sysctl.conf
sysctl --system
编写状态检测脚本
vim /etc/keepalived/check.sh
chmod +x /etc/keepalived/check.sh
配置keepalived
修改完成后,重启服务
haproxy配置
配置完成,重启服务
KA2
vim /etc/sysctl.conf
sysctl --system
编写状态检测脚本
vim /etc/keepalived/check.sh
chmod +x /etc/keepalived/check.sh
配置keepalived
配置完成,重启服务
配置haproxy
配置完成,重启服务
web1
echo 192.168.0.110 web1 > /var/www/html/index.html
systemctl start httpd
web2
echo 192.168.0.120 web2 > /var/www/html/index.html
systemctl start httpd
测试
while true;do curl 192.168.0.100;sleep 1;done
在客户端使用以上命令查看
在KA1、KA2中开启、停止haproxy服务,观察客户端状态