作者:少少_LV | 来源:互联网 | 2024-12-17 17:30
本文介绍了如何通过LVS(LinuxVirtualServer)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。
为了提高Web服务的可用性和性能,本文将指导您如何使用LVS(Linux Virtual Server)和ldirectord来构建一个高可用性的负载均衡系统。以下是详细的步骤和配置说明:
1. 环境规划:
主机名 |
IP地址 |
角色 |
LVS节点 |
192.168.188.11 (公网), 192.168.255.137 (私网) |
负载均衡器 |
RS1 |
192.168.255.12 (私网) |
真实服务器1 |
RS2 |
192.168.255.13 (私网) |
真实服务器2 |
测试机 |
192.168.188.14 |
用于测试负载均衡效果 |
LVS的初始配置请参考前文关于LVS-NAT模式的介绍。
2. 安装ldirectord:
[root@LVS ~]# yum localinstall ldirectord-4.1.1-3.40.el7.noarch.rpm -y
3. 查看安装后的文件结构:
[root@LVS ~]# rpm -ql ldirectord
/etc/ha.d # 主配置文件目录
/etc/ha.d/conf
/etc/ha.d/resource.d
/etc/ha.d/resource.d/ldirectord
/etc/logrotate.d/ldirectord
/etc/rc.d/init.d/ldirectord
/run/ldirectord
/usr/lib/systemd/system/ldirectord.service # 服务文件
/usr/lib/tmpfiles.d/ldirectord.conf # 配置模板
/usr/sbin/ldirectord # 主程序,由Perl编写
/usr/share/doc/ldirectord-4.1.1
/usr/share/doc/ldirectord-4.1.1/ldirectord.cf # 主配置文件模板
/usr/share/man/man8/ldirectord.8.gz
4. 编辑ldirectord的主要配置文件:
[root@LVS ~]# vim /etc/ha.d/ldirectord.cf
checktimeout=3
checkinterval=1
autoreload=yes
quiescent=no
logfile="/var/log/ldirectord.log"
virtual=192.168.188.11:80 ## 虚拟IP地址
real=192.168.255.12:80 masq 2 ## 真实服务器1,权重2
real=192.168.255.13:80 masq 1 ## 真实服务器2,权重1
fallback=127.0.0.1:80 ## 当所有真实服务器均失效时,访问此地址
service=http
scheduler=wrr ## 负载均衡算法
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80
5. 配置Web页面以测试负载均衡效果:
[root@LVS ~]# echo "服务器正在维护..." > /var/www/html/index.html
[root@RS1 ~]# echo "$(hostname -I)" > /var/www/html/index.html
[root@RS2 ~]# echo "$(hostname -I)" > /var/www/html/index.html
6. 启动ldirectord服务:
[root@LVS ~]# systemctl start ldirectord.service
7. 监控ipvsadm的状态变化:
[root@LVS ~]# watch ipvsadm -ln
8. 在测试机上验证负载均衡效果:
[root@test ~]# for ((i=1;i<=10;i++)); do curl 192.168.188.11; done
192.168.255.12
192.168.255.12
192.168.255.13
192.168.255.12
192.168.255.12
192.168.255.13
192.168.255.12
192.168.255.12
192.168.255.13
192.168.255.12
9. 测试健康检查功能:
首先,停止RS1上的HTTP服务,观察ldirectord的行为:
[root@RS1 ~]# systemctl stop httpd.service
此时,您应该能够看到RS1从负载均衡池中被移除。
接着,停止RS2上的HTTP服务:
[root@RS2 ~]# systemctl stop httpd.service
当所有后端服务器都出现故障时,ldirectord会自动切换到预设的备用地址127.0.0.1,显示“服务器正在维护...”的信息。
最后,再次测试访问情况:
[root@test ~]# for ((i=1;i<=10;i++)); do curl 192.168.188.11; done
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...