Keepalived的做用是檢測服務器的狀態,若是有一臺web服務器宕機或工做出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其餘服務器代替該服務器的工做,當服務器工做正常後Keepalived自動將服務器加入到服務器羣中,這些工做所有自動完成,不須要人工干涉,須要人工作的只是修復故障的服務器.web
高可用集羣(HA High Availability Cluster)算法
做用:最大限度的保證用戶的應用程序持久,不間斷的提供服務.(實現故障轉移)vim
高可用性(HA High Availablity)是指經過儘可能縮短系統停機時間(因平常的維護操做或突發的系統崩潰等),以提升系統和應用的可用性.後端
高可用集羣最少是2個節點作出的HA集羣,有不少通俗不科學的名稱,好比 "雙機熱備","雙機互備",這樣作的好處是當服務啓動的時候,兩臺服務器一個做主(mast),另一個做從(ser),測試機每幾秒會ping主機當發現主機沒有迴應,就證實主機拓機了,那麼從機立刻會啓動相應的服務,繼續進行服務,這樣就可保證服務不間斷.安全
負載均衡集羣與高性能運算集羣(HPC),的區別?bash
負載均衡集羣:經過提升單位時間內的執行的任務數量來提升效率.
高性能運算集羣:經過提升單位時間內的執行時間來提升效率.服務器
VRRP(Virtual Router Redundancy Protocol 虛擬路由冗餘協議)簡介網絡
虛擬路由冗餘協議(Virtual Router Redundancy Protocol,簡稱VRRP)是由IETF提出的解決局域網中配置靜態網關出現單點失效現象的路由協議,1998年已推出正式的RFC2338協議標準。VRRP普遍應用在邊緣網絡中,它的設計目標是支持特定狀況下IP數據流量失敗轉移不會引發混亂,容許主機使用單路由器,以及及時在實際第一跳路由器使用失敗的情形下仍可以維護路由器間的連通性。負載均衡
VRRP是一種容錯協議,它經過把幾臺路由設備聯合組成一臺虛擬的路由設備,並經過必定的機制來保證當主機的下一跳設備出現故障時,能夠及時將業務切換到其它設備,從而保持通信的連續性和可靠性。ssh
腦分裂:與解決方法
解釋: 在一個網絡或線纜故障時致使兩個節點同時認爲自已經是惟一處於活動狀態的服務器從而出現爭用資源的狀況,這種爭用資源的場景便是所謂的"腦裂",會致使數據不完整或服務不可訪問.
解決方法:
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
1.安裝依賴
[root@localhost ~]# yum install -y gcc kernel kernel-devel openssl openssl-devel popt popt-devel
2.編譯Keepalived
[root@localhost ~]# wget http://www.keepalived.org/software/keepalived-1.4.3.tar.gz [root@localhost ~]# tar -xzvf keepalived-1.4.3.tar.gz [root@localhost ~]# cd keepalived-1.4.3/ #RHEL6中的編譯參數 [root@localhost ~]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-358.el6.x86_64 #RHEL7中的編譯參數 [root@localhost ~]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/3.10.0-123.el7.x86_64/net/ [root@localhost ~]# make && make install
[實驗環境] [類型] [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服務,啓動後會自動同步數據
1.修改主配置文件,其餘可刪除,只寫入如下內容,修改如下標★處
[root@localhost ~]# 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
[root@localhost ~]# chkconfig --add keepalived [root@localhost ~]# chkconfig keepalived on [root@localhost ~]# ./keepalived -f /usr/local/keepalived/etc/keepalived.conf [root@localhost ~]# systemctl restart keepalived
1.修改主配置文件,其餘可刪除,只寫入如下內容,修改如下標★處
[root@localhost ~]# 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.修改內核參數.防止相同網絡地址廣播衝突
[root@localhost ~]# 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 [root@localhost ~]# sysctl -p
3.啓動keepalived 添加自啓動菜單以及設置開機自啓
[root@localhost ~]# chkconfig --add keepalived [root@localhost ~]# chkconfig keepalived on [root@localhost ~]# ./keepalived -f /usr/local/keepalived/etc/keepalived.conf [root@localhost ~]# systemctl restart keepalived