24、Keepalived高可用介绍
24.1、什么是keepalived:
Keepalived 软件起初是专为 LVS 负载均衡软件设计的,用来管理并监控 LVS 集群系统中各个服务节点的状态,后来又加入了可以实现高可用的 VRRP 功能。
因此,Keepalived除了能够管理 LVS 软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。
Keepalived 软件主要通过 VRRP 协议实现高可用功能的,VRRP 是 Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的
就是为了解决动态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断的运行。所以,Keepalived 一方面具有配置管理 LVS 的功能,
同时还具有对 LVS 下面节点进行健康检查的功能,另一方面也可以实现系统网络服务的高可用功能。
Keepalived 软件的官方站点: http://www.keepalived.org
24.2、keepalived服务的三个重要功能:
1、管理lvs负载均衡软件:
早期的 LVS 软件,需要通过命令行或脚本实现管理,并且没有针对 LVS 节点的健康检查功能。为了解决 LVS 的这些使用不便的问题,Keepalived就诞生了,
可以说,Keepalived软件起初是专为了解决 LVS 的问题而诞生的。因此,Keepalived和LVS的感情很深,它们的关系如同夫妻一样,可以紧密的结合,愉快
的工作。Keepalived 可以通过读取自身的配置文件实现通过更底层的接口直接管理 LVS 的配置以及控制服务的启动、停止等功能,这使得 LVS 的应用就更
加简单方便了。
2、实现对lvs集群节点健康检查功能(healthcheck):
Keepalived 可以通过在自身的keepalived.conf文件里配置 LVS 的节点 IP 和相关参数实现对 LVS 的直接管理;除此之外,当 LVS 集群中的某一个甚至是几
个节点服务器同时发生故障无法提供服务时,Keepalived 服务会自动将失效的节点服务器从 LVS 的正常转发队列中清楚出去,并转换到别的正常节点服务器
上,从而保证最终用户的访问不受影响;当故障的节点服务器被修复后,Keepalived 服务又会自动地把它们加入到正常转发队列中,对客户提供服务。
3、作为系统网络服务的高可用功能(failover):
Keepalived 可以实现任意两台主机之间,例如 Master 和 Backup 主机之间的故障转移和自动切换,这个主机可以是普通的不能停机的业务服务器,也可以
是 LVS 负载均衡、Nginx 反向代理这样的服务器。Keepalived 可以实现任意两台主机之间,例如 Master 和 Backup 主机之间的故障转移和自动切换,这个
主机可以是普通的不能停机的业务服务器,也可以是 LVS 负载均衡、Nginx 反向代理这样的服务器。
4、keepalived高可用功能实现的原理为:
两台主机同时安装好 keepalived 软件并启动服务,开始正常工作时,由角色为 Master 的主机获得所有资源并对用户提供服务,角色 Backup 的主机作为
Master 主机的热备;当角色为 Master 的主机失效或出现故障时,角色为 Backup 的主机将自动接管 Master 主机的所有工作,包括接管 VIP 资源及相应资
源服务;而当角色为 Master 的主机故障修复后,又会自动接管回它原来处理的工作,角色为 Backup 的主机则同时释放 Master 主机失效它接管的工作,此
时,两台主机将恢复到最初启动时各自的原始角色及工作状态。
24.3、keepalived高可用故障切换转移原理:
Keepalived 高可用服务对之间的故障切换转移,是通过 VRRP 协议(虚拟路由冗余协议)来实现的。在 Keepalived 服务正常工作时,主 Master 节点会不断
地向备节点发送(多播的方式)心跳消息,用以告诉备 Backup 节点自己还活着,当主 Master 节点发生故障时,就无法发送心跳消息了,备节点也就因此无法
继续检测到来自Master 节点的心跳了,进而调用自身的接管程序,接管主 Master 节点的 IP 资源及服务。而当主 Master 节点恢复时,备 Backup 节点又会释
放主节点故障时自身接管的 IP 资源及服务,恢复到原来备用角色。
24.4、vrrp协议:
VRRP 协议,全称 Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP 的出现就是为了解决静态路由的单点故障问题,VRRP 协议是通
过一种竞选机制来将路由的任务交给某台 VRRP 路由器的。VRRP 协议早期是用来解决交换机、路由器等设备单点故障的。
1、vrrp原理描述(同样适用于keepalived的工作原理):
在一组 VRRP 路由器集群中,有多台物理 VRRP 路由器,但是这多台物理的机器并不是同时工作的,而是由一台称为 MASTER 的机器负责路由工作,其他的机器
都是 BACKUP。MASTER 角色并非一成不变,VRRP 协议会让每个 VRRP 路由参与竞选,最终获胜的就是 MASTER。MASTER 拥有虚拟路由器的 IP 地址,我们
把这个 IP 地址称为 VIP,MASTER 负责转发发送给网关地址的数据包和响应 ARP 请求。
2、vrrp是如何工作的:
VRRP 协议通过竞选机制来实现虚拟路由器的功能,所有的协议报文都是通过 IP 多播(默认的多播地址:224.0.0.18)形式进行发送。虚拟路由器由 VRID (范围
0-255)和一组 IP 地址组成,对外表现为一个周知的 MAC 地址:00-00-5E-00-01-{VRID}。所以,在一个虚拟路由器中,不管谁是 MASTER,对外都是相同的
MAC 地址和 IP 地址,如果其中一台虚拟路由器宕机,角色发生切换,那么客户端并不需要因为 MASTER 的变化修改自己的路由设置,可以做到透明的切换。这
样就实现了如果一台机器宕机,那么备用的机器会拥有 MASTER 上的 IP 地址,实现高可用功能。
3、vrrp是如何通信的:
在一组虚拟路由器中,只有作为 MASTER 的 VRRP 路由器会一直发送 VRRP 广播包,此时 BACKUP 不会抢占 MASTER 。当 MASTER 不可用时,这个时候
BACKUP 就收不到来自 MASTER 的广播包了,此时多台 BACKUP 中优先级最高的路由器会去抢占为 MASTER。这种抢占是非常快速的(可能只有1秒甚至更少),
以保证服务的连续性。出于安全性考虑,VRRP 数据包使用了加密协议进行了加密。
24.5、keepalived高可用服务脑裂问题:
1、什么是脑裂:
由于某些原因,导致两台高可用服务器在指定时间内无法检测到对方的心跳消息,各自取得资源及服务的所有权,而此时的两台高可用服务器都还活着并在正常运行,
这样就会导致同一个 IP 或服务在两端同时存在发生冲突,最严重的是两台主机占用同一个 VIP 地址,当用户写入数据时可能会分别写入到两端,这可能会导致服务器
两端的数据不一致或造成数据丢失,这种情况就被称为脑裂。
2、导致脑裂发生的原因:
(1)高可用服务器之间心跳线链路故障,导致无法正常通信:
1)心跳线坏了(包括断了,老化)。
2)网卡及相关驱动坏了,IP 配置及冲突问题(网卡直连)。
3)心跳线连接的设备故障(网卡及交换机)。
(2)高可用服务器上开启了 iptables 防火墙阻挡了心跳消息传输。
(3)高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败。
(4)其他服务配置不当等原因,如心跳方式不同,心跳广播冲突、软件 BUG等。
注意:Keepalived 配置里同一 VRRP 实例如果 virtual_router_id 参数两端配置不一致,也会导致脑裂问题发生。
3、解决脑裂的具体方案:
(1)同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能够传送心跳消息。
(2)当检测到脑裂时强行关闭一个心跳节点(这个功能需要特殊设备支持,如Stonith、fence)。相当于备节点接收不到心跳消息,发送关机命令通过单独的线路关
闭主节点的电源。
(3)做好对脑裂的监控报警(如邮件及手机短信等或值班),在问题发生时人为第一时间介入仲裁,降低损失。例如,百度的监控报警短信就有上行和下行的区别。
报警信息报到管理员手机上,管理员可以通过手机回复对应数字或简单的字符串操作返回给服务器,让服务器根据指令自动处理相应故障,这样解决故障的时间更短。
(4)如果开启防火墙,一定要让心跳消息通过,一般通过允许 IP 段的形式。
24、Keepalived高可用介绍的更多相关文章
- Keepalived高可用集群介绍
1.Keepalived服务介绍 Keepalived起初是专为LVS设计的,专门用来监控LVS集群系统中各个服务节点的状态,后来又加入了VRRP的功能,因此除了配合LVS服务外,也可以为其他服务(n ...
- 高可用群集HA介绍与LVS+keepalived高可用群集
一.Keepalived介绍 通常使用keepalived技术配合LVS对director和存储进行双机热备,防止单点故障,keepalived专为LVS和HA设计的一款健康检查工具,但演变为后来不仅 ...
- keepalived高可用
keepalived介绍 Keepalived是一个基于vrrp协议的高可用方案,vrrp协议的软件实现,原生设计的目的为了高可用ipvs服务. 1. vrrp协议 VRRP是一种容错协议,它通过把几 ...
- 案例一(haproxy+keepalived高可用负载均衡系统)【转】
1.搭建环境描述: 操作系统: [root@HA-1 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 地址规划: 主机名 IP地址 集群角 ...
- keepalived高可用集群。
keepalived故障切换转移原理1vrrp协议:(vritual router redundancy protocol)虚拟路由冗余协议,2故障转移.keepalived三大功能1实现物理高可用, ...
- LVS+Keepalived 高可用环境部署记录(主主和主从模式)
之前的文章介绍了LVS负载均衡-基础知识梳理, 下面记录下LVS+Keepalived高可用环境部署梳理(主主和主从模式)的操作流程: 一.LVS+Keepalived主从热备的高可用环境部署 1)环 ...
- Linux系统——Keepalived高可用集群
#### keepalived服务的三个重要功能1. 管理LVS负载均衡软件Keepalived可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动,停止功能,这使得 ...
- Linux实战教学笔记31:Keepalived高可用集群应用实践
1.1 Keepalived高可用软件 1.1.1 Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入 ...
- Keepalived高可用集群应用
Keepalived高可用集群应用 1.keepalived服务说明 1.1.keepalived介绍 Keepalived是一个用C语言编写的路由软件.该项目的主要目标是为Linux系统和基于Lin ...
随机推荐
- [bug] org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 2
原因 SpringBoot启动加载yml配置文件出现编码格式错误 参考 https://www.pianshen.com/article/2431144034/
- Win10屏幕亮度不能调节,调节无效怎么办?
Win10屏幕亮度不能调节,调节无效怎么办? 听语音 浏览:1027 | 更新:2019-11-22 11:43 1 2 3 4 5 6 7 分步阅读 一些用户在使用win10系统之后,出现了电脑屏幕 ...
- 001.Ansible简介与基本安装
一 自动化运维 1.1 运维的自动化发展历程 IAAS:infratructure as a Service PAAS:platform as a Service 平台及服务 SAAS:softwar ...
- exit()和_exit()的区别
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/HAHAandHEHE/article/de ...
- Step By Step(Lua输入输出库)
Step By Step(Lua输入输出库) I/O库为文件操作提供了两种不同的模型,简单模型和完整模型.简单模型假设一个当前输入文件和一个当前输出文件,他的I/O操作均作用于这些文件.完整模型则使用 ...
- 学习Python中出现的错误集合(不定时更新)jupyter平台
出现的问题:1. 本图的错误,一个是line 7 init的两侧应该是是双下划线"__"导致所示错误 2. 本图的错误是 line 12 Student.student_tatal ...
- NVIDIA数据中心深度学习产品性能
NVIDIA数据中心深度学习产品性能 在现实世界的应用程序中部署AI,需要训练网络以指定的精度融合.这是测试AI系统的最佳方法-准备将其部署在现场,因为网络随后可以提供有意义的结果(例如,对视频流正确 ...
- YOLO v1到YOLO v4(下)
YOLO v1到YOLO v4(下) Faster YOLO使用的是GoogleLeNet,比VGG-16快,YOLO完成一次前向过程只用8.52 billion 运算,而VGG-16要30.69bi ...
- PyTorch 图像分类
PyTorch 图像分类 如何定义神经网络,计算损失值和网络里权重的更新. 应该怎么处理数据? 通常来说,处理图像,文本,语音或者视频数据时,可以使用标准 python 包将数据加载成 numpy 数 ...
- GPU编程和流式多处理器(二)
GPU编程和流式多处理器(二) 2. 整数支持 SM具有32位整数运算的完整补充. 加法运算符的可选否定加法 乘法与乘法加法 整数除法 逻辑运算 条件码操作 to/from浮点转换 其它操作(例如,S ...