前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >24-Nginx高可用(基于Keepalived实现双主热备)

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

作者头像
彼岸舞
发布2022-09-13 09:22:37
4820
发布2022-09-13 09:22:37
举报
文章被收录于专栏:java开发的那点事

双机主备存在的问题

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

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

双主热备

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

我是用的依旧是

主: 192.168.247.136

备: 192.168.247.137

虚拟IP: 140,141

140虚拟IP 主=136, 备=137

141虚拟IP 主=137, 备=136

修改主机配置文件

代码语言:javascript
复制
! 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
    }
}

修改备用机配置文件

代码语言:javascript
复制
! 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都重启

代码语言:javascript
复制
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

成功完成双主热备架构

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 双机主备存在的问题
  • 双主热备
  • 修改主机配置文件
  • 修改备用机配置文件
  • 重启Keepalived并进行测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档