全球簡訊:keepalived實現業務高可用

2022-12-20 18:23:26 來源:51CTO博客

安裝部署配置

IP


(相關資料圖)

用途

賬號/密碼

安裝方式

10.100.174.84

實IP

test/********

root/********

Yum install

10.100.174.85

實IP

Yum install

10.100.174.86

VIP

1、查看系統版本

[test@localhost ~]$ cat /etc/redhat-release

Red Hat Enterprise Linux Server release 7.9 (Maipo)

2、安裝運維工具

Locate包名稱:mlocate

yum install mlocate

Tcpdump包名稱:tcpdump

yum install tdpdump

rz\sz包名稱:lrzsz

3、yum默認安裝

兩臺實體服務器均執行安裝命令:

yum install keepalived

4、配置keepalived

為避免腦裂情況,本次采用非搶占模式配置,非搶占模式說明:

(1)兩個節點的state都必須配置為BACKUP;

(2)兩個節點都必須加上配置nopreempt;

(3)其中一個節點的優先級必須要高于另外一個節點的優先級;

1)兩臺服務器配置文件路勁:/etc/keepalived/keepalived.conf

2)主節點配置(注意:本次采用非搶占模式配置)

[root@localhost ~]# cat /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {      router_id ultra01}vrrp_instance VI_1 {    state BACKUP    nopreempt    interface ens192    virtual_router_id 51    priority 100    advert_int 1    authentication {        auth_type PASS        auth_pass Tmp123$%^    }    virtual_ipaddress {        10.100.174.86    }}

3)備節點配置

[root@localhost ~]#  cat /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {      router_id ultra02}vrrp_instance VI_1 {    state BACKUP    nopreempt    interface ens192    virtual_router_id 51    priority 50    advert_int 1    authentication {        auth_type PASS        auth_pass Tmp123$%^    }    virtual_ipaddress {        10.100.174.86    }}

5、啟動keepalived

兩臺服務器同時執行命令:

systemctl start keepalived.service

啟用keepalived服務:

systemctl enable keepalived

啟動keepalived服務:

systemctl start keepalived

6、日志配置

#配置keepalived

vi /etc/sysconfig/keepalived

添加:KEEPALIVED_OPTIONS="-D -d -S 0"

#配置rsyslog抓取日志

vi /etc/rsyslog.conf

添加:local0.* /var/log/keepalived.log

#重啟服務

systemctl restart keepalived rsyslog

?

Keepalived生效驗證

1、兩個節點都啟動的正常情況驗證

說明:#兩個節點都啟動時,由于主節點優先級高于備用節點,所以只有主節點上有VIP地址生效;

主節點-VIP地址生效查看:

[root@localhost ~]# ip a|grep 174.86    inet 10.100.174.86/32 scope global ens192

備節點-VIP地址查看:(說明:未生效-無VIP結果)

[root@localhost ~]# ip a|grep 174.86[root@localhost ~]# 

2、停掉主節點的情況驗證

說明:#由于主節點keepalived掛掉,備用節點會自動接管主節點的工作,即VIP

主節點-停服后,無VIP信息

[root@localhost ~]# systemctl stop keepalived[root@localhost ~]# ps -ef |grep keepalivedroot     108049 107959  0 15:37 pts/0    00:00:00 grep --color=auto keepalived[root@localhost ~]# ip a|grep 174.86[root@localhost ~]# 

備節點-接管業務,有VIP信息

[root@localhost ~]# ip a|grep 174.86    inet 10.100.174.86/32 scope global ens192[root@localhost ~]# 

3、如何查看keepalived正常運行

如何檢查keepalived正常運行:

查看keepalived三個進程是否都啟動,命令:ps aux | grep keepalived

Keepalived 正常運行時,共啟動 3 個進程,其中一個進程是父進程,負責監控其子進程;一個是 vrrp 子進程;另外一個是 checkers 子進程。

開機自啟動配置

1、Rhel7.9通過systemctl開機自啟keepalived設置 ;

1)查看已啟動的服務列表:systemctl list-unit-files |grep enabled

輸出的結果中無 keepalived.service

2)設置在開機時啟用服務: systemctl enable keepalived.service

3)查看服務是否開機啟動:systemctl is-enabled keepalived.service 結果輸出 enabled,則設置成功;

2、通過chkconfig設置開機啟動服務:

查看服務列表:chkconfig--list

查看keepalived是否開機啟動:chkconfig--list |grepkeepalived

設置開機啟動:chkconfigkeepalived on

其他常見問題記錄

keepalived腦裂產生的原因

腦裂(split-brain):指在一個高可用(HA)系統中,當聯系著的兩個節點斷開聯系時,本來為一個整體的系統,分裂為兩個獨立節點,這時兩個節點開始爭搶共享資源,結果會導致系統混亂,數據損壞。

一般來說裂腦的發生,有以下幾種原因:

1.高可用服務器對之間心跳線鏈路發生故障,導致無法正常通信。

2.因心跳線壞了(包括斷了,老化)。

3. 因網卡及相關驅動壞了,ip配置及沖突問題(網卡直連)。

4.因心跳線間連接的設備故障(網卡及交換機)。

5.因仲裁的機器出問題(采用仲裁的方案)。

6.高可用服務器上開啟了 ??iptables??防火墻阻擋了心跳消息傳輸。

7.高可用服務器上心跳網卡地址等信息配置不正確,導致發送心跳失敗。

8.其他服務配置不當等原因,如心跳方式不同,心跳廣插沖突、軟件Bug等。

9.Keepalived配置里同一 VRRP實例如果virtual_router_id兩端參數配置不一致也會導致裂腦問題發生。

————————————————

問題一 配置非搶占模式防止由于搶占引起閃斷或腦裂問題

但有一個問題,正常情況下A(master)主服務器運行時浮動ip(vip)綁定在A服務器的網卡上,當A服務器宕機時,B(backup)從服務器自動接替工作浮動ip綁定到B服務器網卡上,若修復好A服務器從新上線,A服務器會搶占浮動ip,強制重新綁定到A服務器網卡上。

如何避免搶占浮動ip,A宕機時B接替工作,當A恢復上線時自動當從機,B繼續工作?

解決方案:

修改A(master)主服務的/etc/keepalived/keepalived.conf文件中state的值為BACKUP,在參數中添加nopreempt命令,B服務器的配置文件不改變。

【這個nopreempt配置只能設置在state為BACKUP的主機上,而且這個主機的priority必須比另外一臺高】

問題二:keepalived配置nopreempt不搶占模式,總是失效;或者問題現象為:雙BACKUP加nopreempt不搶占模式時不起作用,兩個機器同時擁有vip

問題原因:是防火墻禁用了vrrp協議

問題解決:需要防火墻允許vrrp協議

Iptables命令:

Iptables -A INPUT -i eth0 -p 112 -j ACCEPT

firewalld命令:

firewalld添加規則:

firewall-cmd --add-rich-rule="rule protocol value="vrrp" accept" --permanent

firewall-cmd --reload

以上驗證,配置成功;或者==>

firewalld開放vrrp協議

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens192--destination 224.0.0.18 --protocol vrrp -j ACCEPT

通過tcpdump抓包判斷高可用網絡是否正常

命令:tcpdump -i ens192|grep VRRP

說明:正常情況下,主節點會像備節點發送VRRP報文。

標簽: 開機啟動 正常運行 服務列表

上一篇:天天最資訊丨mybatis 初探
下一篇:天天快資訊:一網打盡Linux核心多面性,升職面試必備