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

相关推荐
fangzhanpeng1684 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心6 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u01030552712 天前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u01030552713 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝14 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u01030552714 天前
Java图像处理实战指南
人工智能·1024程序员节
u01030552715 天前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u01030552717 天前
Java实用类应用精讲
人工智能·1024程序员节
u01030552717 天前
Java I/O核心操作实战
人工智能·1024程序员节
u01030552718 天前
ArrayList操作详解与实战应用
人工智能·1024程序员节