keepalived官方網站: www.keepalived.org/ 在非LVS環境中keepalived也能夠做爲熱備軟件使用。web
keepalived最初是專門針對LVS設計的一款強大的輔助工具,主要用來提供故障切換和健康檢查功能——判斷LVS負載調度器、節點服務器的可用性,及時隔離並替換爲新的服務器,當故障主機回覆後將其從新加入羣集。單獨部署LVS環境的話,調度器發生宕機的話,整個羣集就失效了,某一個web節點宕機後,客戶端在訪問時,總會碰上訪問不到網頁的狀況,因此,將keepalived和LVS結合起來,纔可造成一個真正的高可用羣集,固然,後端的共享存儲也必須搭建一個高可用的存儲服務器,三者其中有一個知足不了,都不能稱之爲一個高可用的羣集環境。vim
keepalived採用VRRP(虛擬路由冗餘協議)熱備份協議,以軟件的方式實現Linux服務器的多機熱備功能。VRRP是針對路由器的一種備份解決方案——由多臺路由器組成一個熱備組,經過共用的虛擬IP(VIP)地址對外提供服務;每一個熱備份組內同一時刻只有一臺主路由器提供服務,其餘路由器處於冗餘狀態,若當前在線的路由器失效,則其餘路由器會自動接替(優先級決定接替順序)虛擬IP地址,以繼續提供服務。後端
熱備組內的每臺路由器均可能成爲主路由器,虛擬路由器的IP地址(VIP)能夠在熱備組內路由器進行轉移,因此也稱爲漂移IP地址。使用keepalived時,漂移地址的實現不須要手動創建虛接口配置文件(如ens32:0),而是由keepalived根據配置文件自動管理。
centos
基於VRRP的熱備方式,keepalived能夠用做服務器的故障切換,每一個熱備組能夠有多臺服務器——最經常使用的是多機熱備了。在這種多機熱備方案中,故障切換主要針對虛擬IP地址的漂移來實現。所以能適用於各類應用服務器(無論是Web、FTP、Mail、仍是SSH、DNS....)。服務器
拓撲圖以下所示:
ide
Keepalived服務的配置目錄位於/etc/keepalived/。其中,keepalived.conf是主配置文件;另外包括一個子目錄samples/,提供了許多配置樣例做爲參考。在Keepalived的配置文件中,使用「global_defs {...}」區段指定全局參數,使用「vrrp_instance實例名稱{...}」區段指定VRRP熱備參數,註釋文字以「!」符號開頭。工具
[root@centos04 ~]# systemctl stop firewalld <!--關閉防火牆--> [root@centos04 ~]# yum -y install ipvsadm keepalived <!--安裝keeplived服務--> [root@centos04 ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak <!--備份keepalived主配置文件--> [root@centos04 ~]# systemctl start keepalived <!--啓動keepalived服務--> [root@centos04 ~]# chkconfig --level 35 keepalived on <!--設置開機自動啓動--> [root@centos04 ~]# vim /etc/keepalived/keepalived.conf <!--編輯keepalived主配置文件--> ! Configuration File for keepalived global_defs { router_id LVS_HA_Master <!--修改這裏的服務器名稱--> } vrrp_instance VI_1 { <!--定義VRRP熱備實例--> state MASTER <!--熱備狀態,MASTER表示主服務器(注意大小寫)--> interface ens32 <!--承載VIP地址的物理接口--> virtual_router_id 51 <!--虛擬路由器的ID號,每一個熱備組保持一致--> priority 100 <!--優先級0-100,數值越大越優先--> advert_int 1 <!--通告間隔秒數(心跳頻率)--> authentication { <!--認證信息,每一個熱備組保持一致--> auth_type PASS <!--認證類型--> auth_pass 1111 <!--密碼字串--> } virtual_ipaddress { <!--指定漂移地址,能夠有多個--> 192.168.100.253 } } ............ <!--此處省略部份內容-->
確認上面配置無誤後,而後啓動keepalived服務,實際狀態爲MASTER的主服務器將爲ens32接口自動添加VIP地址,經過ip命令能夠查看(注意:ifconfig命令看不到)。測試
[root@centos04 ~]# systemctl restart keepalived <!--重啓keepalived服務--> [root@centos04 ~]# ip a show dev ens32 <!--查看ens32接口--> ens32: <BROADCAST,MULTICAST,UP,LOWER_UPUt qlen 1000 link/ether 00:0c:29:77:2c:03 brd ff:ff:ff:ff:ff:ff inet 192.168.100.40/24 brd 192.168.1.255 scope global noprefixroute ens32 valid_lft forever preferred_lft forever inet 192.168.100.253/32 scope global ens32 <!--能夠看到VIP已經配置在ens32上--> valid_lft forever preferred_lft forever inet6 fe80::95f8:eeb7:2ed2:d13c/64 scope link noprefixroute valid_lft forever preferred_lft forever
在同一keepalived熱備組內,全部服務器的keepalived配置文件基本相同,包括虛擬路由器的ID號、認證信息、漂移地址、心跳頻率等。不一樣之處主要在於路由器名稱、熱備狀態、優先級。網站
路由器名稱(route_id):建議爲每一個參與熱備的服務器指定不一樣的名稱。設計
熱備狀態(state):至少應有一臺主服務器,將狀態設置爲MASTER;能夠有多臺備用的服務器,將狀態設置爲BACKUP。
- 優先級(priority):數值越大則取得VIP控制權的優先級就越高,所以主服務的優先級應設置爲最高;其餘備用服務器可依次遞減,但不能相同,以避免在爭奪VIP控制權時發生衝突。
配置備用服務器時(能夠有多臺)時,能夠參考主服務器的keepa.conf文配置文件內容,只要修改路由器名稱、熱備狀態、優先級就能夠了。
[root@centos05 ~]# systemctl stop firewalld <!--關閉防火牆--> [root@centos05 ~]# yum -y install keepalived ipvsadm<!--安裝相關工具--> [root@centos05 ~]# scp root@192.168.100.40:/etc/keepalived/keepalived.conf /etc/keepalived/ <!--使用從節點服務器root用戶將主節點服務器的keepalived配置文件複製過來--> root@192.168.100.40 s password: <!--輸入主節點root用戶的密碼--> keepalived.conf 100% 3549 3.5MB/s 00:00 [root@centos05 ~]# vim /etc/keepalived/keepalived.conf <!--編輯keepalived主配置文件--> global_defs { ............... router_id LVS_DEVEL2 <!--修改這裏的服務器名稱--> ..................... } .............. vrrp_instance VI_1 { state BACKUP <!--修改這裏的狀態,改成BACKUP--> interface ens32 <!--若該服務器承載VIP的物理接口有變,則這裏也要修改--> virtual_router_id 51 priority 90 <!--修改優先級,要比主服務器低--> advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.100.253 } } ................. <!--改動上述幾行後,保存退出便可--> [root@centos05 ~]# systemctl start keepalived <!--啓動服務--> [root@centos05 ~]# systemctl enable keepalived<!--設置開機自啓動-->
確認配置無誤,同樣須要啓動keepalived服務。此時主服務器仍然在線,VIP地址實際上仍然由主服務器控制,其餘服務器處於備份狀態,所以在備用服務器中將不會爲ens32接口添加VIP地址。
[root@centos05 ~]# ip a show dev ens33 <!--查看ens33接口,不會看到VIP--> ens32: <BROADCAST,MULTICAST,Udel state UP group default qlen 1000 link/ether 00:0c:29:9a:09:98 brd ff:ff:ff:ff:ff:ff inet 192.168.100.50/24 brd 192.168.1.255 scope global noprefixroute ens32 valid_lft forever preferred_lft forever inet6 fe80::3050:1a9b:5956:5297/64 scope link noprefixroute valid_lft forever preferred_lft forever
將主服務器關機,或中止keepalived服務,等待約15秒後,查看備份服務器的ens32網卡,會發現漂移地址已經轉移過來了,說明雙機熱備功能生效。待主服務器開機後,漂移地址會自動轉移回到主服務器上。
[root@centos05 ~]# ip a show dev ens32 <!--主服務器關機後查看備份服務器的網卡信息--> ens32: <BROADCAST,MULTICAST,UP state UP group default qlen 1000 link/ether 00:0c:29:9a:09:98 brd ff:ff:ff:ff:ff:ff inet 192.168.100.50/24 brd 192.168.1.255 scope global noprefixroute ens32 valid_lft forever preferred_lft forever inet 192.168.100.253/32 scope global ens32 <!--漂移地址已經轉移過來了--> valid_lft forever preferred_lft forever inet6 fe80::3050:1a9b:5956:5297/64 scope link noprefixroute valid_lft forever preferred_lft forever
再將主服務器開機,會發現VIP已經轉移回了主服務器,而備份服務器又查不到了VIP:
[root@centos04 ~]# ip a show dev ens32 <!--在主服務器上進行查看--> ens32: <BROADCAST,MULTICAST,UP,Lefault qlen 1000 link/ether 00:0c:29:77:2c:03 brd ff:ff:ff:ff:ff:ff inet 192.168.100.40/24 brd 192.168.1.255 scope global noprefixroute ens32 valid_lft forever preferred_lft forever inet 192.168.100.253/32 scope global ens32 <!--VIP地址在這裏了--> valid_lft forever preferred_lft forever inet6 fe80::95f8:eeb7:2ed2:d13c/64 scope link noprefixroute valid_lft forever preferred_lft forever [root@centos05 ~]# ip a show dev ens32 <!--在備份服務器上進行查看--> ens32: <BROADCAST,MULTICAST,UP,P grou00 link/ether 00:0c:29:9a:09:98 brd ff:ff:ff:ff:ff:ff inet 192.168.100.50/24 brd 192.168.1.255 scope goute ens32 valid_lft forever preferred_lft forever inet6 fe80::3050:1a9b:5956:5297/64 scope link noprefixroute valid_lft forever preferred_lft forever
—————— 本文至此結束,感謝閱讀 ——————