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 11:00
下一篇 2017-10-30 20:00

相關推薦

  • Linux發展史

    一、從 Unix 到 Linux 這一段歷史         早在 Linux 出現之前的二十年 ( 大約在 1970 年代 , 就有一個相當穩定而成熟的操作系統存在了!那就是 Linux 的老大哥『 Unix 』是也!怎么這么說呢?!他們這兩個家伙有什么關系呀?這里就給他說一說啰!眾所皆知的,Linux 的核心是由 …

    Linux干貨 2016-10-14
  • date命令常見用法。

    date是一個非常實用的小工具,可以查看時間,并且也可以添加選項去完成自己想完成的東西。

    Linux干貨 2017-11-13
  • 破壞grub實驗之二

    刪除/etc/fstab和/boot和grub的stage1階段 [root@localhost ~]# rm -rf /boot [root@localhost ~]# rm -rf /etc/fstab  [root@localhost ~]# …

    Linux干貨 2016-09-28
  • httpd2.2基礎安裝

    編譯安裝前,首先要確認開發包組已經裝上。 開發包組: Developments tools server platform development(centos 7) 并且將apr 與 apr-unil 裝上。這是httpd 可移植運行所必須用到的組件.這里舉例說明的是httpd2.2版本。 若是安裝httpd2.4以上版本的話,還要安裝pcre庫。pcre…

    2017-04-24
  • 【聽說要寫一篇文章,我覺得標題比較長的人一定特別帥?!?

    我叫小問。 計劃是學好馬哥所教授的知識。 目標是找到一份好工作!

    Linux干貨 2016-10-23
欧美性久久久久