1. 程式人生 > >Linux九陰真經之大伏魔拳殘卷6 keepalived

Linux九陰真經之大伏魔拳殘卷6 keepalived

運算 加載 和數 ask clas uil pro mysq 監控

keepalived 介紹

Keepalived軟件期初是專為LVS負載均衡軟件設計的,用來管理並監控LVS幾區系統匯總各個服務節點的狀態,後來又加入了可以實現高可用的VRRP功能。因此Keepalived除了能管理LVS軟件外,還可以作為其他服務(例如:Nginx、Haproxy、Mysql等)的高可用解決方案軟件。

Keepalived軟件主要是通過VRRP協議實現高可用功能的。VRRP是Virtual Router Redundancy Protocol(虛擬路由冗余協議)的縮寫,VRRP協議出現的目的就是為了解決靜態路由單點故障問題的。它能夠保證當個別節點宕機時,整個網絡可以不間斷的運行。所以,Keepalived一方面具有配置管理LVS的功能,同時還具有對LVS下面節點進行健康檢查的功能,另一方面也可實現系統網絡服務的高可用功能。

高可用故障切換原理

VRRP(Virtual Router Redundancy Protocol,虛擬路由器冗余協議),VRRP是為了解決靜態路由的高可用。VRRP的基本架構
虛擬路由器由多個路由器組成,每個路由器都有各自的IP和共同的VRID(0-255),其中一個VRRP路由器通過競選成為MASTER,占有VIP,對外提供路由服務,其他成為BACKUP,MASTER以IP組播(組播地址:224.0.0.18)形式發送VRRP協議包,與BACKUP保持心跳連接,若MASTER不可用(或BACKUP接收不到VRRP協議包),則BACKUP通過競選產生新的MASTER並繼續對外提供路由服務,從而實現高可用。
Failover:故障切換,即某資源的主節點故障時,將資源轉移至其它節點的操作; Failback:故障移回,即某資源的主節點故障後重新修改上線後,將轉移至其它節點的資源重新切回的過程;

Keepalived軟件的官方站點為http://www.keepalived.org

VRRP相關術語

虛擬路由器:Virtual Router 
虛擬路由器標識:VRID(0-255)
物理路由器:
        master  :主設備
        backup  :備用設備
        priority:優先級
        VIP:Virtual IP 


工作模式:

主/備:單虛擬路徑器;
主/主:主/備(虛擬路徑器),備/主(虛擬路徑器)

工作類型:

搶占式:當出現比現有主服務器優先級高的服務器時,會發送通告搶占角色成為主服務器
非搶占式:


keepalived核心組件

vrrp stack:vrrp協議的實現 ipvs wrapper:為集群內的所有節點生成IPVS規則 checkers:對IPVS集群的各RS做健康狀態檢測 控制組件:配置文件分析器,用來實現配置文件的分析和加載 IO復用器 內存管理組件,用來管理keepalived高可用是的內存管理

安裝

從CentOS 6.4開始keepalived隨系統base倉庫提供,可以使用 yun install keepalived 安裝。

配置文件:

主配置文件:/etc/keepalived/keepalived.conf

主程序文件:/usr/sbin/keepalived

提供校驗碼:/usr/bin/genhash Unit File:keepalived.service

Unit File的環境配置文件:/etc/sysconfig/keepalived



配置文件各模塊詳解


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_DEVEL             (路由器標識,信息不是特別關鍵該不該都無所謂)
 vrrp_skip_check_adv_addr
 vrrp_strict
 vrrp_garp_interval 0

 vrrp_pmcast_group4 224.0.44.44   (添加組播地址,防止在同一網段的其他機器被多播影響)

 vrrp_gna_interval 0

 vrrp_iptables             (可在默認的全局選項中添加此條選項,防止主節點在重啟後生成iptables規則,造成)
 }                                    (主節點的再次啟用失敗)

 

vrrp_instance VI_1 {             (虛擬IP地址的設置)
state MASTER           (設置為主節點)
interface eth0               (作用哪個物理網卡上)
virtual_router_id 51   (路由器編號自定義,0-255之間的數字就可以)
priority 100                          (優先級的值0-255之間數字越大優先級越高)
advert_int 1                             (自己的心跳信息;每隔多少秒向外發布依次)
authentication {     (認證)
auth_type PASS         (認證方式:密碼認證)
auth_pass 1111               (輸入密碼;隨意字符和數字最長八位)
}

virtual_ipaddress {
    192.168.200.16          #虛擬路由IP地址,以輔助地址方式設置
    192.168.200.18/24 dev eth2 label eth2:1 #以別名的方式設置
    }
track_interface {      #配置要監控的網絡接口,一旦接口出現故障,則轉為FAULT狀態;
eth0 eth1 }

nopreempt #定義工作模式為非搶占模式;

preempt_delay 300 #搶占式模式下,節點上線後觸發新選舉操作的延遲時長;



virtual_server 192.168.200.100 443 {    #LVS配置段 ,設置LVS的VIP地址和端口
delay_loop                          #服務輪詢的時間間隔;檢測RS服務器的狀態。

lb_algo rr #調度算法,可選rr|wrr|lc|wlc|lblc|sh|dh。

lb_kind NAT #集群類型。

nat_mask 255.255.255.0 #子網掩碼,可選項。

persistence_timeout 50 #是否啟用持久連接,連接保存時長

protocol TCP #協議,只支持TCP

sorry_server <IPADDR> <PORT> #備用服務器地址,可選項

real_server 192.168.201.100 443 { #配置RS服務器的地址和端口
 weight 1                        #權重
SSL_GET {                      #檢測RS服務器的狀態,發送請求報文
url {
              path /                    #請求的URL
digest ff20ad2481f97b1754ef3e12ecd3a9cc  #對請求的頁面進行hash運算,然後和這個hash碼進行比對,如果hash碼一樣就表示狀態正常
 status_code <INT>         #判斷上述檢測機制為健康狀態的響應碼,和digest二選一即可。
 }                           #這個hash碼可以使用genhash命令請求這個頁面生成
 connect_timeout 3           #連接超時時間
nb_get_retry 3              #超時重試次數
delay_before_retry 3 #每次超時過後多久再進行連接 connect_ip <IP ADDRESS> #向當前RS的哪個IP地址發起健康狀態檢測請求 connect_port <PORT> #向當前RS的哪個PORT發起健康狀態檢測請求 bindto <IP ADDRESS> #發出健康狀態檢測請求時使用的源地址; bind_port <PORT> #發出健康狀態檢測請求時使用的源端口; }






 


添加虛擬服務器配置參數

virtual_server 10.10.10.2 1358 {
 delay_loop 6    (服務輪詢的時間間隔)
 lb_algo rr            (定義調度方法;LVS的 rr|wrr|lc|wlc|lblc|sh|dh)
 lb_kind NAT            (LVS的模型 NAT|DR|TUN)
 persistence_timeout 50    (持久連接時長)
 protocol TCP           (服務協議,僅支持TCP)

sorry_server 192.168.200.200 1358 (備用服務器地址:當所有後臺web都宕機時提供sorry界面的服務器)

real_server 192.168.200.3 1358 {         (後臺web服務器的IP地址)
weight 1            (設定權重)
HTTP_GET {
 url {
 path /testurl/test.jsp             (定義要監控的URL)
digest 640205b7b0fc66c1ea91c463fac6334c
 }
 url {
 path /testurl2/test.jsp
 digest 640205b7b0fc66c1ea91c463fac6334c
 }
 connect_timeout 3
 nb_get_retry 3
 delay_before_retry 3
 }
 }
 }













































Linux九陰真經之大伏魔拳殘卷6 keepalived