keepalived实现nginx高可用详解
keepalived介绍
Keepalived 是一个用于做双机热备(HA)的软件,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败切换,提高系统的可用性。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
两台机器分别安装keepalived
yum install keepalived -y
配置Keepalived
配置主服务器 keepalved.conf
cat /etc/keepalived/keepalived.conf
global_defs {
router_id nginx01
}
vrrp_script chk_nginx_proxy { #<==定义vrrp脚本,检测HTTP端口。
script "/etc/keepalived/check_nginx.sh" #<==执行脚本,当nginx服务有问题,就停掉keepalived服务。
interval 2 #<==间隔2秒。
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1qaz@WSX
}
virtual_ipaddress {
10.0.0.100
}
track_script { #触发检查
chk_nginx_proxy
}
}
配置备服务器 keepalved.conf
cat /etc/keepalived/keepalived.conf
global_defs {
router_id nginx02
}
vrrp_script chk_nginx_proxy { #<==定义vrrp脚本,检测HTTP端口。
script "/etc/keepalived/check_nginx.sh" #<==执行脚本,当nginx服务有问题,就停掉keepalived服务。
interval 2 #<==间隔2秒。
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1qaz@WSX
}
virtual_ipaddress {
10.0.0.100
}
track_script { #触发检查
chk_nginx_proxy
}
}
配置nginx脚本
分别在nginx01,nginx02上配置如下脚本
cat /etc/keepalived/check_nginx.sh
#!/bin/bash
a=$(systemctl is-active nginx)
if [ $a != active ]
then
systemctl stop keepalived
fi
chmod 755 /etc/keepalived/check_nginx.sh
启动
# 两台都是先启动nginx
systemctl start nginx
systemctl enable nginx
systemctl status nginx
# 之后再分别启动keepalived
systemctl start keepalived
systemctl enable keepalived
systemctl status keepalived
这时已经配置好了。测试是否高可用即可。

Keepalived 是一个用于做双机热备(HA)的软件,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败切换,提高系统的可用性。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
浙公网安备 33010602011771号