前言
本篇文章主要介绍keepalive的高可用实现原理,以及keepalive配合Nginx实现高可用环境的详细过程。
keepalive原理
简介
Keepalived软件主要通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题,它能够保证当个别节点宕机时,整个网络可以不间断地运行。keepalived除了能够管理LVS软件外,还可以作为其他服务(Nginx,Haproxy、MySQL等)的高可用解决方案软件。
主要功能
- 管理LVS负载均衡软件
- 实现对LVS集群节点健康检查的功能
- 作为系统网络服务的高可用功能
keepalive作为高可用故障切换转移原理
在Keppalived服务正常工作时,主Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活着,当主Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的IP资源及服务。而当主Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。
VRRP,全称Virtual Router Redundancy Protocol,虚拟路由冗余协议,VRRP的出现就是为了解决静态路由的单点故障问题,VRRP是通过一种竞选机制来将路由任务交给某台VRRP路由器的。
在一组虚拟路由器中,只有作为Master的VRRP路由器会一直发送VRRP广播包(VRRP Advertisement messages),此时Backup不会抢占Master。当Master不可用时,Backup就收不到来自Master的广播包了,此时多台Backup中优先级最高的路由器会抢占为Master。这种抢占非常快速的,以保证服务的连续性,处于安全性考虑,VRRP数据包使用了加密协议进行加密。
总结就是下面五句话:
(1)VRRP,全称:Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。
(2)VRRP是通过一种竞选协议机制来将路由任务交给某台VRRP路由器的
(3)VRRP是IP多播的方式,实现高可用对之间的通信。
(4)工作时主节点发包,备节点接包,当备节点接受不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般Keepalived系统运维工作中都是一对。
(5)VRRP使用了加密协议加密数据,但keepalived官方目前还是推荐用明文的方式配置认证类型和密码
keepalive高可用环境搭建
环境准备
两台服务器(10.11.130.194,10.11.130.196)
web服务:10.11.130.194:8080,10.11.130.196:8080 (步骤忽略)
Nginx服务:10.11.130.194:8989,10.11.130.196:8989(步骤忽略)
VIP:10.11.130.192
keepalive 安装包
安装
解压keepalive的安装包,或安装rpm包,处理相关依赖
进入 /etc/keepalived,修改下面的配置文件keepalived.conf:
global_defs {
router_id cs_196
}
vrrp_script check_run {
script "/opt/itxkp/sbin/nginx_check.sh" #检测的脚本
interval 5
}
vrrp_sync_group VG1 {
group {
VI_1
}
}
vrrp_instance VI_1 {
state MASTER #设置主从,MASTER为主,BACKUP为从
interface p4p1 # 网卡
virtual_router_id 100 #主从一定要一样
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 123456
}
track_script {
check_run #检测的脚本
}
virtual_ipaddress {
10.11.130.192 #虚拟ip
}
}
- keepalived.conf 需要赋权664,命令为:chomd 664 keepalived.conf
- 其中 /opt/itxkp/sbin/nginx_check.sh 的脚本为健康检测脚本(可百度搜),没有的话 可以创建,需要赋权 777,否则会报错:configure is not a regular non-executable file , 赋权命令:chomd 777 nginx_check.sh
- 配置完成,启动服务 systemctl start keepalived.service
- 通过 ip addr 命令,可以查看 是否配置成功;
-
浏览器访问:10.11.130.192:8989
-
另外一台服务(10.11.130.196)安装过程同理 ,除了网卡、state 不通外,其他都相同;
-
如果将194的Nginx的服务关掉,该VIP会自动飘移至另外一台196上面, ip addr 可以查看;
-
浏览器再次访问:10.11.130.192:8989时,此次页面为196提供的服务;可通过 /var/log/message 文件查看keepalive的日志信息;