一、安装keepalived
准备好两台机器
使用 yum 安装
yum install -y keepalived
二、主机配置
使用 yum 安装后的 keepalived 配置文件路径为
/etc/keepalived/keepalived.conf
编辑主机的配置文件
vim /etc/keepalived/keepalived.conf
keepalived 的配置文件中原有的内容很多,删掉 vrrp_instance VI_1 {} 内容块之后的所有内容
- global_defs
- router_id 随便起一个
- vrrp_instance ***
- *** 起一个实例名称,主备机器上需要一致
- state 主机设置为 MASTER
- interface 与机器的网卡一致,使用 ip addr 查看机器网卡
- virtual_router_id 主备需要一致
- priority 竞选主机的优先级,MASTER 的大于 BACKUP的
- advert_int 1 主备沟通时间间隔
- authentication {} 用于同组验证。
- virtual_ipaddress {} 虚拟ip地址,可以设置多个
主机配置完成后启动 keepalived
systemctl start keepalived.service
查看启动是否成功
systemctl status keepalived.service # 查看状态是否为 active
ip a # 查看网卡下的 ip 中是否有配置文件中的虚拟 ip
三、备机配置
- 修改 router_id
- vrrp_instance 实例名称和主机一致
- state 修改为 BACKUP
- virtual_router_id 和主机一致
- priority 比主机小
- authentication {} 和主机一致
- virtual_ipaddress {} 和主机一致
启动备机 keepalived。
四、测试
经过上面的配置,两台机器上的 keepalived 形成一组主备,现在测试主备功能。
- 打开windows控制台
- ping 配置的虚拟地址
ping 192.168.40.200 -t
- 停止主机的 keepalived 服务
systemctl stop keepalived.service
或
poweroff
- 观察windows的控制台,出现连接超时,之后会恢复正常。说明主备配置起作用了,当主机宕机后,备机上的服务生效。
keepalived 主备之间通过监测主机上的 keepalived 服务是否正常运行来判断主机是否宕机的,所以直接停止主机keepalived 服务,备机就会顶上去。
五、nginx + keepalived 高可用
用 nginx 做负载均衡时,一般只会在一台机器上部署 nginx,容易出现单点故障。如果要增加 nginx 机器,那么两台 nginx 需要对同样的服务进行负载均衡,要求 nginx 的 IP 也是一致的,故此需要通过 keepalived 来实现。
首先需要由一个 shell 脚本来检测 nginx 的运行情况。
cd /etc/keepalived/
vim nginx_check.sh
脚本内容
#! /bin/bash
A=`ps -C nginx --no-header |wc -l`
#echo $A
if [ $A -eq 0 ];then
echo 'nginx not running, stop keepalived!'
systemctl stop keepalived
fi
将该脚本文件修改为可执行文件
chmod +x nginx_check.sh
编辑 keepalived 配置文件
# 调用自定义监控脚本(放在 vrrp_instance 块内)
track_script {
check_nginx
}
# 自定义监控脚本
vrrp_script check_nginx {
# 脚本位置
script "/etc/keepalived/check_nginx.sh"
# 脚本执行间隔
interval 1
weight 0
}
先启动 nginx,再启动 keepalived。