Keepalive工作原理
2024-10-15 15:21:21
Keepalive工作原理
1.1软件介绍
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。
Keepalived采用模块化设计,不同模块实现不同的功能
Keepalivd主要有三个模块,分别是core,check,vrrp
core:是Keepalived的核心,负责主进程的启动和维护,全局配置文件的加载解析等
check:负责healthchecker(健康检查)
vrpp:VRRPD子进程,VRRPD子进程就是来实现VRRP协议的
Keepalived配置文件:
Keepalived配置文件为:keepalived.conf;
主要有三个配置区域,分别是:全局配置(Global Configuration)、VRRPD配置、LVS配置
全局配置又包括两个子配置: 全局定义(global definition) 静态IP地址/路由配置(static ipaddress/routes)
1.2Keepalived高可用原理
Keepalived高可用服务之间的故障切换转移,是通过VRRP(虚拟路由冗余协议)来实现的。
在Keepalived服务正常工作时,主master节点会不断的向备节点发送心跳信息,用来告诉备Backup节点自己还活着,当主master节点发生故障时候,就无法发送心跳信息了,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。
VRRP作用
vrrp是虚拟路由冗余协议,就是当出现单点故障问题通过竞选方式决定vip走向的一种机制
1.3Keepalived服务vrrp的工作原理
Keepalived高可用是通过vrrp协议通信的,vrrp是通过竞选机制决定主备,住的优先级高于被服务器的,所以在工作时主会优先获取所有的资源,备节点处于准备状态,当主节点宕机时候,备节点会接管主节点的资源,然后顶替主节点对外提供服务。
在 Keepalived服务对之间,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会枪占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快;
1.4出现脑裂的原因
一般来说,脑裂的发生有以下几种原因:
高可用服务器对之间心跳线链路发生故障,导致无法正常通信。
心跳线坏了(包括断了,老化)。
网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)。
心跳线间连接的设备故障(网卡及交换机)。
仲裁的机器出问题(采用仲裁的方案)。
高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输。
高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败。
其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等。
Keepalived配置里VRRP实例如果 virtual_router_id两端参数配置不一致也会导致裂脑问题发生。
1.5如何解决脑裂
①同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能传送心跳消息。
②当检测到裂脑时强行关闭一个心跳节点(这个功能需特殊设备支持,如Stonith、feyce)。相当于备节点接收不到心跳消患,通过单独的线路发送关机命令关闭主节点的电源。
③做好对裂脑的监控报警(如邮件及手机短信等或值班).在问题发生时人为第一时间介入仲裁,降低损失。
管理员可以通过手机回复对应数字或简单的字符串操作返回给服务器.让服务器根据指令自动处理相应故障这样解决故障的时间更短。
最新文章
- sha256 C语言
- 清除缓存,计算Sql Server查询效率
- 第一章:Android系统移植与驱动开发概述
- STL学习
- linux进程及进程控制
- CISA 信息系统审计知识点 [第一章. 信息系统审计过程 ]
- Android 动画之AlphaAnimation应用详解
- struts2的处理流程_2015.01.05
- OC基础(7)
- MySQL字符串类型转换时间类型
- HBuilderX——编译失败:HBuilderX 安装目录不能包括 ( 等特殊字符
- sudo brew install mongodb报错
- CF1139D Steps to One(DP,莫比乌斯反演,质因数分解)
- STL next_permutation 算法原理和自行实现
- 关于RBAC(Role-Base Access Control)的理解(转)
- Mongodb数据导出工具mongoexport和导入工具mongoimport介绍(转)
- 复刻smartbits的国产网络测试工具minismb-如何添加数据流
- Project facet jst.web.jstl has not been defined.
- Retrofit/OkHttp API接口加固技术实践(下)
- 鼓捣phantomjs,做ajax网站的信息采集
热门文章
- HDU 1847 Good Luck in CET-4 Everybody!(找规律版巴什博奕)
- div中img依据不同分辨率居中显示,超出部分隐藏
- phpcms调用指定文章内容模型的ID
- jquery带参插件函数的编写
- UVA 1152 4 Values whose Sum is 0 (枚举+中途相遇法)(+Java版)(Java手撕快排+二分)
- Python 套接字socketserver网络编程
- Bean named '...' is expected to be of type [...] but was actually of type [com.sun.proxy.$Proxy7解决方法
- spring4笔记----报错publicid systemid之间要有空格的解决方法
- a标签的使用
- supervusor常遇到的问题