Keepalived工作原理

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

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

keepalived主要有三个模块,分别是core、check和vrrp。

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

check: 负责healthchecker(健康检查),包括了各种健康检查方式,以及对应的配置的解析包括LVS的配置解析;可基于脚本检查对IPVS后端服务器健康状况进行检查。

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

keepalived配置文件:

Keepalived配置文件为:keepalived.conf;

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

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

Keepalived服务VRRP的工作原理:

Keepalived高可用对之间是通过 VRRP进行通信的, VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主宕机的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。

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

出现脑裂的原因:

  1. 高可用服务器对之间心跳线链路发生故障,导致无法正常通信。
  2. 因心跳线坏了(包括断了,老化)。
  3. 因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)
  4. 因心跳线间连接的设备故障(网卡及交换机)
  5. 因仲裁的机器出问题(采用仲裁的方案)
  6. 高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输。
  7. 高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败
  8. 其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等。

如何解决脑裂:

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

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

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

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

原文发布于微信公众号 - 大数据架构师专家(xinsz08)

原文发表时间:2018-06-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java编程技术

Druid连接池原理学习

(1)、 如果设置了maxWait或者构造函数参数传入的为true,则创建的ReentrantLock为公平锁,否者为非公平锁 (2)、 如果设置了initi...

3531
来自专栏惨绿少年

keepalived实现服务高可用

第1章 keepalived服务说明 1.1 keepalived是什么? Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集...

3400
来自专栏强仔仔

Navicat注册机万能破解

Navicat虽然很好用,但是需要破解。今天就给大家介绍一种简单有效的破解方法,也就是利用注册机软件进行暴力破解。 具体破解步骤如下: 1、下载Navicat1...

45010
来自专栏格子的个人博客

CentOS7下安装Mesos教程

Mesos是根据Linux内核相同原则而创建的,而不同点仅是在于抽象的层面。Mesos内核运行在每一个机器上,同时通过 API 为各种应用提供跨数据中心和云的资...

962
来自专栏LanceToBigData

MySQL集群(四)之keepalived实现mysql双主高可用

前面大家介绍了主从、主主复制以及他们的中间件mysql-proxy的使用,这一篇给大家介绍的是keepalived的搭建与使用! 一、keepalived简介 ...

2259
来自专栏雪胖纸的玩蛇日常

python3+django2 开发易语言网络验证(上)

1934
来自专栏CRPER折腾记

一篇不大靠谱的nginx 1.11.10配置文件

网站是前后端分离,前端打包站点部署需要自力更生,为了避免跨域问题. 选择了nginx这个知名的反向代理服务器. 这里不探究安装这种问题。。。

682
来自专栏施炯的IoT开发专栏

Windows Mobile Device Emulator In-Depth--(1)

    模拟器在Windows Mobile应用开发中的作用是越来越大了,UI的设计、程序的调试都可以用到它。本文讲述了Windows Mobile Devic...

1717
来自专栏Seebug漏洞平台

Struts2 REST 插件 XStream 远程代码执行漏洞 S2-052(CVE-2017-9805)

漏 洞 概 述 1. 漏洞信息: 2017年9月5日,Apache Struts 发布最新安全公告。Apache Struts2 的 REST 插件存在远程...

2686
来自专栏程序生活

Laravel-博客实战+踩坑laravel-blog最终的效果踩的坑

最近在学习Laravel,参考的课程是后盾网地Laravel5.2博客项目实战 下面整个项目的开发过程: laravel-blog 基于laravel5....

6375

扫码关注云+社区