實驗目的:使用keepalived實現lvs-dr模型雙主高可用集群
實驗環境:兩臺virtual server(實現lvs的雙主)、兩臺real server(安裝web service,用于負載均衡)、一臺clietn用于驗證結果
注意:為了不影響實驗結果,在實驗開始前先關閉iptables和selinux
操作步驟:
一、配置IP
1.配置A主機的IP
# ip addr add dev eth0 192.168.10.2/24
2.配置B主機的IP
# ip addr add dev eth0 192.168.10.23/24
3.配置C主機的IP,修改內核參數和回環的IP
# ip addr add dev eth0 192.168.10.3/24
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
# ip addr add dev lo 192.168.10.200/32 label lo:0 broadcast 192.168.10.200
# ip addr add dev lo 192.168.10.201/32 label lo:1 broadcast 192.168.10.201
4.配置D主機的IP,修改內核參數和回環的IP
# ip addr add dev eth0 192.168.10.33/24
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
# ip addr add dev lo 192.168.10.200/32 label lo:0 broadcast 192.168.10.200
# ip addr add dev lo 192.168.10.201/32 label lo:1 broadcast 192.168.10.201
二、配置web
service(C和D主機做同樣配置,默認主頁的內容中的IP地址改為D主機的IP即可)
1.安裝apache
# yum -y install httpd
2.創建默認主頁
# vim /var/www/html/index.html
<h1>R1:192.168.10.3</h1>
3.啟動服務
# service httpd start
三、配置keepalived,實現雙主高可用
1.安裝keepalived
# yum -y install keepalived
2.編輯A主機的配置文件/etc/keepalived/keepalived.conf,作如下配置:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id centos6
vrrp_mcast_group4 224.0.100.39
}
vrrp_instance lvs {
state MASTER
interface eth0
virtual_router_id 14
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass MDQ41fTp
}
virtual_ipaddress {
192.168.10.200/24 dev eth0
}
}
vrrp_instance lvs2 {
state BACKUP
interface eth0
virtual_router_id 15
priority 98
advert_int 1
authentication {
auth_type PASS
auth_pass XYZ41fTp
}
virtual_ipaddress {
192.168.10.201/24 dev eth0
}
}
virtual_server 192.168.10.200 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.10.3 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 1
nb_get_retry 3
delay_before_retry 1
}
}
real_server 192.168.10.33 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 1
nb_get_retry 3
delay_before_retry 1
}
}
}
virtual_server 192.168.10.201 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.10.3 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 1
nb_get_retry 3
delay_before_retry 1
}
}
real_server 192.168.10.33 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 1
nb_get_retry 3
delay_before_retry 1
}
}
}
B主機也作同樣配置,稍作修改即可,需要修改的地方如下:
vrrp_instance lvs {
state BACKUP
priority 98
}
vrrp_instance lvs2 {
state MASTER
priority 100
}
四、配置sorry_server(在兩臺RS都不能正常提供服務且有用戶訪問時,sorry主機可顯示告知信息),sorry_server需要配置在virtual server上(兩臺RS都做同樣配置,默認主頁中的IP地址改為本機的IP以示區分。)
1.安裝apache
# yum -y install httpd
2.創建默認主頁
# vim /var/www/html/index.html
<h1>sorry_server:192.168.10.2</h1>
3.啟動服務
# service httpd start
五、模擬故障,驗證結果(由于沒有配置路由,因此client主機并不能訪問,可在服務器網段中選擇任意一臺主機測試)
1.啟動兩臺VS的keepalived服務
# service keepalived start
2.查看生成的lvs規則,如圖有兩組規則
# ipvsadm -ln
3.訪問192.168.10.200,結果應是后端的RS輪詢響應請求
4.訪問192.168.10.201,結果應是后端的RS輪詢響應請求
5.將后端RS的web服務關閉一臺,此時訪問192.168.10.200或192.168.10.201,響應請求的將只是另一臺web服務正常運行的RS
6.將后端RS的web服務都關閉,此時訪問192.168.10.200或192.168.10.201,響應請求的將只是各自的主server中定義的sorry_server
7.關閉一臺VS的keepalived服務,此時訪問192.168.10.200或192.168.10.201,響應的請求的將只是另一臺正常運行keepalived服務的VS
原創文章,作者:人字拖,如若轉載,請注明出處:http://www.www58058.com/75455