24-Nginx高可用(基于Keepalived实现双主热备)

本文介绍了双机主备存在的资源浪费问题,并提出通过双主热备来解决。利用Keepalived配置两台Nginx服务器,每个服务器互为主备,共享两个虚拟IP,实现负载均衡和自动故障切换。当一台服务器故障时,另一台能立即接管服务,确保服务连续性,降低资源闲置。
摘要由CSDN通过智能技术生成

双机主备存在的问题

但是使用这样的一个双机主备是存在一些问题的, 就是需要采购两台云服务器, 价格比较贵, 如果主节点从来不发生故障的话, 所有的流量其实一致都是在主节点上的, 备用机,永远都用不上. 存在资源浪费的情况

为了解决双机主备存在的问题, 推出了双主热备

双主热备

虚拟出两个虚拟IP, 两台Nginx互相为主备关系, 达成双主热备的架构

我是用的依旧是

主: 192.168.247.136

备: 192.168.247.137

虚拟IP: 140,141

140虚拟IP 主=136, 备=137

141虚拟IP 主=137, 备=136

修改主机配置文件

! Configuration File for keepalived

global_defs {
   # 路由ID, 当前安装Keepalived节点主机的标识符, 全局唯一
   router_id keep_136
}

# 检测Nginx的进程
vrrp_script check_nginx_alive {
    # 检测脚本
    script "/etc/keepalived/check_nginx_alive_or_not.sh"
    # 每2秒运行一次
    interval 2
    # 如果脚本运行成功, 则升级权重+10, 如果配置为-10, 那么脚本运行失败权重-10
    weight 10
}


# 计算机的节点
vrrp_instance VI_1 {
    # 节点状态, MASTER代表主节点 BACKUP代表备用节点
    state MASTER
    # 使用ens33网卡
    interface ens33
    # 虚拟路由ID, 保持MASTER和BACKUP一致
    virtual_router_id 51
    # 优先级/权重 100 谁的优先级高, 在MASTER宕机后, 谁就能成为MASTER
    priority 100
    # 主备之间的心跳周期 1秒
    advert_int 1
    # 认证授权, 防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 追踪Nginx脚本
    track_script {
        check_nginx_alive
    }
    # 虚拟IP
    virtual_ipaddress {
        192.168.247.140
    }
}

vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.247.141
    }
}

修改备用机配置文件

! Configuration File for keepalived

global_defs {
   # 主节点宕机后通知的邮箱
#   notification_email {
#     acassen@firewall.loc
#     failover@firewall.loc
#     sysadmin@firewall.loc
#   }
#   notification_email_from Alexandre.Cassen@firewall.loc
#   smtp_server 192.168.200.1
#   smtp_connect_timeout 30
   # 路由ID, 当前安装Keepalived节点主机的标识符, 全局唯一
   router_id keep_137
#   vrrp_skip_check_adv_addr
#   vrrp_strict
#   vrrp_garp_interval 0
#   vrrp_gna_interval 0
}

# 计算机的节点
vrrp_instance VI_1 {
    # 节点状态, MASTER代表主节点 BACKUP代表备用节点
    state BACKUP
    # 使用ens33网卡
    interface ens33
    # 虚拟路由ID, 保持MASTER和BACKUP一致
    virtual_router_id 51
    # 优先级/权重 100 谁的优先级高, 在MASTER宕机后, 谁就能成为MASTER
    priority 80
    # 主备之间的心跳周期 1秒
    advert_int 1
    # 认证授权, 防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP
    virtual_ipaddress {
        192.168.247.140
#        192.168.200.17
#        192.168.200.18
    }
}

vrrp_instance VI_2 {
    state MASTER
    interface ens33
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.247.141
    }
}

如果是正式环境部署的话, 记得在137上加上nginx自动拉起脚本

重启Keepalived并进行测试

136和137都重启

systemctl restart keepalived.service

136绑定了140

137绑定了141

访问140

140ok

访问141

141ok

手动停止136的Keepalived, 模拟故障

140自动切换为141, ok

启动140的Keepalived

自动切换回master, ok

手动停止137的Keepalived,模拟故障

141自动切换为140, ok

启动141的Keepalived

自动切回141, ok

成功完成双主热备架构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值