1. 程式人生 > >使用Keepalived構建高可用Web叢集

使用Keepalived構建高可用Web叢集

Keepalived的作用是檢測伺服器的狀態,如果有一臺web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的伺服器從系統中剔除,同時使用其他伺服器代替該伺服器的工作,當伺服器工作正常後Keepalived自動將伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的伺服器。

高可用叢集(HA High Availability Cluster)

作用:最大限度的保證使用者的應用程式持久,不間斷的提供服務.(實現故障轉移)

高可用性(HA High Availablity)是指通過儘量縮短系統停機時間(因日常的維護操作或突發的系統崩潰等),以提高系統和應用的可用性.

高可用叢集最少是2個節點做出的HA叢集,有很多通俗不科學的名稱,比如 "雙機熱備","雙機互備",這樣做的好處是當服務啟動的時候,兩臺伺服器一個作主(mast),另外一個作從(ser),測試機每幾秒會ping主機當發現主機沒有迴應,就證明主機拓機了,那麼從機馬上會啟動相應的服務,繼續進行服務,這樣就可保證服務不間斷.

負載均衡叢集與高效能運算叢集(HPC),的區別?

負載均衡叢集:通過提高單位時間內的執行的任務數量來提高效率.
高效能運算叢集:通過提高單位時間內的執行時間來提高效率.

VRRP(Virtual Router Redundancy Protocol 虛擬路由冗餘協議)簡介

虛擬路由冗餘協議(Virtual Router Redundancy Protocol,簡稱VRRP)是由IETF提出的解決區域網中配置靜態網關出現單點失效現象的路由協議,1998年已推出正式的RFC2338協議標準。VRRP廣泛應用在邊緣網路中,它的設計目標是支援特定情況下IP資料流量失敗轉移不會引起混亂,允許主機使用單路由器,以及及時在實際第一跳路由器使用失敗的情形下仍能夠維護路由器間的連通性。

VRRP是一種容錯協議,它通過把幾臺路由裝置聯合組成一臺虛擬的路由裝置,並通過一定的機制來保證當主機的下一跳裝置出現故障時,可以及時將業務切換到其它裝置,從而保持通訊的連續性和可靠性。

腦分裂:與解決方法

解釋: 在一個網路或線纜故障時導致兩個節點同時認為自已是唯一處於活動狀態的伺服器從而出現爭用資源的情況,這種爭用資源的場景即是所謂的"腦裂",會導致資料不完整或服務不可訪問.

解決方法:
1.設定參考ip,在搶奪資源之前,都去ping參考ip(閘道器),ping不通時,不會去搶資源,而是釋放資源,將控制權交出去.
2.設定冗餘線路,設定兩條心跳線,兩個網絡卡,第一個測時不通,再拿第二個去測.
3.stonish(爆頭),基於能夠通過軟體指令關閉某節點特殊的硬體裝置掐電源.

附加知識點:

RS232串列埠線: 序列電纜被認為是比乙太網連線安全性稍好些的連線方式,因為黑客無法通過序列連線執行諸如telnet、ssh或rsh類的程式,從而可以降低其通過已劫持的伺服器再次侵入備份伺服器的機率.但序列線纜受限於可用長度,一般是(5米以內)因此主、備伺服器的距離必須非常短.

常用的雙機熱備軟體: RoseHA KeepaLived Heartbear RHCS

一年內最大停機限度:

99% 87.6h
99.9% 8.8h
99.99% 53m
99.999% 5m

◆編譯安裝Keeplived◆

1.安裝依賴

yum install -y gcc kernel kernel-devel openssl openssl-devel popt popt-devel

2.編譯Keepalived

wget http://www.keepalived.org/software/keepalived-1.4.3.tar.gz

tar -xzvf keepalived-1.4.3.tar.gz

cd keepalived-1.4.3/

#RHEL6中的編譯引數
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-358.el6.x86_64

#RHEL7中的編譯引數
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/3.10.0-123.el7.x86_64/net/

make && make install

◆使用Keepalived構建LVS高可用◆

[實驗環境]

[型別]            [IP地址]              [VIP/IO]

LVS1_Master     IP:192.168.22.191       VIP:192.168.22.195
LVS2_Slaves     IP:192.168.22.192       VIP:192.168.22.195

RealServer_1        IP:192.168.22.193
RealServer_2        IP:192.168.22.194

[配置說明]

1.首先我們需要配置一個LVS實現負載均衡
2.其次安裝第二個LVS但不需要配置
3.在第一個LVS上配置輪詢規則,並且安裝開啟Keepalived服務
4.在第二個LVS上安裝Keepalived服務,啟動後會自動同步資料

配置Keepalived主節點

1.修改主配置檔案,其他可刪除,只寫入以下內容,修改以下標★處

vim /etc/keepalived/keepalived.conf

 1 ! Configuration File for keepalived
 2 
 3 global_defs {
★    router_id kp_master                    #指定本機keepalaved名字(主從不能重複)
 5 }
 6 
 7 vrrp_instance VI_1 {
★     state MASTER                      #宣告成主伺服器(MASTER)/宣告成從伺服器(SLAVE)
★     interface eth0                        #定義相應網絡卡介面名稱
★     virtual_router_id 100                 #虛擬路由ID(主從應同步)
★     priority 100                      #Keepalaved主從伺服器優先順序(主伺服器必須大於從伺服器)
12     advert_int 1                     #檢查間隔,預設1秒
13     authentication {                     #定義主從驗證
14         auth_type PASS                   #設定驗證方式(PASS或HA)
15         auth_pass 1111                   #驗證密碼
16     }
17     virtual_ipaddress {                  #指定負載排程器(指定VIP的地址)
★         192.168.22.195
19     }
20 }
21 
★ virtual_server 192.168.22.195 80 {                #虛擬主機區域(指定VIP地址)
23     delay_loop 6                     #伺服器輪詢間隔時間
24     lb_algo rr                       #指定rr輪詢演算法
★     lb_kind DR                        #指定DR模式
★     net_mask 255.255.255.0                    #指定子網掩碼
27     persistence_timeout 50                   #會話保持時間
28     protocol TCP                     #指定資料轉發協議
29 
★     real_server 192.168.22.193 80 {               #RealServer1池,如有多臺複製此區域
31         weight 1                     #設定伺服器權重
★         TCP_CHECK {                       #對後端真實伺服器TCP健康檢查
33             connect_timeout 3                #連結超時時間
34             retry 3                      #重試次數
35             delay_before_retry 3             #重試時間間隔
36         }
37     }
38 
★     real_server 192.168.22.194 80 {               #RealServer2池,如有多臺複製此區域
40         weight 1                     #設定伺服器權重
★         TCP_CHECK {                       #對後端真實伺服器TCP健康檢查
42             connect_timeout 3                #連線超時時間
43             retry 3                      #重試次數
44             delay_before_retry 3             #重試時間間隔
45         }
46     }
47 }

2.啟動keepalived

chkconfig  --add  keepalived

chkconfig  keepalived  on

./keepalived  -f  /usr/local/keepalived/etc/keepalived.conf

systemctl restart keepalived

配置Keepalived備節點

1.修改主配置檔案,其他可刪除,只寫入以下內容,修改以下標★處

vim /etc/keepalived/keepalived.conf

 1 ! Configuration File for keepalived
 2 
 3 global_defs {
★    router_id kp_slave                     #指定本機keepalaved名字(主從不能重複)
 5 }
 6 
 7 vrrp_instance VI_1 {
★     state SLAVE                       #宣告成主伺服器(MASTER)/宣告成從伺服器(SLAVE)
★     interface eth0                        #定義相應網絡卡介面名稱
★     virtual_router_id 100                 #虛擬路由ID(主從應同步)
★     priority 50                       #Keepalaved主從伺服器優先順序(主伺服器必須大於從伺服器)
12     advert_int 1                     #檢查間隔,預設1秒
13     authentication {                     #定義主從驗證
14         auth_type PASS                   #設定驗證方式(PASS或HA)
15         auth_pass 1111                   #驗證密碼
16     }
17     virtual_ipaddress {                  #指定負載排程器(指定VIP的地址)
★         192.168.22.195
19     }
20 }
21 
★ virtual_server 192.168.22.195 80 {                #虛擬主機區域(指定VIP地址)
23     delay_loop 6                     #伺服器輪詢間隔時間
24     lb_algo rr                       #指定rr輪詢演算法
★     lb_kind DR                        #指定DR模式
★     net_mask 255.255.255.0                    #指定子網掩碼
27     persistence_timeout 50                   #會話保持時間
28     protocol TCP                     #指定資料轉發協議
29 
★     real_server 192.168.22.193 80 {               #RealServer1池,如有多臺複製此區域
31         weight 1                     #設定伺服器權重
★         TCP_CHECK {                       #對後端真實伺服器TCP健康檢查
33             connect_timeout 3                #連結超時時間
34             retry 3                      #重試次數
35             delay_before_retry 3             #重試時間間隔
36         }
37     }
38 
★     real_server 192.168.22.194 80 {               #RealServer2池,如有多臺複製此區域
40         weight 1                     #設定伺服器權重
★         TCP_CHECK {                       #對後端真實伺服器TCP健康檢查
42             connect_timeout 3                #連線超時時間
43             retry 3                      #重試次數
44             delay_before_retry 3             #重試時間間隔
45         }
46     }
47 }

2.修改核心引數.防止相同網路地址廣播衝突

vim /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0

sysctl -p

3.啟動keepalived 新增自啟動選單以及設定開機自啟

chkconfig  --add  keepalived

chkconfig  keepalived  on

./keepalived  -f  /usr/local/keepalived/etc/keepalived.conf

systemctl restart keepalived