介紹
為了防止單點元件不可用,本文介紹用keepalived實作主備雙節點高可用,主節點不可用後自動切換到備節點繼續提供服務。
另外,keepalived還可以做負載均衡。
安裝
在元件對應的機器上安裝:
yum install -y keepalived
主節點配置
我們以禅道zbox為例寫一個配置,如下。首先check_zbox.sh是一個檢測腳本,檢測應用是不是可用,不可用時停止keepalived服務以自動切換到從。然後是在網卡開了一個虛拟ip。
[[email protected] ~]# cat /etc/keepalived/keepalived.conf
vrrp_script check_zbox {
script "/etc/keepalived/check_zbox.sh"
interval 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 150
authentication {
auth_type PASS
auth_pass zbox
}
track_script {
check_zbox
}
virtual_ipaddress {
192.168.178.131
}
}
檢測腳本内容如下:
[[email protected] ~]# cat /etc/keepalived/check_zbox.sh
#!/bin/bash
return_code=`curl -s -w "%{http_code}" -o /dev/null http://127.0.0.1:90`
if [[ $return_code -ne 200 ]]; then
systemctl stop keepalived
fi
記得給腳本權重限。
從節點配置
與主節點相比,注意以下字段:
state
、
virtual_router_id
、
priority
、
virtual_ipaddress
。
[[email protected] ~]# cat /etc/keepalived/keepalived.conf
vrrp_script check_zbox {
script "/etc/keepalived/check_zbox.sh"
interval 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 100
authentication {
auth_type PASS
auth_pass zbox
}
track_script {
check_zbox
}
virtual_ipaddress {
192.168.178.131
}
}
啟動、測試
所有節點啟動keepalived:
systemctl start keepalived && systemctl enable keepalived
正常情況下,在主節點
ip addr
可以看到你定義的虛ip,在從節點看不到。通路虛ip可以正常通路元件。
然後如果停掉主節點的元件,通路虛ip還是可以正常通路元件,但是在主節點
ip addr
看不到虛ip了,因為它跑到從節點了。