本篇文章主要介绍keepalive的高可用实现原理,以及keepalive配合Nginx实现高可用环境的详细过程。
keepalive原理 简介Keepalived软件主要通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题,它能够保证当个别节点宕机时,整个网络可以不间断地运行。keepalived除了能够管理LVS软件外,还可以作为其他服务(Nginx,Haproxy、MySQL等)的高可用解决方案软件。
主要功能- 管理LVS负载均衡软件
- 实现对LVS集群节点健康检查的功能
- 作为系统网络服务的高可用功能
在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官方目前还是推荐用明文的方式配置认证类型和密码
两台服务器(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的日志信息;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)