HA Cluster—Keepalived

HA Cluster

  • 集群類型:LB(lvs/nginx(http/upstream, stream/upstream))、HA、HP
  • 系統可用性的公式:A=MTBF/(MTBF+MTTR)
    • 系統故障:
      • 硬件故障:設計缺陷、wear out、自然災害
      • 軟件故障:設計缺陷
    • 提升系統高用性的解決方案之降低MTTR:
      • 解決方案:冗余(redundant)
        active/passive(主備),active/active(雙主)
    • 在資源級別定義優先級,定義對資源的傾向性
    • Failover:故障切換,即某資源的主節點故障時,將資源轉移至其它節點的操作;
    • Failback:故障移回,即某資源的主節點故障后重新修改上線后,將轉移至其它節點的資源重新切回的過程;
  • HA Cluster實現方案:
    • vrrp協議的實現
      • keepalived
    • ais:完備HA集群
      • RHCS(cman)
      • heartbeat
      • corosync

keepalived

  • vrrp協議:Virtual Redundant Routing Protocol
    • 術語:
      • 虛擬路由器:Virtual Router:由一個Master路由器和多個Backup路由器組成。主機將虛擬路由器當作默認網關。
      • 虛擬路由器標識:VRID(0-255):有相同VRID的一組物理路由器構成一個虛擬路由器。用來標識路由器
      • 物理路由器:
        master:主設備 #虛擬路由器中承擔報文轉發任務的路由器。
        backup:備用設備 #master路由器出現故障時,能夠代替master路由器工作的路由器。
        priority:優先級 #指的是物理節點的優先級,vrrp根據優先級來確定虛擬路由器中每臺路由器的地位。
      • VIP:Virtual IP #虛擬路由器的IP地址。一個虛擬路由器可以擁有一個或多個IP地址。
      • VMAC:Virutal MAC 一個虛擬路由器擁有一個虛擬MAC地址。虛擬MAC地址的格式為(00-00-5e-00-01-VRID)。通常情況下,虛擬路由器回應ARP請求使用的是虛擬MAC地址,只有虛擬路由器做特殊配置的時候,才回應接口的真實MAC地址。
      • 非搶占式:只有對方故障了,才可以搶; #如果Backup路由器工作在非搶占方式下,則只要master路由器沒有出現故障,backup路由器即使隨后被配置了更高的優先級也不會成為master路由器。
      • 搶占式:只要對方的優先級比自己的低,就搶; #如果backup路由器工作在搶占方式下,當它收到vrrp報文后,會將自己的優先級與通告報文中的優先級進行比較。如果自己的優先級比當前的master路由器的優先級高,就會主動搶占成為master路由器;否則,將保持backup狀態。
    • 選舉:比較優先級
    • 通告:心跳,優先級等;周期性;
      采用組播方式發送心跳,并且對信息進行認證
    • 認證:
      • 無認證
        簡單字符認證
        MD5
    • 工作模式:
      • 主/備:單虛擬路由器;
        主/主:主/備(虛擬路由器1),備/主(虛擬路由器2)
  • keepalived:
    • vrrp協議的軟件實現,原生設計的目的為了高可用ipvs服務:
      • 基于vrrp協議完成地址流動;
      • 為ipvs集群節點生成ipvs規則(在配置文件中預先定義);
      • 為ipvs集群的各RS做健康狀態檢測;基于檢測結果完成節點管理;
      • 基于腳本調用接口通過執行腳本完成腳本中定義的功能,進而影響集群事務;
    • 組件:
      • 核心組件:
        vrrp stack
        ipvs wrapper
        checkers
      • 控制組件:
        配置文件分析器
        IO復用器
        內存管理組件
  • HA Cluster的配置前提:
    1. 各節點時間必須同步;
      ntp, chrony
    2. 確保iptables及selinux不會成為阻礙;
    3. 各節點之間可通過主機名互相通信(對keepalived非必須);建議使用/etc/hosts文件實現;
    4. 確保各節點的用于集群服務的接口支持MULTICAST通信;
      D類:224-239;
    5. 各節點之間的root用戶可以基于密鑰認證的ssh服務完成互相通信;(非必須)
  • keepalived安裝配置:
    • 程序環境:
      • 主配置文件:/etc/keepalived/keepalived.conf
      • 主程序文件:/usr/sbin/keepalived
      • Unit File:keepalived.service
      • Unit File的環境配置文件:/etc/sysconfig/keepalived
    • 配置文件組件部分:
      • GLOBAL CONFIGURATION
        • Global definitions
        • Static routes/addresses
      • VRRPD CONFIGURATION
        • VRRP synchronization group(s):vrrp同步組;把兩個虛擬路由器定義成一個同步組就能確保這兩個必須把vip放在同一個節點上;
          nat服務集群時要求使用此功能;
        • VRRP instance(s):每個vrrp instance即一個vrrp路由器;
        • VRRP腳本
      • LVS CONFIGURATION
        • Virtual server group(s)
        • Virtual server(s):ipvs集群的vs和rs;
    • 配置語法:
      • 配置虛擬路由器:
        vrrp_instance <STRING> {
              ....
          }
        • state MASTER|BACKUP:當前節點在此虛擬路由器上的初始狀態;只能有一個是MASTER,余下的都應該為BACKUP;
        • interface IFACE_NAME:綁定為當前虛擬路由器使用的物理接口;
        • virtual_router_id VRID:當前虛擬路由器的惟一標識,范圍是0-255;
        • priority 100:當前主機在此虛擬路由器中的優先級;范圍1-254;
        • advert_int 1:vrrp通告的時間間隔;主備間通告時間檢查的時間間隔,單位為s,默認1s
        • 設置認證
          authentication {
            auth_type AH|PASS
            auth_pass <PASSWORD>
          }
        • 設置VIP即虛擬IP地址
          virtual_ipaddress {            
            <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
            192.168.200.17/24 dev eth1
            192.168.200.18/24 dev eth2 label eth2:1
          }
        • 配置要監控的網絡接口,一旦接口出現故障,則轉為FAULT狀態;
          track_interface {
            eth0
            eth1
            ...
          }
        • nopreempt:定義工作模式為非搶占模式;
        • preempt_delay 300:搶占式模式下,節點上線后觸發新選舉操作的延遲時長;
        • 定義通知腳本:
          • notify_master?|:當前節點成為主節點時觸發的腳本;
          • notify_backup?|:當前節點轉為備節點時觸發的腳本;
          • notify_fault?|:當前節點轉為“失敗”狀態時觸發的腳本;
          • notify?|:通用格式的通知觸發機制,一個腳本可完成以上三種狀態的轉換時的通知;
  • ? 雙主模型示例:
! Configuration File for keepalived

  global_defs {
      notification_email {
          root@localhost
      }
      notification_email_from keepalived@localhost
      smtp_server 127.0.0.1
      smtp_connect_timeout 30
      router_id node1
  }

  vrrp_instance VI_1 {
      state MASTER
      interface ens33
      virtual_router_id 51
      priority 100
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 57ff97b2
      }
      virtual_ipaddress {
          192.168.1.80/24
      }
  }

  vrrp_instance VI_2 {
      state BACKUP
      interface ens33
      virtual_router_id 61
      priority 99
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 2222
      }
      virtual_ipaddress {
          192.168.1.90/24
      }
  }

原創文章,作者:nene,如若轉載,請注明出處:http://www.www58058.com/88138

(1)
nenenene
上一篇 2017-10-30
下一篇 2017-10-30

相關推薦

  • LNMP安裝過程中出現的問題及解決方法

    一、背景介紹    操作系統版本:centos6.8    nginx版本:nginx-1.10.2            mysql版本:mysql5.7.16    php版本:php5.6.28   由于mysql和php的…

    Linux干貨 2016-11-23
  • 運維學習筆記-Puppet之Hiera初探

    為什么使用Hiera? Puppet中的manifest同時包含靜態的代碼(判斷/循環邏輯,依賴關系,類定義,資源類型定義等等)和動態的數據(類聲明時的參數值和資源聲明時的屬性值)。說代碼是靜態的是因為如果在設計階段考慮比較全面,代碼寫成之后是很少變化的。但是數據要根據具體情況賦予不同的值。如果manifest設計的不是很靈活,比如某些數據被固化(hardc…

    Linux干貨 2016-07-07
  • 【26期】Linux第七周學習小總結

        今天給大家的分享是本周的一個有趣的小內容,LVM邏輯卷相關的,為什么分享這個內容呢?主要是剛沒有接觸或者說深入接觸Linux時,有人在群里提問,如果不用虛擬機,那Centos本身有快照嗎?當時說的答案很熱鬧,不過大部分還是傾向于沒有快照,本周學習的邏輯卷管理器章節里,就這個問題給了一個準確答案,那我們一起來看一下吧!  …

    2017-08-26
  • Linux Network Manager

    Linux Network Manager Network簡述 Switch,Router簡述 Linux Network 配置方法 ifcfg家族命令 ip家族命令 rhel7 nmcli命令 配置文件 Network簡述 Network是什么? 網絡是將分布在地理位置不同的計算機通過物理線路的連接,在網絡軟件的管理下,實現數據通信的過程。&nb…

    Linux干貨 2016-04-05
  • 管道,用戶組管理

    管道 |          把左邊的命令執行結果輸送到右邊的命令作為參數執行,可以多管道多任務執行     這就是linux的哲學思想之一,鏈接程序,共同完成復雜任務     錯誤輸出默認不能通過管道…

    Linux干貨 2016-08-04
  • ?yum源的生成與配置{ local;cdrom;http;ftp;}

    ?yum源的生成與配置{ local;cdrom;http;ftp;} 本文是繼上一篇文章“CentOS程序安裝的3種方式{ 源碼包安裝 | rpm包安裝 | yum安裝;}”的補充,上篇文章http://www.www58058.com/38812主要介紹了基于cdrom的yum源制作和配置以及歸納了詳細的yum命令。本文繼續介紹基于本地file、遠程ht…

    Linux干貨 2016-08-24
欧美性久久久久