双主和额外备用节点

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或低于备用节点
  • 重启全部节点

相关文章
相关标签/搜索