Linux下安裝Keepalived及原理分析
1、keepalived 原理
1、keepalived是什么
keepalived是集群管理中保證集群高可用的一個服務軟件,其功能類似于heartbeat,用來防止單點故障。
2、keepalived工作原理
keepalived是以VRRP協(xié)議為實現(xiàn)基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協(xié)議。
虛擬路由冗余協(xié)議,可以認為是實現(xiàn)路由器高可用的協(xié)議,即將N臺提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網(wǎng)內(nèi)其他機器的默認路由為該vip),master會發(fā)組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據(jù)VRRP的優(yōu)先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個模塊,分別是core、check和vrrp。core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模塊是來實現(xiàn)VRRP協(xié)議的。
3、keepalived的配置文件
keepalived只有一個配置文件keepalived.conf,里面主要包括以下幾個配置區(qū)域,分別是global_defs、static_ipaddress、static_routes、vrrp_script、vrrp_instance和virtual_server
2、keepalived 在Linux下的安裝
1、準備工作
Linux主機:10.122.111.80 、
Linux主機:10.122.111.81、
虛擬IP:10.122.111.99、
操作系統(tǒng):銀河麒麟 V3.3
2、安裝Keepalived
兩臺Linux主機都需要安裝Keepalived,如下步驟兩臺機需要重復進行。
1、下載Keepalived
下載至目錄:/home/zz/user/software
wget http://keepalived.org/software/keepalived-1.3.8.tar.gz
2、解壓Keepalived
tar -zxvf keepalived-1.3.8.tar.gz
3、配置Keepalived
cd keepalived-1.3.8/
./configure
此步驟可能出現(xiàn)錯誤,
checking libnfnetlink/libnfnetlink.h usability... no
checking libnfnetlink/libnfnetlink.h presence... no
checking for libnfnetlink/libnfnetlink.h... no
configure: error: libnfnetlink headers missing
如下圖:

解決方法如下:
將 usr.zip 包解壓至keepalived-1.3.8目錄,解壓,然后執(zhí)行
cp -R usr/ /
成功后,重新執(zhí)行
./configure
成功,如下圖:

4、編譯安裝Keepalived
make
make install
3、配置防火墻
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 \ --in-interface p4p1 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 \ --out-interface p4p1 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload
注意:上述【p4p1】為配置的網(wǎng)卡名稱。
4、配置服務啟動
cp /home/zz/user/software/keepalived-1.3.8/keepalived/etc/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
執(zhí)行完成后,即可使用服務的形式啟動Keepalived,如下:
service keepalived start
如果使用 service keepalived status命令查看狀態(tài)出現(xiàn)如下問題:
/etc/init.d/keepalived:行15: /etc/sysconfig/keepalived: 沒有那個文件或目錄
則需要執(zhí)行:
ln -s /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
執(zhí)行成功后,重啟Keepalived服務,即可查看狀態(tài)。
如果Keepalived啟動不成功,錯誤信息如下:
Keepalived_vrrp exited with permanent error CONFIG. Terminating
說明Keepalived 核心配置文件配置有誤,繼續(xù)往下配置即可,此問題先不用處理。
5、配置雙機
Keepalived配置文件為:/etc/keepalived/keepalived.conf,
現(xiàn)進行如下配置:
使用10.122.111.80 為主節(jié)點,
使用10.122.111.81為從節(jié)點 進行配置,
修改主節(jié)點80的配置文件 keepalived.conf,內(nèi)容修改如下所示:
! Configuration File for keepalived
global_defs {
notification_email {
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
# smtp_server 192.168.200.1
# smtp_connect_timeout 30
router_id SERVER_1
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface p4p1
virtual_router_id 55
priority 100
protocol TCP
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.122.111.99/24
}
}
修改從節(jié)點81的配置文件 keepalived.conf,內(nèi)容修改如下所示:
! Configuration File for keepalived
global_defs {
notification_email {
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
# smtp_server 192.168.200.1
# smtp_connect_timeout 30
router_id SERVER_2
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface p4p1
virtual_router_id 55
priority 50
protocol TCP
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.122.111.99/24
}
}
配置完成后,分別啟動 Keepalived,并進行狀態(tài)查看,如下圖:

6、配置非搶占模式
Keepalived默認為搶占模式,主節(jié)點Master在故障回復重新開啟使用時會掠奪當前從服務器的虛擬IP,重新占據(jù)中心地位,在一個去中心化的集群中,可配置非搶占模式,即正在處于服務狀態(tài)的主機虛擬IP不會被搶走知道此臺服務器出現(xiàn)問題。
只需要在原有Master配置文件中修改如下配置即可(Backup節(jié)點無需更改):
nopreempt
state BACKUP
調整后的配置文件如下:
! Configuration File for keepalived
global_defs {
notification_email {
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
# smtp_server 192.168.200.1
# smtp_connect_timeout 30
router_id SERVER_1
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP # 此處由MASTER調整為BACKUP
nopreempt # 此處添加非搶占模式配置
interface p4p1
virtual_router_id 55
priority 100
protocol TCP
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.122.111.99/24
}
}
7、查看虛擬IP指向
判斷當前服務器是否擁有虛擬IP,執(zhí)行如下命令,如果有結果則說明當前服務器正處于服務狀態(tài),如果查詢?yōu)榭?,則說明當前服務器不用有虛擬IP,處于備用狀態(tài)。
ip addr|grep 10.122.111.99

說明當前服務器擁有虛擬IP。
8、如何判斷腦裂?
分別在兩臺機查看當前服務器是否擁有虛擬IP,如果兩臺服務器都擁有,則說明發(fā)生了腦裂,證明目前雙機通信出現(xiàn)問題,產(chǎn)生此問題的原有在于 兩臺服務器都探測不到組內(nèi)其他服務器的狀態(tài)(心跳請求無法正常響應),私自判定另一臺服務器掛起,則搶占虛擬IP,腦裂的出現(xiàn)是不被允許的,解決此問題的方法為檢查防火墻設置(關閉防火墻)或者使用串口通信。
版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。
關注官方微信