LVS+keepalived

概念

Lvs+keepalived:高可用集群

Keepalived是为了lvs应运而生的高可用服务,lvs的调度器无法做高可用,于是keepalived这个软件,实现的是调度器的高可用

但是keepalived不是专门为了lvs集群服务的,也可以做其他代理服务器的高可用

Lvs的高可用集群:主调度器和备调度器(可以有多个)一主两备或一主一备

主调度器能够正常运行时,由主调度器进行后端真实服务器的分配处理,其余的备用调度器处于在冗余状态,也就是备用调度器不参与集群的运转,主调度器出现了故障无法运行,这个时候备调度器才会承担主调度器的功能,一旦主调度器恢复了工作,继续由主调度器进行处理,备调度器又成了冗余。

Vrrp:keepalived 是基于rrp协议实现lvs服务的高可用,解决了调度器单节点的故障问题

Vrrp协议:提高网络路由器的可靠性开发的一种协议

  1. 选举出主设备,预先设定好主和备的,主的优先级较高,备的优先级较低,一旦开启服务器,优先级高的自动抢占主的位置
  2. Vrrp组播通信:224.0.0.18 地址 ,vrrp协议当中的主备服务器通过组播地址进行通信,交换主备服务器之间的运行状态,主服务器会周期性的发送vrrp的报文消息,以通知其他备服务器主现在的状态
  3. 主备切换,主服务器发生故障,或者不可达,vrrp协议会把请求转移到被服务器,通过组播地址,vrrp可以迅速地通知其他服务器发生了主备切换,可以确保新的主服务器可以正常的处理客户端的请求,

故障恢复:一旦主服务器恢复了通信之后还是由组播地址进行通信,发现在恢复的主服务器优先级更高,会抢占原主服务器的位置,成为主服务器,调度和接受请求

Lvs-DR模式结合keepalived

Keepalived的体系模块有三个

  1. core模块:负载整个keepalived启动加载和维护
  2. Vrrp模块:实现vrrp协议,主备切换
  3. Check模块:负责健康检查,检查节点服务器(后端真实服务器)的健康检查,这个是配置真实服务器的模块当中。

配置文件内容解释

优先等级

发送报文间隔(通知间隔秒数)

检查后端服务器

工作方式要大写

0就是关掉连接保持时间

用的tcp协议

脑裂:主和备同时拥有vip地址,在高可用系统当中,联系两个节点的心跳线,如果断开,本来是一体的,动作协调的高可用系统,心跳线断开后,分裂成两个独立的个体,主要是主和备之间失去了联系,都以为是对方出现了故障。,两个调度器就像脑裂人一样开始抢占主的位置,抢占vip,于是出现了脑裂现象,主有vip,备也有vip,从而导致整个集群失败。

怎么解决脑裂?

  1. 软件层面

检查配置文件,配置文件有问题,是不是主备优先级搞错了。

Tcpdunmp抓包分析一下

简单粗暴的方式就是重启

  1. 网络层面

高可用服务器之间的心跳线检测失败,主要是主和备之间无法进行通信,导致主备抢占vip导致的

  1. 硬件层面

很复杂多种原因

连接主备之间的心跳线老化

网卡或者网卡的驱动失效,ip地址配置冲突

防火墙导致的,没配置心跳线消息的传输通道,导致检测失败

后端服务器的配置问题,心跳方式不同,心跳广播冲突(比较少见),软件bug

解决脑裂方法

1.硬件方面:准备两条心跳线,这样断一条线,依然能够传送心跳消息

2.设置防火墙一定要让心跳的消息通过

3.依靠监控软件实时监测(zabbix)。

Dev 开发环境 开发人员专用,

Sit 测试环境,测试人员使用(开发,运维)

Pre 预生产环境,一般是运维开发使用(要和最终的生产环境保持一致)

Prd 生产环境(面向用户的最终环境)

实验

Test1:主调度器 192.168.233.66

Test2:备调度器 192.168.233.67

后端真实服务器1:192.168.233.68

后端真实服务器2:192.168.233.69

第二个实验

其他代理服务器 如nginx

总结

Keepaliced

工作方式就是基于vrrp协议:

  1. 确定主备
  2. Vip地址只能有一个,出现在主服务器上
  3. Vrrp 224.0.0.18 这个是组播地址,双方发送vrrp报文,检测主的心跳(状态)
  4. 主备切换,主切换故障,vip地址会漂移到备服务器
  5. 主恢复了,vip地址要回到主
  6. 脑裂 主备都有vip 软件层面 检查配置文件,重启
  7. Keepalived 不是只能和lvs搭配,也可以和其他服务配合,实现高可用。

Keepalived工作方式 流向

相关推荐
惜.己21 小时前
Jmeter中的断言(二)
测试工具·jmeter·1024程序员节
西电研梦1 天前
考研倒计时30天丨和西电一起向前!再向前!
人工智能·考研·1024程序员节·西电·西安电子科技大学
惜.己1 天前
Jmeter中的断言(四)
测试工具·jmeter·1024程序员节
·云扬·2 天前
Java IO 与 BIO、NIO、AIO 详解
java·开发语言·笔记·学习·nio·1024程序员节
网安_秋刀鱼2 天前
PHP代码审计 --MVC模型开发框架&rce示例
开发语言·web安全·网络安全·php·mvc·1024程序员节
HUODUNYUN2 天前
小程序免备案:快速部署与优化的全攻略
服务器·网络·web安全·小程序·1024程序员节
惜.己2 天前
Jmeter的后置处理器(二)
测试工具·github·1024程序员节
惜.己3 天前
Jmeter中的断言(一)
测试工具·jmeter·1024程序员节
cainiao0806053 天前
《物理学进展》
1024程序员节·核心期刊·知网期刊·职称评审
FFDUST3 天前
C++ —— string类(上)
c语言·开发语言·数据结构·c++·stl·1024程序员节