Code前端首页关于Code前端联系我们

Nginx入门实践:配置高可用集群(两台机器热备)

terry 2年前 (2023-09-28) 阅读数 62 #未命名

12.配置高可用集群(两台机器热备)

当主用 Nginx 服务器宕机时,切换到备用 Nginx 服务器 Nginx入门到实践:配置高可用集群(双机热备)

先安装 keepalived,

yum install keepalived -y
复制代码

然后编辑 /etc/keepalived/ keepalived.conf配置文件,并在配置文件中添加vrrp_script来定义外设检测机制,并添加在中的vrrp_instance中,将track_script定义为跟踪脚本执行过程并实现节点传输:

global_defs{
   notification_email {
        acassen@firewall.loc
   }
   notification_email_from Alexandre@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30 // 上面都是邮件配置,没卵用
   router_id LVS_DEVEL     // 当前服务器名字,用hostname命令来查看
}
vrrp_script chk_maintainace { // 检测机制的脚本名称为chk_maintainace
    script "[[ -e/etc/keepalived/down ]] && exit 1 || exit 0" // 可以是脚本路径或脚本命令
    // script "/etc/keepalived/nginx_check.sh"    // 比如这样的脚本路径
    interval 2  // 每隔2秒检测一次
    weight -20  // 当脚本执行成立,那么把当前服务器优先级改为-20
}
vrrp_instanceVI_1 {   // 每一个vrrp_instance就是定义一个虚拟路由器
    state MASTER      // 主机为MASTER,备用机为BACKUP
    interface eth0    // 网卡名字,可以从ifconfig中查找
    virtual_router_id 51 // 虚拟路由的id号,一般小于255,主备机id需要一样
    priority 100      // 优先级,master的优先级比backup的大
    advert_int 1      // 默认心跳间隔
    authentication {  // 认证机制
        auth_type PASS
        auth_pass 1111   // 密码
    }
    virtual_ipaddress {  // 虚拟地址vip
       172.16.2.8
    }
}
复制代码

其中检测脚本nginx_check.sh可用:

#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];then
    /usr/sbin/nginx # 尝试重新启动nginx
    sleep 2         # 睡眠2秒
    if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
        killall keepalived # 启动失败,将keepalived服务杀死。将vip漂移到其它备份节点
    fi
fi
复制代码

复制一份到备份服务器。在备份 Nginx 配置中,将 state 更改为 BACKUP 并将 priority 更改为小于主机。

设置完成后,会启动各个服务keepalived start。访问成功后,就可以停止Master机的保活了。此时Master机不再是主机服务keepalive停止。看看访问虚拟IP地址时能否自动切换到备份机ip addr

重新启动Master的keepalive,现在VIP又变回主机了。

作者:SHERlocked93

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门