2、 部署master-lvs服務器
修改內核參數 vi /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
安裝ipvsadm軟件
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
ln -s /usr/src/kernels/2.6.18-128.el5-PAE-i686 /usr/src/linux
make
make install
安裝Keepalived包
ln -s /usr/src/kernels/2.6.18-128.el5-PAE-i686 /usr/src/linux
wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
tar -xvzf keepalived-1.1.17.tar.gz
cd keepalived-1.1.17
./configure --sysconfdir=/etc/ --sbindir=/usr/sbin/
make&make install
修改keepalived.conf
!Configuration File for keepalived
global_defs {
notification_email {
lvze@163.com
}
notification_email_from lzspf@163.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL_1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.0.50
}
}
virtual_server 192.168.0.50 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.0.15 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
real_server 192.168.0.20 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
3、 部署Backup-lvs服務器
安裝ipvsadm以及keepalived的包
內核參數須要修改以下值:
net.ipv4.conf.lo.arp_ignore = 1
將master-lvs上的配置文件拷貝到Backup-lvs服務器上
在master-lvs上運行以下命令拷貝到backup-lvs上面前提是ipvsadm和keepalived已經安裝。
Scp /etc/keepalived/keepalived.conf 192.168.0.10:/etc/keepalived/
Scp /sbin/lvsdr.sh 192.168.0.10:/sbin
可能須要輸入密碼進行文件的傳輸
主要修改keepalived的配置文件,標紅的位置是須要修改的。
!Configuration File for keepalived
global_defs {
notification_email {
lvze@163.com
}
notification_email_from lzspf@163.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL_2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.0.50
}
}
virtual_server 192.168.0.50 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.0.15 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
real_server 192.168.0.20 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
分別在master和backup運行keepalived服務
/etc/init.d/keepalived start
4、 配置後端WEB服務器
在192.168.0.15和192.168.0.20上分別創建以下腳本。
vi /sbin/realdr.sh
#!/bin/bash
VIP=172.16.83.126
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
echo "1">/proc/sys/net/ipv4/conf/default/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/default/arp_announce
echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
配置權限
chmod 755 /sbin/realdr.sh
在兩臺web服務器上分別執行其指命。
/sbin/realdr.sh start
5、 模擬故障測試
測試keepalived
1 當我把master的lvs服務關掉的時候,會將用戶請求自動切換到backup上面進行工做。
中止Master-LVS的keepalived服務,人爲形成故障
[root@Master-LVS]# service keepalived stop
這時查看Backup-LVS的log信息
[root@Backup-LVS]# tail -f /var/log/message
?[Copy to clipboard]View Code LOG
Sep 3 11:23:28 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Sep 3 11:23:29 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Sep 3 11:23:29 localhost Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
Sep 3 11:23:29 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.108.180
Sep 3 11:23:29 localhost Keepalived_vrrp: Netlink reflector reports IP 192.168.0.50 added
Sep 3 11:23:29 localhost Keepalived_healthcheckers: Netlink reflector reports IP 192.168.0.50 added
Sep 3 11:23:34 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.0.50
|
由日誌能夠看出,Backup-LVS監測到Master-LVS故障後當即將本身的身份切換爲Master而後將VIP設置到本身的eth0端口上併發送ARP廣播。
如今我手動將Master-LVS的keepalived的服務起來,而後再查看Backup-LVS的log信息
[root@Master-LVS]# service keepalived start
[root@Backup-LVS]# tail -f /var/log/message
?[Copy to clipboard]View Code LOG
Sep 3 11:30:44 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Received higher prio advert
Sep 3 11:30:44 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
Sep 3 11:30:44 localhost Keepalived_vrrp: VRRP_Instance(VI_1) removing protocol VIPs.
Sep 3 11:30:44 localhost Keepalived_vrrp: Netlink reflector reports IP 192.168.0.50 removed
Sep 3 11:30:44 localhost Keepalived_healthcheckers: Netlink reflector reports IP 192.168.0.50 removed
|
由Backup-LVS的日誌能夠看到,其檢測到比本身優先級高的實例後將本身的身份切換成了Backup,而後將VIP從eth0端口移除,併發送心跳給Master-LVS。
測試lvs
1當我把web服務關掉的時候,lvs上面會顯示web消失,當啓用後,web會自動顯示
Web20關閉後:
[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddressort Scheduler Flags
-> RemoteAddressort Forward Weight ActiveConn InActConn
TCP 192.168.0.50:80 wrr
-> 192.168.0.15:80 Route 10 0 0
[root@localhost ~]# ipvsadm -ln
Web20啓用後:
root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddressort Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.50:80 wlc
-> 192.168.0.15:80 Route 1 0 0
-> 192.168.0.20:80 Route 1 0 0