Nginx利用Keepalived提供标准的主备形式的高可用(HA)。在主机发生问题的时候这提供了故障冗余。咱们能使用额外节点扩展该功能并配置改变Keepalived提供的额外冗余和可伸缩性选项。nginx
注意:在公共云部署Nginx,推荐使用4层或TCP负载均衡器服务云提供商提供的分配流量为双主NGINX功能。安全
许多组织有冗余级别的严格要求,两个节点的主备系统可能不能知足需求。添加第三个节点配置其它两个节点宕机的接管事件,提供进一步的冗余并保证配置简单。这也容许维护节点不丢失冗余。服务器
你能以双主模式运行Nginx,在两个或更多的节点同时处理通讯。使用多个活跃IP地址达到。每一个IP地址托管一个Nginx实例,Keepalived配置确保,这些IP地址分布在两个或更多活跃节点。cookie
当托管多个服务,每一个服务的DNS名称解析为其中一个IP地址。共享服务之间的IP地址。负载均衡
使用DNS轮询映射单个DNS名到多个IP地址。性能
使用3层负载均衡设备,例如数据中心边缘负载均衡器分发3层通讯在IP地址之间。测试
双主可使用你的负载均衡集群的能力递增,但要注意,若是双主中的一个节点失效,能力将减半。你可使用双主做为安全的一种形式,当两个节点是活动的时,提供足够的资源来吸取意料以外的通讯高峰,你能使用双主在较大的集群中提供更多冗余。spa
注意,Nginx实例在负载均衡集群中不共享配置或状态。最佳性能是双主场景,确保链接从相同客户端路由到相同活跃IP地址,使用回话持久方法,例如sticky cookie,不依赖于服务器端状态。router
为了给主备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"
}
unicast_peer {
192.168.10.11
192.168.10.12
}
重启全部节点的Keepalived
依次中止Nginx服务进行测试
为了两个节点同时通讯,必须使用额外的虚拟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"
}
重复执行备用节点的步骤
重启全部节点