12. 配置高可用集群(双机热备)
当主 Nginx 服务器宕机之后,切换到备份 Nginx 服务器文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/20157.html
首先安装 keepalived,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/20157.html
yum install keepalived -y
复制代码
然后编辑 /etc/keepalived/keepalived.conf
配置文件,并在配置文件中增加 vrrp_script
定义一个外围检测机制,并在 vrrp_instance
中通过定义 track_script
来追踪脚本执行过程,实现节点转移:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/20157.html
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
,这里提供一个:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/20157.html
#!/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
改为比主机小。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/20157.html
设置完毕后各自 service keepalived start
启动,经过访问成功之后,可以把 Master 机的 keepalived 停掉,此时 Master 机就不再是主机了 service keepalived stop
,看访问虚拟 IP 时是否能够自动切换到备机 ip addr
。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/20157.html
再次启动 Master 的 keepalived,此时 vip 又变到了主机上。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/20157.html
作者:SHERlocked93文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/20157.html