RHEL6 搭建 keepalived + lvs/DR 集群
使用Keepalived為LVS調度器提供高可用功能,防止調度器單點故障,為用戶提供Web服務:
LVS1調度器真實IP地址為192.168.4.50
LVS2調度器真實IP地址為192.168.4.55
服務器VIP地址設置為192.168.4.252
真實Web服務器地址分別為192.168.4.51、192.168.4.52
實驗拓撲圖:
實驗步驟:
實驗準備:
配置yum源
# service iptables stop //關閉防火墻
# chkconfig iptables off //關閉開機自啟
# setenforce 0 //設置SELinux 為寬松模式
配置WEB服務器 pc51 / pc52
#yum -y install httpd
#service httpd start
#chkconfig httpd on
[root@pc51 ~] #echo " 192.168.4.51 " > /var/www/html/test.html
[root@pc52 ~] #echo " 192.168.4.52 " > /var/www/html/test.html
本次實驗有些步驟就不詳細介紹了,具體有關 keepalived 和 ipvsadm 的相關配置 可以參考
keepalived 配置高可用集群 : http://blog.51cto.com/13558754/2060950
ipvsadm 配置LVS/DR 負載均衡集群:http://blog.51cto.com/13558754/2060405
1 在web服務上 配置 VIP地址 pc51 / pc52
# ifconfig lo:1 192.168.4.252/32 //只擁有ip 就可以
# ifconfig lo:1
lo:1 Link encap:Local Loopback
inet addr:192.168.4.252 Mask:0.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
# cd /proc/sys/net/ipv4/conf/
# echo 1 > lo/arp_ignore
# echo 2 > lo/arp_announce
# echo 1 > all/arp_ignore
# echo 2 > all/arp_announce
2 配置分發器 50(主) 55(備) 分別安裝keepalived軟件 裝包 ipvsadm
# rpm -q ipvsadm keepalived
ipvsadm-1.26-4.el6.x86_64
keepalived-1.2.13-5.el6_6.x86_64
4 修改配置文件
[root@pc50 ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 { state MASTER // 描述信息 MASTER為主服務器 interface eth0 // 定義網絡接口 virtual_router_id 51 //主 備VRID號必須一致 priority 150 //服務器優先級 advert_int 1 authentication { auth_type PASS //驗證方式 auth_pass 1111 //驗證密碼 主 備服務器密碼必須一致 } virtual_ipaddress { 192.168.4.252 //VIP地址 } } virtual_server 192.168.4.252 80 { //配置 VIP為192.168.0.252 80 端口 delay_loop 6 lb_algo rr //設置LVS調度算法為RR lb_kind DR //設置LVS的模式為DR nat_mask 255.255.255.0 persistence_timeout 50 protocol TCP connect_timeout 3 nb_get_retry 3 delay_before_retry 3 real_server 192.168.4.51 80 { weight 1 //設置權重為1 } real_server 192.168.4.52 80 { weight 1 //設置權重為1 } }
使用第一個虛擬服務的模版
其余的都刪除
主機55
[root@pc55 ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 { state BACKUP // 描述信息 BACKUP為備用服務器 interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.4.252 } } virtual_server 192.168.4.252 80 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 50 protocol TCP connect_timeout 3 nb_get_retry 3 delay_before_retry 3 real_server 192.168.4.51 80 { weight 1 } real_server 192.168.4.52 80 { weight 1 } }
5 啟動服務
# service keepalived start
[root@pc50 ~]# 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.4.252:80 rr persistent 50
-> 192.168.4.51:80 Route 1 0 0
-> 192.168.4.52:80 Route 1 0 0
[root@pc50 ~]# ip addr show | grep 192.168.4
inet 192.168.4.50/24 brd 192.168.4.255 scope global eth0
inet 192.168.4.252/32 scope global eth0
[root@pc55 ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.4.252:80 0 0 0 0 0
-> 192.168.4.51:80 0 0 0 0 0
-> 192.168.4.52:80 0 0 0 0 0
[root@pc55 ~]# ip addr show | grep 192.168.4
inet 192.168.4.55/24 brd 192.168.4.255 scope global eth0
6 客戶端訪問
# elinks --dump 192.168.4.252
192.168.4.52
[root@room1pc32 桌面]# elinks --dump 192.168.4.252
192.168.4.51
[root@room1pc32 桌面]# elinks --dump 192.168.4.252
192.168.4.52
[root@room1pc32 桌面]# elinks --dump 192.168.4.252
192.168.4.51
[root@room1pc32 桌面]# elinks --dump 192.168.4.252
192.168.4.52
# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.4.252:80 5 25 0 2075 0
-> 192.168.4.51:80 2 10 0 830 0
-> 192.168.4.52:80 3 15 0 1245 0
[root@pc55 ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.4.252:80 0 0 0 0 0
-> 192.168.4.51:80 0 0 0 0 0
-> 192.168.4.52:80 0 0 0 0 0
模擬50 故障 驗證Keepalived 高可用
[root@pc50 ~]# service keepalived stop
[root@pc50 ~]# ip addr show | grep 192.168.4
inet 192.168.4.50/24 brd 192.168.4.255 scope global eth0
[root@pc55 ~]# ip addr show | grep 192.168.4
inet 192.168.4.55/24 brd 192.168.4.255 scope global eth0
inet 192.168.4.252/32 scope global eth0
客戶端訪問
# elinks --dump 192.168.4.252
192.168.4.52
# elinks --dump 192.168.4.252
192.168.4.51
# elinks --dump 192.168.4.252
192.168.4.52
# elinks --dump 192.168.4.252
192.168.4.51
# elinks --dump 192.168.4.252
192.168.4.52
# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.4.252:80 5 25 0 2075 0
-> 192.168.4.51:80 2 10 0 830 0
-> 192.168.4.52:80 3 15 0 1245 0
RHEL6 搭建 keepalived + lvs/DR 集群