Keepalived實現雙機熱備: 雙機熱備一般指的是兩台機器設備同時在運行,但是只有一臺處於提供服務的狀態。當其中一臺設備出現故障,那麼另一臺設備接管角色,繼續提供服務,他們之間的切換時間非常之短,基本是無縫切換,所以避免了因為某台伺服器出現故障,導致系統軟體不能正常運行的問題。 · Keepal ...
Keepalived實現雙機熱備:
雙機熱備一般指的是兩台機器設備同時在運行,但是只有一臺處於提供服務的狀態。當其中一臺設備出現故障,那麼另一臺設備接管角色,繼續提供服務,他們之間的切換時間非常之短,基本是無縫切換,所以避免了因為某台伺服器出現故障,導致系統軟體不能正常運行的問題。
· Keepalived
· 熱備架構圖
· 安裝及配置
· 測試及驗證
一、Keepalived
Keepalived的運行原理是基於VRRP(虛擬路由冗餘協議)機制,在VRRP中有兩個重要的概念:VRRP路由器和虛擬路由器,主控路由器和備份路由器。
VRRP路由器是一種實體路由器設備,而虛擬路由器則是基於VRRP協議構建的虛擬路由器,是軟性的虛擬概念,一組VRRP路由器協同工作,共同構造一臺虛擬伺服器。
VRRP協議支持一種選舉機制,主要用來選出用來提供服務的路由即主控路由,其它的就是備份路由了,當主控路由失效之後,備份路由中重新選出一個主控路由(往往按照設置好的優先順序別重新分配),接管主控服務,繼續工作,來保證不間斷的提供服務。
二、熱備架構圖
1、環境準備
因為資源條件限制,這裡使用虛擬機代替物理主機,具體如下:
master : 192.168.132.10(主控伺服器)
backup : 192.168.132.11(備用伺服器)
vip : 192.168.132.101
2、架構圖解
NOTE:
Vip:虛擬伺服器;
Node A:物理主伺服器;
Node B:物理備用伺服器;
在這種模式下,虛擬IP某一時刻只能屬於一個物理節點,另一個作為備份節點存在,當主節點不可用時,備份節點接管虛擬IP,繼續提供正常的服務。
3、Keepalived的原理
Keepalived被安裝在兩台物理伺服器上,並且彼此監控對方當前是否處於正常狀態,當Node A正常時,其上的keepalived會發送廣播:192.168.132.101 這個ip對應的節點為Node A的網卡MAC地址;反之,如果NodeB正常時,其上的keepalived也會發送廣播:192.168.132.101這個ip對應的節點為Node B的網卡MAC地址;此時,相關的電腦及客戶端的ARP會發生更新,對應192.168.132.11的MAC地址與Node B網卡的MAC地址相同。
三、安裝及配置
1、虛擬IP配置
$vim /etc/sysconfig/network-scripts/ifcfg-eth2:0
DEVICE=eth2:0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
DNS1=192.168.232.2
IPADDR=192.168.132.101
NETMASK=255.255.255.0
GETWAY=192.168.232.2
2、主備機器安裝keepalived
$tar -zxvf keepalived-1.2.6.tar.gz
$cd keepalived-1.2.6
$sudo ./configure
$make & make install
3、主節點keepalived配置
global_defs {
router_id NodeA
}
vrrp_instance VI_11 {
state MASTER #設置為主伺服器
interface eth2 #設置監聽網路介面
priority 101 #設置優先順序,值越大代表優先順序越高
advert_int 1 #設置VRRP廣播周期秒數
authentication {
auth_type PASS #VRRP認證方式,主備必須一致
auth_pass 1234 #驗證密碼
}
virtual_router_id 52 #主備必須一致
}
virtual_ipaddress {
192.168.132.101/24 #VRRP HA虛擬地址
}
4、備用節點keepalived配置
global_defs {
router_id NodeB
}
vrrp_instance VI_11 {
state BACKUP #設置為備用伺服器
interface eth2 #設置監聽網路介面
priority 100 #設置優先順序,值越大代表優先順序越高
advert_int 1 #設置VRRP廣播周期秒數
authentication {
auth_type PASS #VRRP認證方式,主備必須一致
auth_pass 1234 #驗證密碼
}
virtual_router_id 52 #主備必須一致
}
virtual_ipaddress {
192.168.132.101/24 #VRRP HA虛擬地址
}
5、啟動主備keepalived服務
$keepalived -D –f /etc/keepalived/keepalived.conf
查看logs日誌:
$tail -f /var/log/messages
通過日誌,可以查看節點的ARP消息daemon[4029]:
Registering new address record for192.168.132.101 on eth0.
6、安裝web伺服器
在兩台物理伺服器上安裝web伺服器,比如:nginx,apacache或tomcat等,在這裡省略,請自行查閱資料安裝。
四、測試及驗證
1、在Node A節點上創建一個html文件,內容如下:
this is the test page
<br/>
from server 192.168.132.10
訪問:
通過訪問http://192.168.132.101/test/test/html
2、在Node B節點上創建一個html文件,內容如下:
this is the test page
<br/>
from server 192.168.132.11
訪問:
通過訪問http://192.168.132.11/test/test/html訪問是可以訪問的,但是在Node A正常情況下,訪問http://192.168.132.101/test/test/html是訪問的Node A節點。
3、驗證Node B節點的可用性
首先,將節點A的keepalived伺服器關閉來模擬故障:
$killall keepalived
其次,通過下麵的Url訪問:
http://192.168.132.101/test/test.html
那麼訪問的就是Node B節點了,內容:
this is the test page
<br/>
from server 192.168.132.11
4、查看日誌
此時查看日誌,會發現Node B現在為主節點,發送ARP廣播信息。而當Node A恢復之後,Node B釋放角色,將繼續由Node A為主伺服器,繼續服務。
daemon[3769]:
Registering new address record for 192.168.132.101 on eth0.
NOTE:
這裡只介紹使用keepalived實現雙機熱備的功能和流程,至於Web伺服器的安裝等輔助技術,這裡不做介紹。
附加:
一般情況下,主備伺服器的選型是不同的,也就是主伺服器要高配,因為其會被經常使用,出現故障只是特殊情況,而備用伺服器是為了保證伺服器的持續服務,但是最終還是要恢復並使用主伺服器來作為主控路由伺服器,也是為了縮小不必要的開銷的考慮。