解決方案:
解決單點故障
解決RS會掛的問題
給RS傳送請求,如果收到200 ok回覆則說明RS正常
keepalived就是實現了上述解決方法的工具,檢測web伺服器的狀態,如果有一臺web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的web伺服器從系統中剔除,當web伺服器工作正常後Keepalived自動將web伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web伺服器。
主要用途:
只需要給主機DR和備用機裝keepalived監控DR,並且向RS傳送請求檢測RS。
keepalived的使用:
安裝
yum install keepalived ipvsadm -y
備份和修改keepalived組態檔
DR組態檔:
cp keepalive.conf keepalived.conf.bak
cat /etc/keepalived.conf
global_defs {
notification_email { #設定報警郵件地址,可多行每行一個。
[email protected]
}
notification_email_from keepalived@localhost #設定郵件的傳送地址
smtp_server 127.0.0.1 #設定SMTP server地址
smtp_connect_timeout 30 #設定SMTP 超時時間
router_id LVS_DEVEL #執行keepalived機器的一個標識
}
vrrp_instance VI_1 { #定義一個vrrp範例,不同範例的範例編號不一樣。
state MASTER #定義在keepalived的角色MASTER表示為主伺服器,BACKUP為備伺服器。
interface eth0 #指定HA檢測的網路介面
virtual_router_id 50 #虛擬路由標示,同一個範例裡的路由標示相同,且唯一。MASTER和BACKUP的路由標識一樣,且唯一。
priority 100 #定義此伺服器在此虛擬路由器中的優先順序,優先順序大許可權高
advert_int 1 #檢測時間間隔
authentication { #設定驗證型別和密碼,主從的密碼必須相同,要不兩者不通訊。
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #設定虛擬IP地址,可以設定多個虛擬IP地址。
192.168.233.100/24 dev ens33 label ens33:3
}
}
//設定DR主機lvs,代替使用ipvsadm設定lvs
virtual_server 192.168.233.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR //模式,NAT,DR,TUN
nat_mask 255.255.255.0 //子網掩碼
persistence_timeout 0 //
protocol TCP
real_server 192.168.150.12 80 {//負載機設定
weight 1
HTTP_GET {//對後端機進行健康檢查的設定
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
//設定RS
real_server 192.168.233.129 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
備用DR設定:
global_defs {
notification_email {
[email protected]
}
notification_email_from keepalive@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.233.100
}
}
//設定DR主機lvs,代替使用ipvsadm設定lvs
virtual_server 192.168.233.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR //模式,NAT,DR,TUN
nat_mask 255.255.255.0 //子網掩碼
persistence_timeout 0 //
protocol TCP
real_server 192.168.150.12 80 {//負載機設定
weight 1
HTTP_GET {//對後端機進行健康檢查的設定
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
//設定RS
real_server 192.168.233.129 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
啟動keepalived服務
service keepalived start
使用zookper叢集解決這個問題。