keepalived 功能 、原理、裂腦


  1. 簡介:c#

    1. keepalived設計之初是專爲LVS負載均衡軟件設計的,用來管理和監控LVS集羣系統中的各個服務節點狀態,,後來加入實現高可用的VRRP功能。經過vrrp協議實現高可用功能的服務器

  2. 經常使用的功能網絡

    1. 管理LVS負載均衡軟件負載均衡

    2. 對LVS集羣節點健康檢查功能ide

    3. 系統網絡服務的高可用功能加密

  3. 原理:keepalived是經過vrrp來實現服務器之間的故障切換轉移的,keepalived在正常服務時,主master節點會不斷的向備backup節點發送心跳信息(多播的形式),告訴備節點本身還活着,當主節點發生故障時,就沒法向備節點發送心跳信息,當備節點沒法接收到主節點的心跳信息時,調用自身的接管程序,接管主節點的ip服務資源,當主節點恢復時,備節點會釋放主節點故障時自身接管的ip服務資源,回覆到備用角色。spa

  4. vrrp:虛擬路由冗餘協議;主要是解決靜態路由的單點故障問題,其是經過競選機制來肯定將路由的任務交給某臺vrrp路由器的。設計

    1. vrrp是經過ip多播的方式實現高可用之間的通訊;router

    2. vrrp經過加密協議對數據進行加密,keepalived使用的是明文方式配置認證類型和密碼server

    3. vrrp在正常工做時,是主節點發包,備節點接包,當備節點沒有接受到包時,經過競選,啓動接管機制,接管主節點的資源,通常而言,備節點能夠有多個,在使用keepalived時,通常是一主一備。

  5. 裂腦:

    1. 何爲裂腦:

      1. 因爲某種緣由,致使兩臺高可用服務器在指定是時間內,沒法檢測到對方的心跳信息,各自取得資源及服務特權,此時兩臺高可用服務器都還正常運行,致使ip或者服務在兩端同時存在而發生衝突。

    2. 緣由

      1. 高可用服務器之間心跳線鏈路故障

        1. 心跳線壞了

        2. 網卡及相關驅動壞了

        3. 心跳線間鏈接設備故障

      2. 開啓iptables,阻擋了心跳信息的傳輸

      3. 心跳網卡地址等信息不正確,致使發送心跳信息失敗

    3. 預防:

      1. 同時使用串行電纜和以太網電纜鏈接,同時使用兩條心跳線

      2. 作好監控報警

      3. 當有腦裂時,強行關閉一個心跳節點

  6. 有關網絡高可用的配置(單實例主備):

    1. 採用yum安裝,配置文件爲/etc/keepalived/keepalived.conf

    2. global_defs {              							global_defs {                                                      
         notification_email { 									    notification_email {
           acassen@firewall.loc 								    acassen@firewall.loc
           failover@firewall.loc   								    failover@firewall.loc
           sysadmin@firewall.loc   								    sysadmin@firewall.loc
         }                                      		}
         notification_email_from Alexandre.Cassen@firewall.loc 			notification_email_from Alexandre.Cassen@firewall.loc
         smtp_server 192.168.200.1    							    smtp_server 192.168.200.1
         smtp_connect_timeout 30   								    smtp_connect_timeout 30 
         router_id LVS_DEVEL  									    router_id LVS_DEVEL1
         vrrp_skip_check_adv_addr 								    vrrp_skip_check_adv_addr
         #vrrp_strict   									    #vrrp_strict
         vrrp_garp_interval 0  									    vrrp_garp_interval 0
         vrrp_gna_interval 0  									    vrrp_gna_interval 0
      }												}											                                                                 													   
      
      vrrp_instance VI_1 {                            			vrrp_instance VI_1 {    
          state MASTER                                			state  BACKUP                                     
          interface ens33                               			interface ens33                          
          virtual_router_id 51                            			virtual_router_id 51
          priority 100                               			priority 90
          advert_int 1                                			advert_int 1
          authentication {                              			authentication {
              auth_type PASS                             		    auth_type PASS
              auth_pass 1111                             		    auth_pass 1111
          }                                      			}
          virtual_ipaddress {                             			virtual_ipaddress {
              10.0.0.3/24 dev ens33 label ens33:0                    		    10.0.0.3/24 dev ens33 label ens33:0
          }                                       			}
      }                                                 }
    3. router_id LVS_DEVEL  router_id LVS_DEVEL1
    4. state MASTER            state  BACKUP
    5. priority 100            priority 90
    6.  #vrrp_strict‘’
    7. systemctl start keepalived

注意: c  d  e注意區別,f改行要註釋掉,原配置文件中沒有註釋,不註釋可能存在問題。這樣就能夠實現高可用了。

相關文章
相關標籤/搜索