Nginx入门实践:配置高可用集群(两台机器热备)
12.配置高可用集群(两台机器热备)
当主用 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前端网发表,如需转载,请注明页面地址。
code前端网