高可用之KeepAlive工作原理

问题:

1.高可用解决什么问题?
解决单点故障的问题------keepalived.
(1)要有备份,从而当一个出现问题时,可以切换到另一个,解决单点故障的问题。
(2)要能够自动切换。
2.为什么要用keepalived?
1>安装和配置都简单,只有一个配置文件
2>keepalived可以实现自动切换,实现主从切换

keepalive缺点:但是如果是大规模的分布式项目的话,一般不用Keepalived,因为它只提供了简单的心跳和切换的功能,但是没有提供集群管理的功能。
优点:比较简单,方便学习和配置。

 

Keepalive工作原理

1.1软件介绍

1

Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。

Keepalived采用模块化设计,不同模块实现不同的功能

Keepalivd主要有三个模块,分别是core,check,vrrp

1

2

3

core:是Keepalived的核心,负责主进程的启动和维护,全局配置文件的加载解析等

check:负责healthchecker(健康检查)

vrpp:VRRPD子进程,VRRPD子进程就是来实现VRRP协议的

 Keepalived配置文件:

1

2

3

Keepalived配置文件为:keepalived.conf;

主要有三个配置区域,分别是:全局配置(Global Configuration)、VRRPD配置、LVS配置 

全局配置又包括两个子配置: 全局定义(global definition) 静态IP地址/路由配置(static ipaddress/routes)

 1.2Keepalived高可用原理

1

2

Keepalived高可用服务之间的故障切换转移,是通过VRRP(虚拟路由冗余协议)来实现的。

在Keepalived服务正常工作时,主master节点会不断的向备节点发送心跳信息,用来告诉备Backup节点自己还活着,当主master节点发生故障时候,就无法发送心跳信息了,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web 服务器的状态。 Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:

Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。

Layer4:Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

Layer5:Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。

 

 VRRP作用

1

vrrp是虚拟路由冗余协议,就是当出现单点故障问题通过竞选方式决定vip走向的一种机制

 1.3Keepalived服务vrrp的工作原理

1

2

Keepalived高可用是通过vrrp协议通信的,vrrp是通过竞选机制决定主备,主的优先级高于备服务器的,所以在工作时主会优先获取所有的资源,备节点处于准备状态,当主节点宕机时候,备节点会接管主节点的资源,然后顶替主节点对外提供服务。

在 Keepalived服务对之间,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会枪占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快;

 

 

 1.4出现脑裂的原因

一般来说,脑裂的发生有以下几种原因:

1

2

3

4

5

6

7

8

9

高可用服务器对之间心跳线链路发生故障,导致无法正常通信。

心跳线坏了(包括断了,老化)。

网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)。

心跳线间连接的设备故障(网卡及交换机)。

仲裁的机器出问题(采用仲裁的方案)。

高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输。

高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败。

其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等。

Keepalived配置里VRRP实例如果 virtual_router_id两端参数配置不一致也会导致裂脑问题发生。

1.5如何解决脑裂

1

2

3

4

①同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能传送心跳消息。

②当检测到裂脑时强行关闭一个心跳节点(这个功能需特殊设备支持,如Stonith、feyce)。相当于备节点接收不到心跳消息,通过单独的线路发送关机命令关闭主节点的电源。

③做好对裂脑的监控报警(如邮件及手机短信等或值班).在问题发生时人为第一时间介入仲裁,降低损失。

管理员可以通过手机回复对应数字或简单的字符串操作返回给服务器.让服务器根据指令自动处理相应故障这样解决故障的时间更短。

转载:https://www.cnblogs.com/charon2/p/10421285.html

https://blog.csdn.net/ginny97/article/details/103760598

https://www.cnblogs.com/zhangxingeng/p/10595058.html

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值