首页 > 代码库 > lvs-heartbeat
lvs-heartbeat
lvs的DR方式
次实验的前提是前面的heartbeat-HA已经做好,在HA主机上,先停掉heartbeat服务
/etc/init.d/heartbeat stop
/etc/init.d/ipvsadm stop
/etc/init.d/heartbeat stop
/etc/init.d/ipvsadm stop
在RS主机上
arptables -L 查看arptables的设置
server17上 ifconfig eth0:0 192.168.0.92 netmask 255.255.255.255up
/etc/init.d/arptables_jf start
arptables -L
/etc/init.d/arptables_jf stop
vi /etc/sysconfig/arptables
前面做heartbeat是设置拉arptables规则,现在是non-arp这是DR的要求
arptables -A IN -d 192.168.0.92 -j DROP
arptables -A OUT -s 192.168.0.92 -j mangle--mangle-ip-s 192.168.0.117
/etc/init.d/arptables_jf save
/etc/init.d/arptables_jf start
/etc/init.d/httpd start 启动web服务,lvs不能自动启动RS上的服务
server41上 ifconfig eth0:0 192.168.0.92 netmask 255.255.255.255up 设置RS主机的vip
arptables -A IN -d 192.168.0.92 -j DROP
arptables -A OUT -s 192.168.0.92 -j mangle--mangle-ip-s 192.168.0.141
/etc/init.d/arptables_jf save
/etc/init.d/arptables_jf start
/etc/init.d/httpd start
在HA主机上
server51上
ipvsadm -L查看
ipvsadm -A -t 192.168.0.92:80 -s rr
ipvsadm -a -t 192.168.0.92:80 -r 192.168.0.117:80 -g
ipvsadm -a -t 192.168.0.92:80 -r 192.168.0.141:80 -g
/etc/init.d/ipvsadm save
ipvsadm -C 清除调度链表
ipvsadm -l 查看调度列表
cat /etc/sysconfig/ipvsadm
scp /etc/sysconfig/ipvsadm 192.168.0.194:/etc/sysconfig/
在server94上
cat /etc/sysconfig/ipvsadm
ipvsadm -l 查看调度列表
chkconfig ipvsadm --list
chkconfig ipvsadm off
server51上
vi haresources
server51.example.comIPaddr::192.168.0.92/24/eth0 ipvsadm (着后面加启动脚本)
scp /etc/ha.d/haresources 192.68.0.194:/etc/ha.d/
/etc/init.d/heartbeat start
tail -f /var/log/ha-log
server94上
/etc/init.d/heartbeat start
server51上 ipvsadm -l 此时它已经自动得到调度列表了
当server51挂掉了以后,服务自动跳到server94上,server94自动得到调度列表
当server51活过来以后,服务再次跳回来。
这样不要向上次实验那样,设置ipvsad的调度列表拉,自动启动调度列表。用/etc/init.d/ipvsadm脚本调度
2 DR 方式无法检测后台RS的健康状况,利用小插件ldirectord可以实现这个功能。
在安装heartbeat的时候已经安装了ldirectord
rpm -ql ldirectord 查看ldirectord的详细信息和安装文件的信息
cp /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/
/etc/init.d/ldirectord start 启动的时候提示错误Starting ldirectord ...Can‘t locate IO/Socket?INET6.pm 着是缺少perl的模块
yum install -y perl-IO-Socket-INET6(server51)
yum install -y perl-IO-Socket-INET6(server94)俩太HA主机都要安装
server51上
cd /etc/ha.d/
vi ldirectord.cf
virtual=192.168.0.92:80
real=192.168.0.117:80 gate
real=192.168.0.141:80 gate
fallback=127.0.0.1:80 gate(当所有RS主机挂掉后,服务跑到HA当前使用的主机上)
service=http
scheduler=rr(调度算法)
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checkport=80
request="index.html"
#receive="testpage"
#virtualhost=www.x.y.z
scp ldirectord.cf 192.168.0.194:/etc/ha.d/
vi haresources
server51.example.com IPaddr::192.168.0.92/24/eth0 ldirectord httpd(自动打开httpd,apache服务,当所有RS主机挂掉以后,HA服务主机的web服务器打开),着后面更启动脚本,又HA主机自动打开,不许要手动开启
scp haresources 192.168.0.194:/etc/ha.d/
/etc/init.d/ldirectord start(server51)
/etc/init.d/ldirectord start(server94)
/etc/init.d/heartbeat start(server51)
tail -f /var/log/ha-log 如果没有错误,在启动另外一台HA主机的心跳
/etc/init.d/heartbeat start
ipvsadm -l (server51)查看调度列表
当后台服务挂掉以后,ldorectord 自动吧挂掉的主机从调度列表中删除,ldorectord还调度ipvsadm,不许要手动启动ipvsadm了
当所有RS主机挂掉以后,服务到达跑服务的HA主机上,当在haresources 中最后一行的配置中要加上启动的脚本,要不无法自动启动(server51.example.com IPaddr::192.168.0.92/24/eth0 ldirectord httpd)
3 给lvs上增添服务
在RS上安装fpt服务
server41上
yum install -y vsftpd
/etc/init.d/vsftpd start
cd /var/ftp/
touch server41
touch welcome.msg
echo test > welcome.msg
server17上
yum install -y vsftpd(RS主机)
/etc/init.d/vsftpd start
cd /var/ftp/
touch server17
touch welcome.msg
echo test > welcome.msg
server94上touch welcome.msg
echo test > welcome.msg
yum install -y vsftpd
/etc/init.d/vsftpd start
cd /var/ftp/
touch server94
touch welcome.msg
echo test > welcome.msg
server51上
yum install -y vsftpd (HA主机)
/etc/init.d/vsftpd start
cd /var/ftp/
touch server51
touch welcome.msg
echo test > welcome.msg
在server51上HA的master主机上
vi ldirectord.cf 查找关于ftp的设置更改如下:
virtual=192.168.0.92:21
real=192.168.0.117:21 gate
real=192.168.0.141:21 gate
fallback=127.0.0.1:21
service=ftp
checkport=21
# scheduler=wlc
scheduler=rr
persistent=300(300秒内访问的是同一台RS)持续链接时间
netmask=255.255.255.255
protocl=tcp
checktype=negotiate
login="ftp"
passwd="ftp"
request="welcome.msg"验证信息要在ftp的默认发布目录中有文件welcome.msg,这个文件包含test内容
receive="test"
ipvsadm -l 查看是否有调度列表
在测试机上lftp192.168.0.92 ls 查看连接到那台主机上了
在HA master主机上ipvsadm -l 查看调度列表的信息
用俩个VIP支持俩个服务VIP 92支持的服务为web,VIP 71 支持的服务为 ftp
在HA master主机上
server51上
ifconfig eth0:1 192.168.0.71 netmask255.255.255.0 up
ifconfig
RS主机上
server17
ifconfig eth0:1 192.168.0.71 netmask255.255.255.255 up
ifconfig
/etc/init.d/arptables_jf start
arptables -A IN -d 192.168.0.71 -j DROP
arptables -A OUT -s 192.168.0.71 -j mangle--mangle-ip-s 192.168.0.117
/etc/init.d/arptables_jf save
/etc/init.d/arptables_jf restart
server41
ifconfig eth0:1 192.168.0.71 netmask255.255.255.255 up
ifconfig
/etc/init.d/arptables_jf start
arptables -A IN -d 192.168.0.71 -j DROP
arptables -A OUT -s 192.168.0.71 -j mangle--mangle-ip-s 192.168.0.141
/etc/init.d/arptables_jf save
/etc/init.d/arptables_jf restart
还可以更改arp的文件
server17
vi /etc/sysconfig/arptables
[0:0] -A IN -d 192.168.0.92 -j DROP
[0:0] -A IN -d 192.168.0.71 -j DROP
[0:0] -A OUT -s 192.168.0.92 -j mangle--mangle-ip-s 192.168.0.117
[0:0] -A OUT -s 192.168.0.71 -j mangle--mangle-ip-s 192.168.0.117
/etc/init.d/arptables_jf restart
server41
vi /etc/sysconfig/arptables
[0:0] -A IN -d 192.168.0.92 -j DROP
[0:0] -A IN -d 192.168.0.71 -j DROP
[0:0] -A OUT -s 192.168.0.92 -j mangle--mangle-ip-s 192.168.0.141
[0:0] -A OUT -s 192.168.0.71 -j mangle--mangle-ip-s 192.168.0.141
/etc/init.d/arptables_jf restart
在HA master主机上
vi ldirectord.cf 吧ftp服务的Virtual=192.168.0.71:21 改成
Virtual=192.168.0.71:21
vi haresources
server51.example.com 192.168.0.92192.168.0.71 ldirectord httpd vsftpd
/etc/init.d/heartbeat stop(server51)
/etc/init.d/heartbeat stop(server94)
scp haresources ldirectord.cf192.168.0.194:/etc/ha.d/
/etc/init.d/heartbeat start(HA master server51)
tail -f /var/log/ha-log 没有错误的话启动backup的heartbeat
/etc/init.d/heartbeat start(HA backup server94)