使用ldirectord实现LVS健康检测

注意:在LVS/DR模式环境下,具体配置见上篇LVS/DR配置

1.1 ldirectord介绍

  • LVS监控: ldirectord 主要设计用于监控Linux虚拟服务器(LVS)架构中的服务器池状态。LVS是一种负载均衡解决方案,用于将网络流量和请求分发到多个服务器上。

  • 运行环境: ldirectord 运行在IPVS节点上,即负载均衡器所在的服务器上。

  • 守护进程: 它作为一个守护进程运行,这意味着它会在后台持续运行,监控服务器池中服务器的状态。

  • 健康检查: ldirectord 通过向服务器池中的每个真实服务器发送请求来执行健康检查。这些请求可以是TCP连接、HTTP请求或其他类型的网络请求,具体取决于配置。

  • 自动管理: 如果某个服务器没有响应 ldirectord 发送的请求,ldirectord 会认为该服务器不可用,并使用 ipvsadm 工具从IPVS表中删除该服务器的条目。ipvsadm 是一个用于管理IP虚拟服务器的命令行工具。

  • 恢复处理: 当不可用的服务器再次变得可用并能够响应健康检查时,ldirectord 同样会使用 ipvsadm 将该服务器重新添加到IPVS表中。

  • 高可用性: 通过自动添加和删除服务器,ldirectord 有助于维护LVS架构的高可用性,确保流量始终被分发到健康的服务器上。

  • 配置灵活: ldirectord 允许管理员自定义健康检查的频率、类型和超时设置,以适应不同的监控需求。

  • 日志和监控: 它可能还提供日志记录功能,帮助系统管理员跟踪服务器状态的变化和 ldirectord 的操作。

  • 开源社区: 作为一个开源工具,ldirectord 可能会有一个活跃的社区,提供支持和分享最佳实践。

1.1.1 模拟一台Nginx宕机

[root@LVS-RS2 ~]# systemctl stop nginx.service 
​
[root@LVS ~]# ipvsadm -Ln   #并没有将RS2删除
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.110.10:80 rr
  -> 192.168.110.32:80            Route   1      0          10        
  -> 192.168.110.33:80            Route   1      5          5       
​
[root@Client ~]# for ((i=1;i<=10;i++)); do curl http://192.168.110.10; done
curl: (7) Failed to connect to 192.168.110.10 port 80: Connection refused
This is LVS test IP=192.168.110.32  Host=LVS-RS1
curl: (7) Failed to connect to 192.168.110.10 port 80: Connection refused
This is LVS test IP=192.168.110.32  Host=LVS-RS1
curl: (7) Failed to connect to 192.168.110.10 port 80: Connection refused
This is LVS test IP=192.168.110.32  Host=LVS-RS1
curl: (7) Failed to connect to 192.168.110.10 port 80: Connection refused
This is LVS test IP=192.168.110.32  Host=LVS-RS1
curl: (7) Failed to connect to 192.168.110.10 port 80: Connection refused
This is LVS test IP=192.168.110.32  Host=LVS-RS1

1.2 使用ldirectord实现LVS/DR的高可用

机器名称IP地址子网掩码说明
LVS192.168.110.41255.255.255.0负载均衡器
RS1192.168.110.32255.255.255.0真实服务器1
RS2192.168.110.33255.255.255.0真实服务器2
Client192.168.110.34255.255.255.0客户端

1.2.1 安装部署

[root@LVS ~]# yum install ldirectord -y    #Rocky 8 仓库没有这个包

1.2.2 配置

[root@LVS ~]# cp /usr/share/doc/ldirectord/ldirectord.cf /etc/ha.d/ldirectord.cf
[root@LVS ~]# vim /etc/ha.d/ldirectord.cf   #修改配置如下
# Global Directives
checktimeout=3
checkinterval=1
#fallback=127.0.0.1:80
#fallback6=[::1]:80
autoreload=yes
#logfile="/var/log/ldirectord.log"
#logfile="local0"
#emailalert="admin@x.y.z"
#emailalertfreq=3600
#emailalertstatus=all
quiescent=no
​
# Sample for an http virtual service
virtual=192.168.110.10:80
        real=192.168.110.32:80 gate
        real=192.168.110.33:80 gate
        fallback=127.0.0.1:80 gate
        service=http
        scheduler=rr
        protocol=tcp
        checktype=negotiate
        checkport=80
        
[root@LVS ~]# systemctl start ldirectord.service

1.2.1 测试

[root@LVS ~]# watch -n 5 ipvsadm -Ln  #可以实时监控
​
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.110.10:80 rr
  -> 192.168.110.32:80            Route   1      0          0         
  -> 192.168.110.33:80            Route   1      0          0   
  
[root@LVS-RS2 ~]# systemctl stop nginx.service  #模拟宕机
​
[root@LVS ~]# ipvsadm -Ln   #自动移除
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.110.10:80 rr
  -> 192.168.110.32:80            Route   1      0          0      
  
[root@Client ~]# for ((i=1;i<=10;i++)); do curl http://192.168.110.10; done  #请求全部转到RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
​
[root@LVS-RS2 ~]# systemctl start nginx.service 
​
[root@LVS ~]# ipvsadm -Ln    #启动后回复
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.110.10:80 rr
  -> 192.168.110.32:80            Route   1      0          10        
  -> 192.168.110.33:80            Route   1      0          0        
  • 23
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ldirectord是一个负载均衡软件,可以用于在多个服务器之间分配流量。要在SUSE 12 sp5上安装ldirectord,请按照以下步骤进行操作: 1. 首先,确保您的系统已连接到Internet,并且已更新到最新的软件包版本。 2. 安装必要的软件包: ```bash sudo zypper install ldirectord ipvsadm ``` 3. 编辑/etc/sysctl.conf文件,并确保以下设置已启用: ```text net.ipv4.ip_forward = 1 net.ipv4.vs.conntrack = 1 ``` 4. 启用IPVS内核模块: ```bash sudo modprobe ip_vs ``` 5. 创建一个ldirectord配置文件。例如,您可以创建一个名为/etc/ha.d/ldirectord.cf的文件,并使用以下示例配置: ```text checktimeout=10 checkinterval=5 autoreload=yes logfile="/var/log/ldirectord.log" quiescent=no virtual=10.0.0.1:80 fallback=127.0.0.1:80 real=192.168.0.2:80 gate real=192.168.0.3:80 gate service=http request="test.html" receive="Test Page" scheduler=wlc persistent=600 protocol=tcp checktype=negotiate ``` 此配置文件将创建一个虚拟IP地址10.0.0.1,并将流量分配给两个实际服务器192.168.0.2和192.168.0.3。它将使用wlc调度程序(加权最小连接),并在600秒内保持持久性。 6. 启动ldirectord服务: ```bash sudo systemctl start ldirectord ``` 7. 检查日志文件/var/log/ldirectord.log以查看是否有任何错误或警告消息。 8. 如果一切正常,请确保ldirectord在系统启动时自动启动: ```bash sudo systemctl enable ldirectord ``` 现在,您已经成功安装和配置了ldirectord,在多个服务器之间进行流量分配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值