Keepalived双主热备,实现nginx集群

原理解析:

之前我们讲到 https://blog.csdn.net/qq_44299529/article/details/122987503Keepalived实现双机(主从nginx)主备高可用(1)_p&f°的博客-CSDN博客

 

这样实现双主备份的话,当有请求时,只会访问到主服务器,只要主服务器没有挂掉,那备用服务器将永远不被使用,那么也就浪费备用机资源了,这在实际生产中是绝对不允许的(除非人傻钱多没处花)。为此我们可以使用双主热备,使两个nginx互为主备(本博客实现的模式)

实际生产中,会再引入DNS轮询,也可叫做NDS的负载均衡。就像这里的话,一个域名对应两个ip,权重相同

 当用户有请求发送过来时,DNS会根据权重比例,把请求分发到两个ip(nginx)里面。

双主热备实现步骤:

1、这个是在双机主备上做的扩展,不清楚的小伙伴请看Keepalived实现双机(主从nginx)主备高可用(1)_p&f°的博客-CSDN博客

2、分别修改129和130的keepalivad配置文件

(1)修改129配置文件,再原来配置的基础上 加一个备用计算机节点配置

cd /etc/keepalived/

vim keepalived.conf    全部内容如下(增加的内容就是末尾的那部分)

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_129
}

vrrp_script check_nginx_alive{
        script "/etc/keepalived/check_nginx_alive_or_not.sh"
        interval 2 #每隔2秒运行上一行脚本
        weight 10 #如果脚本运行成功,则升级权重 +10
        # weight -10 #如果脚本运行失败,则权重 -10
}
#计算机节点
vrrp_instance VI_1 {
    # 表示的状态,当前的129为nginx的主节点,MASTER/BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens32
    # 虚拟路由id,保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉后,救能成为MASTER
    priority 100
    # 主备之间同步检测的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入(主与从相同即可)
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #调用上方写好的脚本check_nginx_alive
    track_script{
        check_nginx_alive  #追踪nginx脚本
    }

    # 虚拟ip(随便写,当要保证在同一个网段,比如我这里主机ip为192.168.217.129,那么要以192.168.217/24不变)
    virtual_ipaddress {
        192.168.217.2
    }
}

#以下为本次配置增加的内容
vrrp_instance VI_2 {
    state BACKUP
    interface ens32
    virtual_router_id 52
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {
        192.168.217.3
    }
}

 (2)同理修改130的keepalived配置文件,再原来配置的基础上 加一个主计算机节点配置

global_defs {
   #路由id:当前安装keepalived节点从机的标识符,全局唯一
   router_id keep_130
}

#计算机节点
vrrp_instance VI_1 {
    # 表示的状态,当前的130为nginx的从节点,MASTER/BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface ens32
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉后,救能成为MASTER
    priority 80
    # 主备之间同步检测的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入(主与从相同即可)
    authentication {
	auth_type PASS
        auth_pass 1111
    }
    # 虚拟ip
    #(随便写,当然我这边在虚拟机中要保证在同一个网段,比如我这里主机ip为192.168.217.129,
    #那么要以192.168.217/24不变)
    virtual_ipaddress {
        192.168.217.2
    }
}

#以下是本次配置增加的内容
vrrp_instance VI_2 {
    state MASTER
    interface ens32
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.217.3
    }
}

 3、分别重启keepalived,使配置生效

systemctl restart keepalived.service 

测试:

分别输入 ip addr 查看ens32网卡的绑定

根据原理129中应该绑定192.168.217.129和虚拟ip192.168.217.2,实测结果符合,如图。

 根据原理130中应该绑定192.168.217.130和虚拟ip192.168.217.3,实测结果符合,如图。

 页面访问虚拟ip :192.168.217.2

 假设129出现故障,我们把129的keepalived关闭

systemctl stop keepalived.service 

再次访问虚拟ip :192.168.217.2,此时互为备份的130应该被访问到,结果符合假想。如图

 再次分别输入ip addr,分别查看两边ens32的网卡绑定

129中此时没有一个虚拟ip如图:

 而130中有两个虚拟ip

 over!!!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值