Keepalived雙機熱備基礎

Keepalived雙機熱備php


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
具體操做步驟以下:
一、LVS+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-devel、popt-devel等支持庫,除此以外,在LVS羣集環境中應用時,也須要用到ipvsadm管理工具。
安裝ipvsadm軟件包:
編譯安裝Keepalived
使用指定的linux內核位置對keepalived進行配置,並將安裝路徑指定爲根目錄,這樣就無需額外建立連接文件了,配置完成後,依次執行make、make install進行安裝。
使用keepalived服務
執行make install操做以後,會自動生成/etc/init.d/keepalived腳本文件,但還須要手動添加爲系統服務,這樣就可使用service、chkconfig工具來對keepalived服務程序進行管理了。
主服務器的配置
Keepalived服務的配置目錄位於/etc/keepalived。其中keepalived.conf是主配置文件,另外包括一個子目錄samples/,提供了許多配置樣列做爲參考。在keepalived的配置文件中,使用」global_defs {……}」區段指定全局參數。使用」vrrp_instance  實例名稱 {……}」區段指定VRRP熱備參數,註釋文字以」!」符號開頭。
相關配置及主要配置項解釋以下:
! Configuration File for keepalived        #!表示註釋
global_defs {
  notification_email {
       root@example.com  #接收警報的 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熱備實例
linux

   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_id、state、prority參數便可,其他內容徹底相同,配置完成之後重啓keepalived服務。
安裝keepalived軟件包與服務控制
在編譯安裝Keepalived以前,必須先安裝內核開發包kernel-devel以及openssl-devel、popt-devel等支持庫,除此以外,在LVS羣集環境中應用時,也須要用到ipvsadm管理工具。
安裝ipvsadm軟件包:
編譯安裝Keepalived
使用指定的linux內核位置對keepalived進行配置,並將安裝路徑指定爲根目錄,這樣就無需額外建立連接文件了,配置完成後,依次執行make、make install進行安裝。
使用keepalived服務
執行make install操做以後,會自動生成/etc/init.d/keepalived腳本文件,但還須要手動添加爲系統服務,這樣就可使用service、chkconfig工具來對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.172爲VIP地址),可以正常ping通,說明主服務器以接管VIP地址,並及時響應客戶機的請求。
禁用主服務器的eth0網卡,發現ping測試會中斷3~4個包即恢復正常,說明已有其餘服務器接替VIP地址,並及時響應客戶機的請求。
從新啓用主服務器的eth0網卡,發現ping測試再次中斷3~4個包即恢復正常,說明主服務器已恢復正常,並奪回VIP地址的控制權。
在這述過程當中能夠查看日誌記錄來了解MASTER、SLAVE狀態的遷移記錄。
二、LVS+HA ----配置負載調度器(ipvsadm)
要在主、從負載調度器主機上分別配置負載調度器,加載ip_vs模塊,安裝ipvsadm軟件包.這裏使用的是LVS-DR模式,須要調整/proc系統的內核響應參數。
在sysctl.conf添加以下內容:
詳細配置參考我在前面介紹的LVS-DR的有關設置。
三、在共享存儲設備主機上配置共享存儲服務(這裏使用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服務器的防火牆規則清除。
四、LVS+HA ---配置服務器池中的WEB節點服務器(172.16.16.177和172.16.16.178)
根據所選擇的羣集工做模式不一樣(DR或NAT),節點服務器的配置也有些差別。以DR模式爲例。除了須要調整/proc系統的ARP響應參數之外,還須要爲虛擬接口lo:0配置VIP地址。具體參考前面有關LVS-DR的配置。因此WEB節點的配置和LVS-DR配置是同樣的。
使用DR模式時,節點服務器也須要配置VIP地址,並調整內核的ARP響應參數以阻止更新VIP的MAC地址,避免發生衝突。
  • 調整/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是本身的纔給與響應。
    oop


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使修改生效
網站

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

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

    修改內容以下:

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

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

    添加VIP本地訪問路由:

  • 安裝httpd,建立測試頁(略,採用和NAT模式同樣設置),啓用httpd服務程序

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

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

    其餘服務器節點作相同的備配,再也不重複敘述。

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

    在LVS負載調度器中,經過查看節點狀態能夠觀察當前的負載分配狀況,對於輪詢算法來講,每一個節點所得到的鏈接負載應大體至關

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

相關文章
相關標籤/搜索