keepalived高可用 HA
原理
Virtual Route Redundancy Protocol,即虚拟路由冗余协议。
它主要是实现路由器高可用的容错协议。
将多台路由器组成路由器组(Router Group),组中包括Master及Backup,
在外部看来就像一台路由器,拥有一个VIP。Master会发送组播消息,
当Backup在指定的时间收不到vrrp包就会认为master宕掉,
然后通过VRRP协议再次竞选新的路由器当Master,从而保证路由器的高可用。
keepalived+nginx
nginx1 12.18.130.139 master
nginx2 12.18.130.138 backup
路由器vip 12.18.130.137
nopreempt 仅在身份相同才能生效 ( master backup)
=======================
测试
关闭master的keepalived,vip会飘逸到backup。完全替代master的功能,且用户无感知
缺点:
当master重新启动,则vip会再次飘逸,回到master
相当于人为制造了一次宕机
解决方案:
多台都是BACKUP,且配置nopreempt。
-------------------------------------
多台都是BACKUP ,解决了抢占问题,
但是如果nginx宕机,则keepalived运行,vip不会飘逸
为服务增加存活检测,当nginx服务宕机,则自动关闭keepalived,让vip发生飘逸
vim /etc/keepalived/nginx_check.sh
curl http://localhost:80 &> /dev/null
if [ $? -ne 0 ];then
sysetmctl stop keepalived
fi
# chmod u+x /etc/keepalived/nginx_check.sh
一、nginx 1 部署配置keepalived服务
1、部署web服务
# yum -y install nginx
1.1 修改nginx1 12.18.130.138 配置文件配置页面
# vim /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name _;
location / {
root /wed/xxy;
index index.html index.htm;
}
}
1.2 创建发布目录
# mkdir -pv /wed/xxy
1.3 写发布目录内容
# vim /wed/xxy/index.html
1.4 重启nginx
# systemctl restart nginx
2、在nginx1部署keepalived服务
# yum -y install keepalived
# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id director139
}
vrrp_script check_nginx {
script "/etc/keepalived/nginx_check.sh" #脚本
interval 1
}
vrrp_instance VI_1 {
state MASTER
nopreempt
interface ens33 # 网卡
virtual_router_id 80
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
12.18.130.137
}
track_script {
check_nginx
}
}
3.编写刷新脚本
vim /etc/keepalived/nginx_check.sh
curl http://localhost:80 &> /dev/null
if [ $? -ne 0 ];then
sysetmctl stop keepalived
fi
# chmod u+x /etc/keepalived/nginx_check.sh
二、在nginx2上部署keepalived服务
1、部署web服务
# yum -y install nginx
1.1 修改nginx1 12.18.130.139 配置文件配置页面
# vim /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name _;
location / {
root /wed/xxy;
index index.html index.htm;
}
}
1.2 创建发布目录
# mkdir -pv /wed/xxy
1.3 写发布目录内容
# vim /wed/xxy/index.html
1.4 重启nginx
# systemctl restart nginx
2、在nginx2部署keepalived服务
# yum -y install keepalived
# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id director139
}
vrrp_script check_nginx {
script "/etc/keepalived/nginx_check.sh" #脚本
interval 1
}
vrrp_instance VI_1 {
state MASTER
nopreempt
interface ens33 # 网卡
virtual_router_id 80
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
12.18.130.137
}
track_script {
check_nginx
}
}
3.编写刷新脚本
vim /etc/keepalived/nginx_check.sh
curl http://localhost:80 &> /dev/null
if [ $? -ne 0 ];then
sysetmctl stop keepalived
fi
# chmod u+x /etc/keepalived/nginx_check.sh
三、在客户端访问或浏览器访问
vip 12.18.130.137