Keepalived雙機熱備

Keepalived雙機熱備

Keepalived是專門針對LVS設計的一款強大的輔助工具,主要用來提供故障切換和健檢查功能,如判斷LVS負載調度器、節點服務器的可用性,及時隔離並替換爲新的服務器,當故障主機恢復後將其重新加入羣集。在非LVS羣集環境中使用時Keepalived也可以作爲熱備軟件使用。

Keepalived採用VRRP(virtual  router  redundancy protocol,虛擬路由冗餘協議)熱備份協議,以軟件的方式實現linux服務器的多機熱備功能。VRRP是針對路由器的一種備份解決方案-----由多臺路由器組成一個熱備組。通過共用的虛擬IP地址對外提供服務;每個熱備組內同一時刻只有一臺主服務器提供服務,其他服務器處於冗餘狀態,若當前在線的服務器失敗,其他服務器會自動接替(優先級決定接替順序)虛擬IP地址,以繼續提供服務。

熱備組內的每臺服務器都可以成爲主服務器,虛擬IP地址(VIP)可以在熱備組內的服務器之間進行轉移,所以也稱爲漂移IP地址,使用Keepalived時,漂移地址的實現不需要手動建立虛擬接口配置文件(如eth0:0),而是由Keepalived根據配置文件自動管理。

案例:負載均衡+高可用羣集 (LVS-DR+HA):拓撲圖如下所示

上圖設計目的是用Keepalived構建高可用性的LVS負載均衡羣集。使用Keepalived構建LVS羣集更加簡便易用,主要優勢體現在:對LVS負載調度器實現熱備切換,提高可用性,對WEB服務器池中的節點進行分健康檢查,自動移除失敗節點,恢復後再重新加入。

在基於LVS-Keepalived實現的LVS羣集結構中,至少包括兩臺熱備的負載調度器,兩臺以上的節點服務器,本例將以DR模式的LVS羣集爲基礎,增加一臺從負載調度器,使用Keepalived來實現主、從調度器的熱備,從而構建建有負載均衡、高可用兩種能力的LVS網站羣集平臺。

實驗環境:參照上圖可知每臺主機網卡的IP地址,如下所示:共7臺主機

VIP(虛擬IP地址):172.16.16.172/24

主調度器:eth0  172.16.16.173/24   eth1: 192.168.7.173/24

從調度器:eth0  172.16.16.174/24   eth1: 192.168.7.174/24

WEB節點1  172.16.16.177/24    eth1:  192.168.7.177/24

WEB節點2  172.16.16.178/24    eth1: 192.168.7.178/24

NFS共享存儲:eth0   192.168.7.250/24

具體操作步驟如下:

1LVS+keepalived高可用羣集---調度器組中的主、從調度器配置(/),即構建高可用的LVS負載均衡羣集

Keepalived的設計目標是構建高可用的LVS負載均衡羣集,可以調用ipvsadm工具來創建虛擬服務器、管理服務器池,而不僅僅用來做雙機熱備。使用Keepalived構建LVS羣集更加簡便易用,主要優勢體現在:對LVS負載調度器實現熱備切換,提高可用性;對服務器池中的節點進行健康檢查,自動移除失效點節,恢復後再重新加入。

基於LVS+keepalived實現的LVS羣集中,至少包括兩臺熱備的負載調度器,兩臺以上的節點服務器。本案例以DR模式的LVS模式羣集爲基礎。

使用 Keepalived構建LVS羣集時,也需要用到ipvsadm管理工具,但大部分工作會由Keepalived自動完成,不需要手動執行ipvsadm(除了查看和監控羣集以外)

查看主調度器網卡接口IP地址:

查看從調度器網卡接口IP地址:

1)主服務器的配置:

安裝keepalived軟件包與服務控制

在編譯安裝Keepalived之前,必須先安裝內核開發包kernel-devel以及openssl-develpopt-devel等支持庫,除此之外,在LVS羣集環境中應用時,也需要用到ipvsadm管理工具。

安裝ipvsadm軟件包:

編譯安裝Keepalived

使用指定的linux內核位置對keepalived進行配置,並將安裝路徑指定爲根目錄,這樣就無需額外創建鏈接文件了,配置完成後,依次執行makemake install進行安裝。

使用keepalived服務

執行make install操作之後,會自動生成/etc/init.d/keepalived腳本文件,但還需要手動添加爲系統服務,這樣就可以使用servicechkconfig工具來對keepalived服務程序進行管理了。

主服務器的配置

Keepalived服務的配置目錄位於/etc/keepalived。其中keepalived.conf是主配置文件,另外包括一個子目錄samples/,提供了許多配置樣列作爲參考。在keepalived的配置文件中,使用”global_defs {……}”區段指定全局參數。使用”vrrp_instance  實例名稱 {……}”區段指定VRRP熱備參數,註釋文字以”!”符號開頭。

相關配置及主要配置項解釋如下:

! Configuration File for keepalived        #!表示註釋

global_defs {

  notification_email {

       [email protected]  #接收警報的 email 地址,可以添加多個

  }

  notification_email_from root@localhost

  smtp_server 127.0.0.1  #使用本機轉發 email

  smtp_connect_timeout 30

  router_id  LVS_DEVEL  #load balancer 的標識 ID,即本服務器的名稱標識

}

vrrp_instance  VI_1 {    #定義VRRP熱備實例

   state MASTER   #熱備狀態,MASTER表示主服務器;SLAVE表示備用服務器;當有多臺備用的服務器,熱備狀態改爲 BACKUP,此狀態是由 priority 的值來決定的,當前priority 的值小於備機的值,那麼將會失去 MASTER 狀態

   interface eth0   #HA 監測網絡接口即承載VIP地址的物理接口

   virtual_router_id 50   #虛擬路由器的ID號。主、備機的 virtual_router_id必須相同

   priority 150    #主機的優先級,數值越大優先能越高。備份機改爲 50

   advert_int 1  #主備之間的通告間隔秒數(心跳頻率)

   authentication {   #認證信息,每個熱備組保持一致

       auth_type PASS   #認證類型,主備切換時的驗證

       auth_pass 1111   #密碼字串

   }

   virtual_ipaddress {    #指定漂移地址(VIP),可以有多個

        172.16.16.172    #HA 虛擬 ip,可加多個

   }

}

virtual_server 172.16.16.172 80 {  #虛擬服務器地址(VIP)、端口

   delay_loop 6    #健康檢查的間隔時間(秒),每隔 6 秒查詢 realserver狀態

   lb_algo rr    #lvs 調度算法,這裏使用輪詢

   lb_kind DR   #lvs 負載均衡機制,這裏使用直連路由

!   persistence_timeout  50  #同一 IP 的連接 50 秒內被分配到同一臺 realserver

   protocol TCP  # TCP 協議檢查 realserver 狀態

   real_server 172.16.16.177  80 {  #第一個WEB節點的地址、端口

       weight 1    #節點的權重

       TCP_CHECK {    #健康檢查方式

            connect_port 80  #檢查的目標端口

            connect_timeout 3  #故障重試秒數(即連接超時)

            nb_get_retry 3  #重試延遲(即重試次數)

            delay_before_retry 3  #重試間隔(秒)

       }

   }

   real_server 172.16.16.178  80 {  #第二個WEB節點的地址、端口

       weight 1

       TCP_CHECK {

            connect_port 80

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

       }

   }

}

配置主調度器:修改keepalived.conf文件中的全局參數、熱備參數、WEB服務器池配置,相關配置參數如下圖:

重新啓動keepalived服務

2)配置從調度器:

從調度器的配置與主調度器基本相同,也包括全局參數、熱備參數、服務器池配置,只需要調整router_idstateprority參數即可,其餘內容完全相同,配置完成以後重啓keepalived服務。

安裝keepalived軟件包與服務控制

在編譯安裝Keepalived之前,必須先安裝內核開發包kernel-devel以及openssl-develpopt-devel等支持庫,除此之外,在LVS羣集環境中應用時,也需要用到ipvsadm管理工具。

安裝ipvsadm軟件包:

編譯安裝Keepalived

使用指定的linux內核位置對keepalived進行配置,並將安裝路徑指定爲根目錄,這樣就無需額外創建鏈接文件了,配置完成後,依次執行makemake install進行安裝。

使用keepalived服務

執行make install操作之後,會自動生成/etc/init.d/keepalived腳本文件,但還需要手動添加爲系統服務,這樣就可以使用servicechkconfig工具來對keepalived服務程序進行管理了。

配置從調度器:修改keepalived.conf文件,只修改紅線標註的參數,其他參數和主調度器的配置文件完全一樣。修改的地方如下圖所示:

重新啓動keepalived服務

在同一個keepalived熱備組內,所有服務器的keepalived配置文件基本相同。不同之處主要在於服務器的名稱標識、熱備狀態、優先級。

服務器的名稱標識(router_id):建議爲每個參與熱備的服務器指定不同的名稱

熱備狀態(state):至少應有一臺主服務器,狀態設爲MASTER;可以有多臺備用的服務器,將狀態設爲BACKUP.

優先級(priority):數值越大則取得VIP控制權的優先級越高,回此主服務器的優先級應設爲最高;其他備用服務器的優先級可依次遞減,但不要相同,以免在爭奪VIP控制權時發生衝突。

3)測試主、從調度器:

若防火牆不關閉的話可以在input鏈上建規則.

iptables -I INPUT -p ip -d 224.0.0.18 -jACCEPT

:VRRP協議的通告報文使用固定的組播地址224.0.0.18,用IP 報文作爲傳輸協議進行協議報文的傳送。

當啓動keepalived服務後,實際狀態爲MASTER的主服務器取得VIP控制權,並將eth0接口自動添加VIP地址,通過ip命令可以查看(注意:ifconfig命令看不到)

查看主服器的eth0接口信息:

從調度器服務器上啓動keepalived服務,此時主服務器仍然在線,VIP地址實際上仍然由主服務器控制,其他服務器處於備用狀態,因此在備用服務器中將不會爲eth0接口添加VIP地址。

此時查看從服務器的eth0接口信息:

Keepalived的日誌消息保存在/var/log/messages文件中,在測試主、從故障自動切換功能時,可以跟蹤此日誌文件來觀察熱備狀態的變化。以連通性測爲例

internet的測試機上執行ping  172.16.16.172  –t,(172.16.16.172VIP地址),能夠正常ping通,說明主服務器以接管VIP地址,並及時響應客戶機的請求。

禁用主服務器的eth0網卡,發現ping測試會中斷34個包即恢復正常,說明已有其他服務器接替VIP地址,並及時響應客戶機的請求。

重新啓用主服務器的eth0網卡,發現ping測試再次中斷34個包即恢復正常,說明主服務器已恢復正常,並奪回VIP地址的控制權。

在這述過程中可以查看日誌記錄來了解MASTERSLAVE狀態的遷移記錄。

2LVS+HA ----配置負載調度器(ipvsadm

要在主、從負載調度器主機上分別配置負載調度器,加載ip_vs模塊,安裝ipvsadm軟件包.這裏使用的是LVS-DR模式,需要調整/proc系統的內核響應參數。

sysctl.conf添加如下內容:

詳細配置參考我在前面介紹的LVS-DR的有關設置。

3在共享存儲設備主機上配置共享存儲服務(這裏使用NFS發佈共享服務),具體操作如下:

修改/etc/exports文件,內容如下:

/opt/wwwroot  192.168.7.0/24(rw,sync,no_root_squash)

允許192.168.7.0/24網段的主機訪問NFS的共享。

參考LVS+NAT方式的虛擬服務器中有關NFS的防火牆設置或將NFS服務器的防火牆規則清除。

4LVS+HA ---配置服務器池中的WEB節點服務器(172.16.16.177172.16.16.178)

根據所選擇的羣集工作模式不同(DRNAT),節點服務器的配置也有些差異。以DR模式爲例。除了需要調整/proc系統的ARP響應參數以外,還需要爲虛擬接口lo:0配置VIP地址。具體參考前面有關LVS-DR的配置。所以WEB節點的配置和LVS-DR配置是一樣的。

使用DR模式時,節點服務器也需要配置VIP地址,並調整內核的ARP響應參數以阻止更新VIPMAC地址,避免發生衝突。

  1. 調整/proc響應參數

    sysctl.conf添加如下內容:

    注:上圖中參數的含義:

    net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.all.arp_ignore = 1

    net.ipv4.conf.lo.arp_ignore = 1
    arp_ignore:
    定義了網卡在響應外部ARP請求時候的響應級別
    0
    :默認值,不管哪塊網卡接收到了ARP請求,只要發現本機有這個MAC都給與響應
    1
    :總是使用最合適的網卡來響應,一個主機有多塊網卡,其中一塊網卡接收到了ARP請求,發現所請求的MAC是本機另一塊網卡的,這個時候接收到ARP請求的這塊網卡就一定不響應,只有發現請求的MAC是自己的纔給與響應

net.ipv4.conf.default.arp_announce= 0 net.ipv4.conf.all.arp_announce = 0

net.ipv4.conf.lo.arp_announce= 0

定義了網卡在向外宣告自己的MAC-IP時候的限制級別
有三個值:
0
:默認值,不管哪塊網卡接收到了ARP請求,只要發現本機有這個MAC都給與響應
1
:儘量避免響應ARP請求中MAC不是本網卡的,一個主機有多塊網卡,其中一塊網卡接收到了ARP請求,發現所請求的MAC是本機另一塊網卡的,這個時候接收到ARP請求的這塊網卡就儘量避免響應
2
:總是使用最合適的網卡來響應,一個主機有多塊網卡,其中一塊網卡接收到了ARP請求,發現所請求的MAC是本機另一塊網卡的,這個時候接收到ARP請求的這塊網卡就一定不響應,只有發現請求的MAC是自己的纔給與響應

執行sysctl  -p使修改生效

  1. 配置虛擬IP地址(VIP-----節點服務器1的配置

    在每個節點服務器,同樣需要具有VIP地址172.16.16.172,但此地址僅用作發送WEB響應數據包的源地址,並不需要監聽客戶機的訪問請求(改由調度器監聽並分發)。因此使用虛擬接口lo:0來承載VIP地址,併爲本機添加一條路由記錄,將訪問VIP的數據限制在本地以避免通信紊亂。

    修改內容如下:

    //特別注意:子網掩碼必須爲全1

    重啓network腳本使修改後的IP生效。

    添加VIP本地訪問路由:

  2. 安裝httpd,創建測試頁(略,採用和NAT模式一樣設置),啓用httpd服務程序

    安裝httpd軟件包,創建測試網頁

    修改/etc/fstab文件,實現自動掛載

    其他服務器節點做相同的備配,不再重複敘述。

    5、安排多臺測試機,從internet中直接訪問http://172.16.16.172,將能夠看到由真實服務器提供的網頁內容

    LVS負載調度器中,通過查看節點狀態可以觀察當前的負載分配情況,對於輪詢算法來說,每個節點所獲得的連接負載應大致相當

    至此有關LVS+keepalived羣集配置完畢,這樣即實現了lvs負載平衡又實現了調度器的熱備。

     


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章