keepalived介绍
keepalived的作用就是检测服务器状态,如果一台服务器出现宕机或者出现问题导致不能正常提供服务的时候,keepalived就会检测到,并将出现错误的服务器从系统中剔除,同时使用备用服务器接替他的工作,当服务器能正常工作的时候,keepalived就会把服务器自动再加到服务器群中,这些都不需要手工的介入,全是keepalived自动的,需要手工介入的只有修复故障服务器!!!
keepalived时使用VRRP实现高可用功能的,VRRP(虚拟路由冗余协议),VRRP出现是为了解决静态路由单点故障问题!!它能保证当个别节点宕机时,整个网络可以不间断的运行,keepalived一方面具有配置管理lvs的功能,同时还具有lvs下面节点进行健康检查的功能,另一方面也可以实现系统网络服务的高可用功能!!1
Keepalived的功能
1,管理lvs软件 2,基于VRRP实现高可用 3,健康检查,故障切换
keepalived的工作原理
keepalived工作在tcp/ip协议层的ip层,tcp层,应用层
第三层的时候也就是网络层,keepalived会定期向服务器集群中的服务器发送ICMP包,如果发现某台服务器没有激活ip就会报告这台服务器失效,从服务器集群中把它剔除
第四层的时候也就是传输层,它是通过判断tcp端口状态来判断服务器工作是否正常
第五层的时候也就是应用层,它是以用户设定的服务运行是否正常来判断是否存活!!!
keepalived有一主一备,主的是master备的是backup,我们主的master会以广播的形式发送VRRP包,告诉backup我还在提供服务,这时backup就会收到广播,然后知道master还在继续提供服务,自己就歇息了,当我们的master一旦出现宕机或者故障的时候,就不会发送广播包,这时候backup收不到广播包,他会等待一下,最多容忍三次 ,比如master每俩秒发送一次广播,backup六秒中还没收到广播,就会把vip抢过来,它来提供服务!!
keepalived的使用
image.png
image.png
准备环境:
nginx-1:10.0.123.25(master),主机名为:master
nginx-2:10.0.123.28(backup),主机名为:backup
nginx-3:10.0.123.29(web)
2、安装配置
(1)master和backup均安装nginx
略过。。。。。。。
先做好nginx的反向代理:俩台nginx同时做web的代理
(2)master和backup均安装keepalived
yum -y install libnl libnl-devel libnfnetlink
yum install keepalived -y
systemctl restart keepalived
systemctl enable keepalived
这时候修改我们的keepalived的(master)配置文件
先移动之前的文件
mv /etc/keepalived/keepalived.conf{,.bak}
然后在主的 master主机上
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.123.25 #心跳源IP
virtual_router_id 55 #虚拟路由编号,主备要一致。同学们注意区分
priority 100 #优先级
advert_int 1 #心跳间隔
authentication { #秘钥认证(1-8位)
auth_type PASS
auth_pass 123456
}
virtual_ipaddress { #VIP
10.0.123.100/24
}
track_script { #引用脚本
chk_nginx
}
}
主的检测nginx脚本是:
vim /etc/keepalived/ck_ng.sh
#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
/usr/local/nginx/sbin/nginx
#sleep 5
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
systemctl stop keepalived
fi
fi
这时候修改我们的keepalived的(master)配置文件
先移动之前的文件
mv /etc/keepalived/keepalived.conf{,.bak}
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id 2 #设备在组中的标识,设置不一样即可
}
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 BACKUP #主或者从状态
interface ens33 #监控网卡
mcast_src_ip 10.0.123.28 #心跳源IP
virtual_router_id 55 #虚拟路由编号,主备要一致。同学们注意区分
priority 100 #优先级
advert_int 1 #心跳间隔
authentication { #秘钥认证(1-8位)
auth_type PASS
auth_pass 123456
}
virtual_ipaddress { #VIP
10.0.123.100/24
}
track_script { #引用脚本
chk_nginx
}
}
然后我们检测nginx的脚本是:
vim /etc/keepalived/ck_ng.sh
#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
/usr/local/nginx/sbin/nginx
#sleep 5
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
systemctl stop keepalived
fi
fi
然后测试 先把代理kill掉 然后查看他的vip漂移了么?如果飘逸了 就可以了














网友评论