天天看點

centos7雙機搭建_centos 7之keepalived雙機熱備理論+配置檔案詳解

一、keepalived工作原理及作用:

keepalived最初是專門針對LVS設計的一款強大的輔助工具,主要用來提供故障切換和健康檢

查功能——判斷LVS負載排程器、節點伺服器的可用性,及時隔離并替換為新的伺服器,當故

障主機回複後将其重新加入群集。單獨部署LVS環境的話,排程器發生當機的話,整個群集就

失效了,某一個web節點當機後,用戶端在通路時,總會碰上通路不到網頁的情況,是以,将

keepalived和LVS結合起來,才可形成一個真正的高可用群集,當然,後端的共享存儲也必須

搭建一個高可用的存儲伺服器,三者其中有一個滿足不了,都不能稱之為一個高可用的群集環

境。

keepalived官方網站: keepalived官網,在非LVS環境中,keepalived也可以作為熱備軟體

使用。

keepalived采用VRRP(虛拟路由備援協定)熱備份協定,以軟體的方式實作Linux伺服器的

多機熱備。VRRP是針對路由器的一種備份解決方案——由多台路由器組成一個熱備組,通

過共用的虛拟IP(VIP)位址對外提供服務;每個熱備份組内同一時刻隻有一台主路由器提

供服務,其他路由器處于備援狀态,若目前線上的路由器失效,則其他路由器會自動接替

(優先級決定接替順序)虛拟IP位址,以繼續提供服務。

熱備組内的每台路由器都可能成為主路由器,虛拟路由器的IP位址(VIP)可以在熱備組内

路由器進行轉移,是以也稱為漂移IP位址。使用keepalived時,漂移位址的實作不需要手動

建立虛接口配置檔案(如ens33:0),而是由keepalived根據配置檔案自動管理。

基于VRRP的熱備方式,keepalived可以用作伺服器的故障切換,每個熱備組可以有多台服

務器——最常用的是多機熱備了。在這種多機熱備方案中,故障切換主要針對虛拟IP位址的

漂移來實作。是以能适用于各種應用伺服器(不管是Web、FTP、Mail、還是SSH、DNS....)。

二、keepalived雙機熱備配置詳解:

通過下面簡易的環境圖,可以去全面的了解雙機熱備的配置及功能:

centos7雙機搭建_centos 7之keepalived雙機熱備理論+配置檔案詳解

1、配置主伺服器:

[[email protected] ~]# systemctl stop firewalld #關閉防火牆

[[email protected] ~]# yum -y install keepalived ipvsadm 安裝所需工具

[[email protected] ~]# systemctl enable keepalived #設定開機自啟動

[[email protected] ~]# cd /etc/keepalived/

[[email protected] keepalived]# cp keepalived.conf keepalived.conf.bak #備份配置檔案

[[email protected] keepalived]# vim keepalived.conf #編輯配置檔案

global_defs {

notification_email {

[email protected] #啟用郵件通知功能,這裡設定收件人位址,可以配置多個

[email protected]

[email protected]

}

notification_email_from [email protected] #發件人姓名、位址

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL1 #本伺服器的名稱(在群集中必須唯一)。

.............. #省略部分内容

}

vrrp_instance VI_1 { #定義VRRP熱備執行個體

state MASTER #熱備狀态,MASTER表示主伺服器(注意大小寫)

interface ens33 #承載VIP位址的實體接口

virtual_router_id 51 #虛拟路由器的ID号,每個熱備組保持一緻。

priority 100 #優先級0-100,數值越大越優先。

advert_int 1 #通告間隔秒數(心跳頻率)。

authentication { #認證資訊,每個熱備組保持一緻

auth_type PASS #認證類型

auth_pass 1111 #密碼字串

}

virtual_ipaddress { #指定漂移位址,可以有多個

192.168.1.100

}

}

......................... #省略部分内容

确認上面配置無誤後,然後啟動keepalived服務,實際狀态為MASTER的主伺服器将為ens33接口自動添加VIP位址,通過ip指令可以檢視(注意:ifconfig指令看不到)。

[[email protected] keepalived]# systemctl start keepalived #啟動該服務

[[email protected] keepalived]# ip a show dev ens33 #檢視ens33接口

2: ens33:

link/ether 00:0c:29:77:2c:03 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.1/24 brd 192.168.1.255 scope global noprefixroute ens33

valid_lft forever preferred_lft forever

inet 192.168.1.100/32 scope global ens33 #可以看到VIP已經配置在ens33上。

valid_lft forever preferred_lft forever

inet6 fe80::95f8:eeb7:2ed2:d13c/64 scope link noprefixroute

valid_lft forever preferred_lft forever

2、配置備份伺服器(LVS2):

在同一keepalived熱備組内,所有伺服器的keepalived配置檔案基本相同,某些配置項也必

須相同,包括虛拟路由器的ID号、認證資訊、漂移位址、心跳頻率等,不同之處主要在于路

由器名稱、熱備狀态、優先級。具體配置時需要注意以下幾點:

伺服器名稱(route_id):建議為每個參與熱備的伺服器指定不同的名稱。

熱備狀态(state):至少應有一台主伺服器,将狀态設定為MASTER;可以有多台備用的伺服器,将狀态設定為BACKUP。

優先級(priority):數值越大則取得VIP控制權的優先級就越高,是以主服務的優先級應設定為最高;其他備用伺服器可依次遞減,但不能相同,以免在争奪VIP控制權時發生沖突。

配置備用伺服器時(可以有多台),可以直接将主伺服器的keepa.conf檔案複制過來,修改伺服器名稱、熱備狀态、優先級,這三項就可以了,哪怕是其中包含了一些web節點的配置,也不用修改,也不能修改。

[[email protected] ~]# systemctl stop firewalld #關閉防火牆

[[email protected] ~]# yum -y install keepalived ipvsadm #安裝相關工具

[[email protected] ~]# scp [email protected]:/etc/keepalived/keepalived.conf /etc/keepalived/

#使用主伺服器root使用者将主伺服器的keepalived配置檔案複制過來。

[email protected] s password: #輸入主伺服器root使用者的密碼

keepalived.conf 100% 3549 3.5MB/s 00:00

[[email protected] ~]# vim /etc/keepalived/keepalived.conf

global_defs {

...............

router_id LVS_DEVEL2 #修改這裡的伺服器名稱

.....................

}

..............

vrrp_instance VI_1 {

state BACKUP #修改這裡的狀态,改為BACKUP

interface ens33 #若該伺服器承載VIP的實體接口有變,則這裡也要修改

virtual_router_id 51

priority 90 #修改優先級,要比主伺服器低。

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.100

}

}

.................

#改動上述幾行後,儲存退出即可。

[[email protected] ~]# systemctl start keepalived #啟動服務

[[email protected] ~]# systemctl enable keepalived #設定開機自啟動

此時主伺服器仍然線上,VIP位址實際上仍然由主伺服器控制,其他伺服器處于備份狀态,是以在備用伺服器中将不會為ens33接口添加VIP位址:

[[email protected] ~]# ip a show dev ens33 #檢視ens33接口,不會看到VIP

2: ens33:

link/ether 00:0c:29:9a:09:98 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.2/24 brd 192.168.1.255 scope global noprefixroute ens33

valid_lft forever preferred_lft forever

inet6 fe80::3050:1a9b:5956:5297/64 scope link noprefixroute

valid_lft forever preferred_lft forever

3、測試雙機熱備功能:

将主伺服器關機,或停止keepalived服務,等待約15秒後,檢視備份伺服器的ens33網卡,會發現漂移位址已經轉移過來了,說明雙機熱備功能生效。待主伺服器開機後,漂移位址會自動轉移回到主伺服器上。

[[email protected] ~]# ip a show dev ens33 #主伺服器關機後檢視備份伺服器的網卡資訊

2: ens33:

link/ether 00:0c:29:9a:09:98 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.2/24 brd 192.168.1.255 scope global noprefixroute ens33

valid_lft forever preferred_lft forever

inet 192.168.1.100/32 scope global ens33 #漂移位址已經轉移過來了

valid_lft forever preferred_lft forever

inet6 fe80::3050:1a9b:5956:5297/64 scope link noprefixroute

valid_lft forever preferred_lft forever

再将主伺服器開機,會發現VIP已經轉移回了主伺服器,而備份伺服器又查不到了VIP:

[[email protected] ~]# ip a show dev ens33 #在主伺服器上進行檢視

2: ens33:

link/ether 00:0c:29:77:2c:03 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.1/24 brd 192.168.1.255 scope global noprefixroute ens33

valid_lft forever preferred_lft forever

inet 192.168.1.100/32 scope global ens33 #VIP位址在這裡了

valid_lft forever preferred_lft forever

inet6 fe80::95f8:eeb7:2ed2:d13c/64 scope link noprefixroute

valid_lft forever preferred_lft forever

[[email protected] ~]# ip a show dev ens33 #在備份伺服器上進行檢視

2: ens33:

link/ether 00:0c:29:9a:09:98 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.2/24 brd 192.168.1.255 scope goute ens33

valid_lft forever preferred_lft forever

inet6 fe80::3050:1a9b:5956:5297/64 scope link noprefixroute

valid_lft forever preferred_lft forever