keepalived实战演练
环境准备:两台虚拟机,关闭防火墙,selinux,配置阿里云仓库,配置epel
192.168.88.21 (主机master)
192.168.88.22 (备用机backup)
实验说明:给主机配置一个虚拟IP192.168.88.100 当访问虚拟IP时,可以访问到nginx服务器下的项目。当主机服务器宕机时,备用机可以代替主机工作。当主机nginx服务挂掉后,实现自动启动nginx服务,保持项目可以随时访问。
一、下载 keepalived
yum -y install keepalived
二、编辑文件keepalived.conf
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id 1 #设备在组中的标识,设置不一样即可
}
vrrp_script chk_nginx { #健康检查
script "/etc/keepalived/ck_ng.sh" #检查脚本
interval 2 #检查频率.秒
weight -5 #priority减5
fall 3 #失败三次
}
#高可用集群的组员设置
vrrp_instance VI_1 { #VI_1。实例名两台路由器相同。同学们要注意区分。
state MASTER #主或者从状态
interface ens33 #监控网卡
mcast_src_ip 192.168.88.21 #心跳源IP,当前主机的ip
virtual_router_id 55 #虚拟路由编号,主备要一致。同学们注意区分
priority 100 #优先级 数值越大优先级越高
advert_int 1 #心跳间隔 单位是秒
authentication { #秘钥认证(1-8位)
auth_type PASS
auth_pass 123456
}
virtual_ipaddress { #VIP 虚拟ip
192.168.88.100/24
}
track_script { #引用脚本
chk_nginx
}
}
设置开机自启
systemctl enable keepalived.service
注明:
同理192.168.88.21备用机需要与主机在同一组
同上不同的是:
mcast_src_ip 192.168.88.21 修改为 mcast_src_ip 192.168.88.22 #心跳源IP,当前主机的ip
priority 100 修改为 priority 90 #优先级 数值越大优先级越高
state MASTER 修改为 state backup #主或者从状态
三、master backup两台添加Nginx监控脚本
vi /etc/keepalived/ck_ng.sh
#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
systemctl start nginx
sleep 5
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
service keepalived stop
fi
fi
1、给执行权限
chmod +x /etc/keepalived/ck_ng.sh
四、实战模拟
访问192.168.88.100
模拟192.168.11服务器宕机。当主机宕机时再次访问虚拟IP192.168.88.100时,这个时候备用机会替代主机工作,保持项目能正常访问
模拟主机192.168.88.21修复好后,再次访问虚拟IP192.168.88.100时,这是因为备用机的优先级小于主机,所以当主机修复时,192.168.88.22依旧是备用机。