ldirectord监控对所有类型的LVS集群都是成立的:VS/DR,VS/NAT和VS/TUN
(由于之前学习LVS,机器中剩余的LVS集群是VS/TUN,就用直接使用VS/TUN)
主机名 | 系统 | IP地址 | 作用 |
---|---|---|---|
vmhost | rhel7.5 | 192.168.12.7/24 | 真机,提供虚拟机node1-3进行实践练习环境,同时进行测试 添加192.168.12.1(临时地址,作为通信网关使用) |
node1 | rhel7.5 | 192.168.12.11/24 192.168.27.11/24 | 虚拟机node1,安装ipvadm软件,模拟LVS调度服务器 同时node1是双网卡:一个IP地址(外网地址)用来模拟VIP与真机在同一网段,方便测试;一个IP地址(内网地址)是与后端服务器在同一网段进行通信的 |
node2 | rhel7.5 | 192.168.27.12/24 | 虚拟机node2,安装httpd服务,模拟后端服务器 |
node3 | rhel7.5 | 192.168.27.13/24 | 虚拟机ndoe3,安装httpd服务,模拟后端服务器 |
[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
[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
[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 #虚拟服务器的名称,随便指定;本次练习注释掉
......
#修改配置文件内容
[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
[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
[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
[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
[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
[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