当前位置: 首页 > 工具软件 > ldirectord > 使用案例 >

LVS-学习总结(ldirectord)

东郭自强
2023-12-01

官方网站

  • Ldirectord主页面:https://projects.horms.net/projects/ldirectord/
  • Ldirectord下载页面:https://projects.horms.net/projects/ldirectord/download.shtml

ldirectord介绍

  • 我在服务器集群概念总结中提到过,由于负载均衡集群特性,需要布置节点监控系统位于前端负载调度机上,负责监控下面的服务节点。当某个节点出现故障后,节点监控系统会自动将故障节点从集群中剔除;当此节点恢复正常后,节点监控系统又会自动将其加入集群中
  • ldirectord:是一个守护进程,用来在LVS集群中用于监视和管理集群节点的健康;这个守护进程会在启动时自动建立IPVS表,然后监视集群节点的健康情况,在发现失效节点时将其自动从IPVS表中移除

ldirectord运行方式

  • ldirectord有一个配置文件,用于指定虚拟服务及其关联的真实服务器。
  • 初始化ldirectord时,它将为集群创建虚拟服务。
  • ldirectord通过定期请求已知URL并检查响应是否包含预期的响应来监视实际服务器的运行状况。
  • 如果真实服务器发生故障,则该服务器将被删除,并且一旦恢复联机将被重新激活。
  • 如果所有真实服务器都发生故障关闭,则将备用服务器加入集群池中,作为零时服务器进行服务提供,等待真实服务器修复上线。通常情况,后备服务器是本地主机。如果集群是提供HTTP服务的,则运行Apache HTTP服务器返回一个页面,该页面提示服务暂时不可访问。

ldirectord使用练习

测试环境

ldirectord监控对所有类型的LVS集群都是成立的:VS/DR,VS/NAT和VS/TUN
(由于之前学习LVS,机器中剩余的LVS集群是VS/TUN,就用直接使用VS/TUN)

主机名系统IP地址作用
vmhostrhel7.5192.168.12.7/24真机,提供虚拟机node1-3进行实践练习环境,同时进行测试
添加192.168.12.1(临时地址,作为通信网关使用)
node1rhel7.5192.168.12.11/24
192.168.27.11/24
虚拟机node1,安装ipvadm软件,模拟LVS调度服务器
同时node1是双网卡:一个IP地址(外网地址)用来模拟VIP与真机在同一网段,方便测试;一个IP地址(内网地址)是与后端服务器在同一网段进行通信的
node2rhel7.5192.168.27.12/24虚拟机node2,安装httpd服务,模拟后端服务器
node3rhel7.5192.168.27.13/24虚拟机ndoe3,安装httpd服务,模拟后端服务器

软件

  • ldirectord-3.9.5-3.1.x86_64.rpm
  • 高可用yum源

ldirectord安装使用

  1. 将ldirectord安装在node1节点上,由于ldirectord安装需要使用高可用yum源,所以需要配置yum配置文件、
[root@node1 ~]# vim /etc/yum.repos.d/rhel.repo 
[rhel7.5]
name=rhel7.5
baseurl=http://192.168.27.7/rhel7.5
gpgcheck=0

#高可用yum源
[HighAvailability]
name=HighAvailability
baseurl=http://192.168.27.7/rhel7.5/addons/HighAvailability
gpgcheck=0


[root@node1 opt]# ls
ldirectord-3.9.5-3.1.x86_64.rpm
[root@node1 opt]# yum install -y ldirectord-3.9.5-3.1.x86_64.rpm

  1. 查看ldirectord安装文件
[root@node1 opt]# rpm -ql ldirectord 
/etc/ha.d
/etc/ha.d/resource.d
/etc/ha.d/resource.d/ldirectord
/etc/init.d/ldirectord
#ldirectird 进程
/etc/logrotate.d/ldirectord
/usr/lib/ocf/resource.d/heartbeat/ldirectord
/usr/sbin/ldirectord
/usr/share/doc/ldirectord-3.9.5
/usr/share/doc/ldirectord-3.9.5/COPYING
/usr/share/doc/ldirectord-3.9.5/ldirectord.cf
#配置文件博模板,拷贝一份到/etc/ha.d/下
/usr/share/man/man8/ldirectord.8.gz

  1. 配置ldirectord配置文件
[root@node1 opt]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/ldirectord.cf
#拷贝配置文件
[root@node1 opt]# vim /etc/ha.d/ldirectord.cf 
......
# Global Directives
checktimeout=3								#检测真实服务器出错的时间间隔
checkinterval=1								#指定ldirectord在两次检查之间的间隔时间
#fallback=127.0.0.1:80
#fallback6=[::1]:80
autoreload=yes								#是否自动重载配置文件,选yes时,配置文件发生变化,自动载入配置信息
#logfile="/var/log/ldirectord.log"
#logfile="local0"
#emailalert="admin@x.y.z"
#emailalertfreq=3600
#emailalertstatus=all
quiescent=no								#当选择no时,如果一个节点在checktimeout设置的时间周期内没有响应,ldirectord将会从IPVS表中直接移除real server,此时,将中断现有的客户端连接,并使IPVS丢掉所有的连接跟踪记录和持续连接模板,如果选择为yes,当某个real server失效时,ldirectord将失效节点的权值设置为0,新的连接将不能到达,但是并不从IPVS表中清除此节点,同时,连接跟踪记录和程序连接模板仍然保留在Director上。

# Sample for an http virtual service
virtual=192.168.12.11:80					#vip地址
        real=192.168.27.12:80 ipip 2		#真实主机地址,ipip是TUN模式,gate是DR模式,masq是NAT模式,后接数字为权重
        real=192.168.27.13:80 ipip 1
        fallback=127.0.0.1:80				#备用地址,这里为本机
        service=http						#检测的服务类型
        scheduler=wrr						#调度模式
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp						#检测服务使用的协议
        checktype=negotiate					#检测类型,默认为negotiate
        checkport=80						#检测端口
        request="index.html"				#检测对应服务下需要反馈的内容
#       receive="Test Page"					##指定请求和应答字串;本次练习注释掉
#       virtualhost=www.x.y.z				#虚拟服务器的名称,随便指定;本次练习注释掉
......
#修改配置文件内容
  1. 清除ipvsadm记录,开启ldirectord服务,开启服务后自动添加IPVS规则
    注意一定要做ipvsadm -C
[root@node1 opt]# ipvsadm -C
[root@node1 opt]# systemctl start ldirectord
[root@node1 opt]# 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.12.11:80 wrr
  -> 192.168.27.12:80             Tunnel  2      0          6         
  -> 192.168.27.13:80             Tunnel  1      0          2  
  1. node1服务器上安装httpd服务,作为备份服务器
[root@node1 opt]# yum install -y httpd
[root@node1 opt]# echo backup_node1 > /var/www/html/index.html
[root@node1 opt]# systemctl start httpd
[root@node1 opt]# curl node1
backup_node1

测试效果

  1. 正常没有开启ldirectord服务,使用ipvsadm配置规则时,如果node3服务器httpd服务停止,一旦访问到node3节点,显示报错无法连接
[root@vmhost images]# curl 192.168.12.11
curl: (7) Failed connect to 192.168.12.11:80; Connection refused
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11
curl: (7) Failed connect to 192.168.12.11:80; Connection refused
[root@vmhost images]# curl 192.168.12.11
node2
  1. 开启ldirectord服务后,停止node3服务器httpd服务,node3节点被踢出集群,无法访问到
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11

  1. node3服务器httpd服务恢复后,node3节点上线
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11
node3
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11
node3
[root@vmhost images]# curl 192.168.12.11
node2
[root@vmhost images]# curl 192.168.12.11
node2
  1. node2与node3服务器httpd服务均停止,显示备份服务器node1的httpd服务
[root@vmhost images]# curl 192.168.12.11
backup_node1
[root@vmhost images]# curl 192.168.12.11
backup_node1
[root@vmhost images]# curl 192.168.12.11
backup_node1
 类似资料: