Linux下安裝Keepalived及原理分析
1、keepalived 原理
1、keepalived是什么
keepalived是集群管理中保證集群高可用的一個(gè)服務(wù)軟件,其功能類似于heartbeat,用來防止單點(diǎn)故障。
2、keepalived工作原理
keepalived是以VRRP協(xié)議為實(shí)現(xiàn)基礎(chǔ)的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協(xié)議。
虛擬路由冗余協(xié)議,可以認(rèn)為是實(shí)現(xiàn)路由器高可用的協(xié)議,即將N臺(tái)提供相同功能的路由器組成一個(gè)路由器組,這個(gè)組里面有一個(gè)master和多個(gè)backup,master上面有一個(gè)對外提供服務(wù)的vip(該路由器所在局域網(wǎng)內(nèi)其他機(jī)器的默認(rèn)路由為該vip),master會(huì)發(fā)組播,當(dāng)backup收不到vrrp包時(shí)就認(rèn)為master宕掉了,這時(shí)就需要根據(jù)VRRP的優(yōu)先級來選舉一個(gè)backup當(dāng)master。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個(gè)模塊,分別是core、check和vrrp。core模塊為keepalived的核心,負(fù)責(zé)主進(jìn)程的啟動(dòng)、維護(hù)以及全局配置文件的加載和解析。check負(fù)責(zé)健康檢查,包括常見的各種檢查方式。vrrp模塊是來實(shí)現(xiàn)VRRP協(xié)議的。
3、keepalived的配置文件
keepalived只有一個(gè)配置文件keepalived.conf,里面主要包括以下幾個(gè)配置區(qū)域,分別是global_defs、static_ipaddress、static_routes、vrrp_script、vrrp_instance和virtual_server
2、keepalived 在Linux下的安裝
1、準(zhǔn)備工作
Linux主機(jī):10.122.111.80 、
Linux主機(jī):10.122.111.81、
虛擬IP:10.122.111.99、
操作系統(tǒng):銀河麒麟 V3.3
2、安裝Keepalived
兩臺(tái)Linux主機(jī)都需要安裝Keepalived,如下步驟兩臺(tái)機(jī)需要重復(fù)進(jìn)行。
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)錯(cuò)誤,
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、配置服務(wù)啟動(dòng)
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í)行完成后,即可使用服務(wù)的形式啟動(dòng)Keepalived,如下:
service keepalived start
如果使用 service keepalived status命令查看狀態(tài)出現(xiàn)如下問題:
/etc/init.d/keepalived:行15: /etc/sysconfig/keepalived: 沒有那個(gè)文件或目錄
則需要執(zhí)行:
ln -s /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
執(zhí)行成功后,重啟Keepalived服務(wù),即可查看狀態(tài)。
如果Keepalived啟動(dòng)不成功,錯(cuò)誤信息如下:
Keepalived_vrrp exited with permanent error CONFIG. Terminating
說明Keepalived 核心配置文件配置有誤,繼續(xù)往下配置即可,此問題先不用處理。
5、配置雙機(jī)
Keepalived配置文件為:/etc/keepalived/keepalived.conf,
現(xiàn)進(jìn)行如下配置:
使用10.122.111.80 為主節(jié)點(diǎn),
使用10.122.111.81為從節(jié)點(diǎn) 進(jìn)行配置,
修改主節(jié)點(diǎn)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é)點(diǎn)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 } }
配置完成后,分別啟動(dòng) Keepalived,并進(jìn)行狀態(tài)查看,如下圖:
6、配置非搶占模式
Keepalived默認(rèn)為搶占模式,主節(jié)點(diǎn)Master在故障回復(fù)重新開啟使用時(shí)會(huì)掠奪當(dāng)前從服務(wù)器的虛擬IP,重新占據(jù)中心地位,在一個(gè)去中心化的集群中,可配置非搶占模式,即正在處于服務(wù)狀態(tài)的主機(jī)虛擬IP不會(huì)被搶走知道此臺(tái)服務(wù)器出現(xiàn)問題。
只需要在原有Master配置文件中修改如下配置即可(Backup節(jié)點(diǎn)無需更改):
nopreempt
state BACKUP
調(diào)整后的配置文件如下:
! 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調(diào)整為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指向
判斷當(dāng)前服務(wù)器是否擁有虛擬IP,執(zhí)行如下命令,如果有結(jié)果則說明當(dāng)前服務(wù)器正處于服務(wù)狀態(tài),如果查詢?yōu)榭?,則說明當(dāng)前服務(wù)器不用有虛擬IP,處于備用狀態(tài)。
ip addr|grep 10.122.111.99
說明當(dāng)前服務(wù)器擁有虛擬IP。
8、如何判斷腦裂?
分別在兩臺(tái)機(jī)查看當(dāng)前服務(wù)器是否擁有虛擬IP,如果兩臺(tái)服務(wù)器都擁有,則說明發(fā)生了腦裂,證明目前雙機(jī)通信出現(xiàn)問題,產(chǎn)生此問題的原有在于 兩臺(tái)服務(wù)器都探測不到組內(nèi)其他服務(wù)器的狀態(tài)(心跳請求無法正常響應(yīng)),私自判定另一臺(tái)服務(wù)器掛起,則搶占虛擬IP,腦裂的出現(xiàn)是不被允許的,解決此問題的方法為檢查防火墻設(shè)置(關(guān)閉防火墻)或者使用串口通信。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。