高可用方案
keepalived heartbeat pacemaker
keepalived含义
是集群管理中保证集群高可用的一个服务软件,用来防止单点故障
keepalived的工作原理
是以VRRP(虚拟路由冗余协议)协议实现的
将N台提供相同功能的服务器组成一个服务器组,这个组里面有一个master和多个backup,
master上面有一个对外提供服务的vip(该服务器所在局域网内其他机器的默认路由为该vip),
master会发组播,当backup收不到vrrp包时就认为master宕掉了,
这时就需要根据VRRP的优先级来选举一个backup当master
环境
server1:10.0.0.134
server2:10.0.0.133
VIP:10.0.0.111
配置
server1
安装及配置keepalived
yum -y install keepalived
vim /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 10.0.0.134 #心跳源IP
virtual_router_id 55 #虚拟路由编号,主备要一致。同学们注意区分
priority 100 #优先级
advert_int 1 #心跳间隔
authentication { #秘钥认证(1-8位)
auth_type PASS
auth_pass 123456
}
virtual_ipaddress { #VIP
10.0.0.111/24
}
# track_script { #引用脚本
# chk_nginx
# }
}
systemctl start keepalived.service
安装web服务nginx
yum -y install nginx
systemctl start nginx.service
vi /usr/share/nginx/html/index.html
111
server2
安装及配置keepalived
yum -y install keepalived
vi /etc/keepalived/keepalived.conf
state MASTER改为 state BACKUP
mcast_src_ip 10.0.0.134改为backup服务器实际的IP mcast_src_ip 10.0.0.133
priority 100改为priority 99
systemctl start keepalived.service
安装web服务nginx
yum -y install nginx
systemctl start nginx.service
vi /usr/share/nginx/html/index.html
222
服务的状态和keepalived的关系
keepalived监控的是接口IP状态。无法监控服务状态
监控脚本
server1和server2
vim /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触发主备切换
systemctl stop keepalived
fi
fi
chmod +x /etc/keepalived/ck_ng.sh
进入/etc/keepalived/keepalived.conf配置文件,清楚掉其中的注释部分,重启keepalived