雙主和額外備用節點

1    介紹

Nginx利用Keepalived提供標準的主備形式的高可用(HA)。在主機發生問題的時候這提供了故障冗餘。咱們能使用額外節點擴展該功能並配置改變Keepalived提供的額外冗餘和可伸縮性選項。nginx

注意:在公共雲部署Nginx,推薦使用4層或TCP負載均衡器服務雲提供商提供的分配流量爲雙主NGINX功能。安全

2    爲何添加備用節點?

許多組織有冗餘級別的嚴格要求,兩個節點的主備系統可能不能知足需求。添加第三個節點配置其它兩個節點宕機的接管事件,提供進一步的冗餘並保證配置簡單。這也容許維護節點不丟失冗餘。服務器

3    爲何配置雙主?

你能以雙主模式運行Nginx,在兩個或更多的節點同時處理通訊。使用多個活躍IP地址達到。每一個IP地址託管一個Nginx實例,Keepalived配置確保,這些IP地址分佈在兩個或更多活躍節點。cookie

  • 當託管多個服務,每一個服務的DNS名稱解析爲其中一個IP地址。共享服務之間的IP地址。負載均衡

  • 使用DNS輪詢映射單個DNS名到多個IP地址。性能

  • 使用3層負載均衡設備,例如數據中心邊緣負載均衡器分發3層通訊在IP地址之間。測試

雙主可使用你的負載均衡集羣的能力遞增,但要注意,若是雙主中的一個節點失效,能力將減半。你可使用雙主做爲安全的一種形式,當兩個節點是活動的時,提供足夠的資源來吸取意料以外的通訊高峯,你能使用雙主在較大的集羣中提供更多冗餘。spa

注意,Nginx實例在負載均衡集羣中不共享配置或狀態。最佳性能是雙主場景,確保鏈接從相同客戶端路由到相同活躍IP地址,使用回話持久方法,例如sticky cookie,不依賴於服務器端狀態。router

4    配置添加備用節點

爲了給主備HA添加額外備用節點,執行如下步驟:事件

一、新安裝一個Nginx+Keepalived

二、從以前的備用節點複製/etc/keepalived/keepalived.conf到新節點的相同位置。

三、編輯新節點的keepalived.conf文件:

  • 下降priority,小於其它節點

  • 改變unicast_src_ip匹配新節點的主機IP

  • 在unicast_peer添加備用節點的IP,列出其它全部節點,額外節點192.168.10.12,其它兩個節點192.168.10.十、192.168.10.11。VIP是192.168.10.100。

vrrp_script chk_nginx_service {

    script  "/usr/lib/keepalived/nginx-ha-check"

    interval 3

    weight   50

}

 

vrrp_instance VI_1 {

    interface         eth0

    state             BACKUP

    priority          99

    virtual_router_id 51

    advert_int        1

    unicast_src_ip    192.168.10.12

 

    unicast_peer {

        192.168.10.10

        192.168.10.11

    }

 

    authentication {

        auth_type PASS

        auth_pass 22a2fb02fb4bc6114ef361ef3925692f

    }

 

    virtual_ipaddress {

        192.168.10.100

    }

 

    track_script {

        chk_nginx_service

    }

 

    notify "/usr/lib/keepalived/nginx-ha-notify"

}

  • 編輯其它節點的keepalived.conf文件:
    • 添加新節點IP到unicast_peer

unicast_peer {

    192.168.10.11

    192.168.10.12

}

  • 重啓全部節點的Keepalived

  •  依次中止Nginx服務進行測試

5    配置雙主

爲了兩個節點同時通訊,必須使用額外的虛擬IP。這個新VIP將活躍在以前的備用節點,所以,每一個節點活躍節點使用它們本身的VIP。爲了配置一個Nginx雙主HA,執行如下步驟:

一、編輯備用節點的keepalived.conf文件:

  • 複製整個vrrp_instance block VI_1並粘貼如下塊

  • 在新的vrrp_instance塊中:

    • 重命名vrrp_instance爲VI_2或其它惟一名稱

    • 改變virtual_router_id爲61或其它惟一值

    • 改變virtual_ipaddress爲一個在相同子網中有效的IP,在該例子中是192.168.10.101

    • 改變priority值爲100

vrrp_script chk_nginx_service {

    script  "/usr/lib/keepalived/nginx-ha-check"

    interval 3

    weight   50

}

 

vrrp_instance VI_1 {

    interface         eth0

    state             BACKUP

    priority          101

    virtual_router_id 51

    advert_int        1

    unicast_src_ip    192.168.10.10

 

    unicast_peer {

        192.168.10.11

    }

 

    authentication {

        auth_type PASS

        auth_pass 22a2fb02fb4bc6114ef361ef3925692f

    }

 

    virtual_ipaddress {

        192.168.10.100

    }

 

    track_script {

        chk_nginx_service

    }

 

    notify "/usr/lib/keepalived/nginx-ha-notify"

}

 

vrrp_instance VI_2 {

    interface         eth0

    state             BACKUP

    priority          100

    virtual_router_id 61

    advert_int         1

    unicast_src_ip    192.168.10.10

 

    unicast_peer {

        192.168.10.11

    }

 

    authentication {

        auth_type PASS

        auth_pass 22a2fb02fb4bc6114ef361ef3925692f

    }

 

    virtual_ipaddress {

        192.168.10.101

    }

 

    track_script {

        chk_nginx_service

    }

 

    notify "/usr/lib/keepalived/nginx-ha-notify"

}

  • 編輯主節點的keepalived.conf文件:
    • 重複執行備用節點的步驟

    •  設置新的vrrp_instance的priority值爲99或低於備用節點
  • 重啓全部節點

相關文章
相關標籤/搜索