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負載平衡又實現了調度器的熱備。
|