您的位置:首页 > 运维架构 > Nginx

如何搭建高可用架构(三)--Nginx双主热备(Keepalived实现)

2017-12-15 13:05 821 查看

如何搭建高可用架构(三)–Nginx双主热备(Keepalived实现)

标签(空格分隔): 高可用架构

在上篇博文中,学习到了通过Keepalived进行双机主备。解决Nginx服务器的单点故障问题。同时也引发了其他问题:

例如:

1、备机由于如果在未发生故障的情况下,一直处于闲置状态,造成资源浪费

2、主机在高负载的情况下运行,有一定的上限。

3、如果主备机都出现宕机。如何处理?

我们先解决1、2两个问题。

造成备机资源浪费,那我们是否可以让备机也同时参与工作呢?实现Nginx集群。答案当然是可以的,通过对主备机配置两个虚拟ip,在域名解析服务器(DNS)进行轮询分配请求处理的Nginx服务器。

架构图



架构原理图

1、双击均正常工作。用户通过域名访问到DNS域名解析时,通过轮询的方式计算虚拟IP。获取对应的nginx服务器。进行请求转发操作



2、当其中的一台机器宕机之后,keepalived动态的将虚拟ip映射到另外一台nginx中工作



keepalived 配置(需配置两个虚拟IP):

一、主机配置

! Configuration File for keepalived

#全局配置
global_defs {
notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc  #指定发件人
#smtp_server 192.168.200.1                             #指定smtp服务器地址
#smtp_connect_timeout 30                               #指定smtp连接超时时间
router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}

vrrp_instance VI_1 {
state MASTER           #标示状态为MASTER 备份机为BACKUP
interface eth0         #设置实例绑定的网卡
virtual_router_id 51   #同一实例下virtual_router_id必须相同
priority 150           #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication {       #设置认证
auth_type PASS     #主从服务器验证方式
auth_pass 8888
}
virtual_ipaddress {    #设置vip
192.168.0.55       #可以多个虚拟IP,换行即可
}
}

vrrp_instance VI_2 {
state BACKUP           #标示状态为MASTER 备份机为BACKUP
interface eth0         #设置实例绑定的网卡
virtual_router_id 52   #同一实例下virtual_router_id必须相同
priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication {       #设置认证
auth_type PASS     #主从服务器验证方式
auth_pass 8888
}
virtual_ipaddress {    #设置vip
192.168.0.56       #可以多个虚拟IP,换行即可
}
}


二、备机配置

! Configuration File for keepalived

#全局配置
global_defs {
notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc  #指定发件人
#smtp_server 192.168.200.1                             #指定smtp服务器地址
#smtp_connect_timeout 30                               #指定smtp连接超时时间
router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}

vrrp_instance VI_1 {
state BACKUP           #标示状态为MASTER 备份机为BACKUP
interface eth0         #设置实例绑定的网卡
virtual_router_id 51   #同一实例下virtual_router_id必须相同
priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication {       #设置认证
auth_type PASS     #主从服务器验证方式
auth_pass 8888
}
virtual_ipaddress {    #设置vip
192.168.0.55       #可以多个虚拟IP,换行即可
}
}

vrrp_instance VI_2 {
state MASTER           #标示状态为MASTER 备份机为BACKUP
interface eth0         #设置实例绑定的网卡
virtual_router_id 52   #同一实例下virtual_router_id必须相同
priority 150           #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication {       #设置认证
auth_type PASS     #主从服务器验证方式
auth_pass 8888
}
virtual_ipaddress {    #设置vip
192.168.0.56       #可以多个虚拟IP,换行即可
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: