lvs1
[root@LVS1 ~]# yum -y install keepalived ipvsadm
[root@LVS1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
shoujian@163.com
}
notification_email_from fasong@163.com
smtp_server smtp.163.com
smtp_connect_timeout 30
router_id LVS_MASTER
}
vrrp_instance VI_1 {
state MASTER
interface ens32
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.254
}
}
virtual_server 192.168.200.254 80{
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.200.114 80 {
weight 1
TCP_CHECK {
connect_timeout 10
#nb_get_retry 3
delay_bedore_retry 3
connect_port 80
}
}
real_server 192.168.200.115 80 {
weight 1
TCP_CHECK {
connect_timeout 10
#nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
[root@LVS1 ~]# systemctl start keepalived
LVS2:
[root@LVS2 ~]# yum -y install keepalived ipvsadm
[root@LVS2 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
shoujian@163.com
}
notification_email_from fasong@163.com
smtp_server smtp.163.com
smtp_connect_timeout 30
router_id LVS_BACKUP
}
vrrp_instance VI_1 {
state BACKUP
interface ens32
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.254
}
}
virtual_server 192.168.200.254 80{
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.200.114 80 {
weight 1
TCP_CHECK {
connect_timeout 10
#nb_get_retry 3
delay_bedore_retry 3
connect_port 80
}
}
real_server 192.168.200.115 80 {
weight 1
TCP_CHECK {
connect_timeout 10
#nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
[root@LVS2 ~]# systemctl start keepalived
二,开启两台web服务器并编写web测试页
Web1:
[root@web1 ~]# rpm -q httpd
httpd-2.4.6-93.el7.centos.x86_64
[root@web1 ~]# systemctl start httpd
[root@web1 ~]# echo "RealServer1" > /var/www/html/index.html
Web2:
[root@Web2 ~]# rpm -q httpd
httpd-2.4.6-93.el7.centos.x86_64
[root@Web2 ~]# systemctl start httpd
[root@Web2 ~]# echo "RealServer2" > /var/www/html/index.html
- 配置RealServer并执行
Web1:
[root@web1 ~]# vim real.sh
#!/bin/bash
SNS_VIP=192.168.200.254
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
[root@web1 ~]# scp real.sh 192.168.200.115:/root
[root@web1 ~]# sh real.sh start
RealServer Start OK
Web2:
[root@web2 ~]# sh real.sh start
RealServer Start OK
用浏览器访问192.168.200.254
当主服务器故障时,从服务器会代替主服务器(从BACKUP->MASTER)
[root@LVS1 ~]# systemctl stop NetworkManager
[root@LVS1 ~]# systemctl stop keepalived
[root@LVS2 ~]# tail -f /var/log/messages
Jul 7 17:31:38 localhost Keepalived_vrrp[71401]: VRRP_Instance(VI_1) Entering BACKUP STATE
===========================================================
Jul 7 17:33:53 localhost Keepalived_vrrp[71401]: VRRP_Instance(VI_1) Transition to MASTER STATE
当主服务器恢复时,LVS2从服务器就又会变为BACKUP
[root@LVS1 ~]# systemctl start keepalived
[root@LVS2 ~]# tail -f /var/log/messages
………………………………………………………………………………………………
Jul 7 17:36:35 localhost Keepalived_vrrp[71401]: VRRP_Instance(VI_1) Entering BACKUP STATE
- 模拟WEB页面出现错误
当WEB1页面出错时,主服务器上只能看见WEB2的LVS
[root@web1 ~]# systemctl stop httpd
[root@LVS1 ~]# 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.200.254:80 rr
-> 192.168.200.115:80 Route 1 1 3
当WEB1修复时,主服务器上又会出现WEB1的LVS
[root@web1 ~]# systemctl start httpd
[root@LVS1 ~]# 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.200.254:80 rr
-> 192.168.200.114:80 Route 1 1 3
-> 192.168.200.115:80 Route 1 1 3