Ivs+keepalived:高可用集群

Ivs+keepalived:高可用集群

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

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

lvs的高可用集群:

主调度器和备调度器(可以有多个)一主两备或一主一备。

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

VRRP:

keepalived是基于vrrp协议实现Ivs服务的高可用。解决了调度器单节点的故障问题。

VRRP协议:

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

选出主和备,预先设定好了主和备的优先级。主的优先级高。备的优先级低。一旦开启服务器,优先级高的,会自定抢占主的位置。

VRRP组播通信:

224.0.0.18 VRRP协议当中的主备服务器通过组播地址进行通信,交换主备服务器之间的运行状态。主服务会周期性的发送VRRP报文消息,以告知其他备服务器。主服务现在的状态。

主备切换:

主服务器发生故障,或者不可达,VRRP协议会把请求转义到备服务器。通过组播地址,VRRP可以迅速的通知其他服务器发生了主备切换,确保新的主服务器可以正常的处理客户端的请求。

故障恢复:

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

Ivs-DR模式结合keepalived

keepalived的体系模块:

全局模块:core模块,负载整个keepalived启动加载和维护。

VRRP模块:实现vrrp协议,主备切换。

check:负责健康检查,检查后端真实服务器的健康健康。配置真实服务器的模块当中。

Keepalived实现原理

由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务。

每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态。若

当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务。在配置时设置优先级,优先级高的那一方为master。master节点承载着VIP地址。

脑裂:

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

软件层面:

1、配置文件。

2、tcpdump抓包分析重启。

网络层面:

高可用服务器之间心跳线检测失败。主备之间无法进行通信。

硬件层面:

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

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

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

后端服务器的配置问题,心跳方式不同。心跳广播冲突。软件BUG.

如何解决keepalived脑裂的问题:

1、硬件:准备两条心跳线,这样断了一跳,依然能够传送心跳

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

  1. 监控软件,实时检测(zabbix)).

配置

test1:主调度器20.0.0.20

test2:备调度器20.0.0.21

test3后端真实服务1:20.0.0.22

test4后端真实服务2:20.0.0.31

vip地址:20.0.0.100

客户端:20.0.0.32

test1 2 yum -y install ipvsadm keepalived

test1

cp keepalived.conf keepalived.conf.bak

vim keepalived.conf

test2

test3 4 yum -y install nginx

test4

this is test2

vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0

ONBOOT=yes

IPADDR=20.0.0.100

NETMASK=255.255.255.255

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

test 3同理

nginx+keepalived配置

test1 20.0.0.20 主 test2 20.0.0.21备 test3 20.0.0.22 客户端

test1 2 yum -y install keepalived

test1

test2

test1 和 test2

this is test1 this is test2

test3 curl 20.0.0.100

相关推荐
希忘auto3 小时前
详解Redis的常用命令
redis·1024程序员节
yaosheng_VALVE19 小时前
探究全金属硬密封蝶阀的奥秘-耀圣控制
运维·eclipse·自动化·pyqt·1024程序员节
dami_king19 小时前
SSH特性|组成|SSH是什么?
运维·ssh·1024程序员节
一个通信老学姐6 天前
专业125+总分400+南京理工大学818考研经验南理工电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
sheng12345678rui6 天前
mfc140.dll文件缺失的修复方法分享,全面分析mfc140.dll的几种解决方法
游戏·电脑·dll文件·dll修复工具·1024程序员节
huipeng9267 天前
第十章 类和对象(二)
java·开发语言·学习·1024程序员节
earthzhang20217 天前
《深入浅出HTTPS》读书笔记(19):密钥
开发语言·网络协议·算法·https·1024程序员节
爱吃生蚝的于勒8 天前
计算机基础 原码反码补码问题
经验分享·笔记·计算机网络·其他·1024程序员节
earthzhang20218 天前
《深入浅出HTTPS》读书笔记(20):口令和PEB算法
开发语言·网络协议·算法·https·1024程序员节
一个通信老学姐8 天前
专业140+总分410+浙江大学842信号系统与数字电路考研经验浙大电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节