Keepalived

一、lvs+Keepalived(高可用集群)

(一)Keepalived

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

2、Keepalived不是专门为lvs集群服务的,也可以做其他代理服务器的高可用(重点)

3、lvs的高可用集群:主调度器和备调度器(一主两备、一主一备)

4、Keepalived基于VRRP协议实现lvs服务的高可用,解决了调度器单节点的故障问题

5、工作方式:

(1)主调度器能够正常运行时,由主调度器进行后端真实服务器的分配处理,其余的备用调度器处于冗余状态(不参与集群的运转)

(2)主调度器出现故障无法运行时,备调度器才会承担主调度器的工作

(3)一旦主调度器恢复工作,继续由主调度器进行处理,备调度器又成了冗余

(二)VRRP协议

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

2、工作原理:

(1)选举出主和备(优先级),预先设定好了主和备的优先级。主的优先级较高,备的优先级较低。

(2)一旦开启服务器,优先级高的会自动抢占主的位置

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

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

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

(三)Keepalived的工作方式(基于ARRP协议)

1、确定主备

2、VIP地址只能有一个,出现在主调度器上

3、VRRP通过组播地址(224.0.0.18)发送VRRP报文,检测主调度器的心跳(状态),备调度器处于冗余状态(不参与集群的运转)

4、主备切换,主调度器出现故障,VIP地址会漂移到备调度器

5、主调度器恢复,VIP地址要回到主调度器

6、脑裂(主备都有VIP)

(1)软件层面——检查配置文件,重启

7、Keepalived不是只能和lvs搭配,也可以和其他服务配合,实现高可用

(四)脑裂(重点):主和备同时拥有VIP地址

1、脑裂的产生

(1)在高可用系统当中,联系两个节点的心跳线,本来是一体的,动作协调的高可用系统

(2)心跳线断开后,分裂成了两个独立的个体,主备之间失去了联系,都以为是对方出现了故障

(3)两个调度器就像脑裂人一样,开始抢占主的位置,抢占VIP。主有VIP地址,备也有VIP地址,导致整个集群失败

2、原因分析

(1)软件层面

①配置文件问题——重启

②通过tcpdump抓包分析

③重启两边的服务,先重启主,查看ip复制;再重启备(一般是优先级配置问题)

(2)网络层面(高可用服务器之间网络通信失败)——ping通不通

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

(3)硬件层面

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

②网卡或者网卡的驱动失效

③IP地址配置冲突

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

⑤后端服务器的配置问题,心跳方式不同、心跳广播冲突、软件bug等等

3、解决过程

(1)硬件:准备两条心跳线,断了一条,依然能够传送心跳消息

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

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

二、lvs-DR模式+Keepalived

当主调度器出现故障时,主服务器上的VIP地址会自动跳转至备调度器上

Keepalived的体系模块

1、全局模块(core模块):负责整个Keepalived的启动、加载和维护

2、VRRP模块:实现VRRP协议,主备切换

3、check模块:负责健康检查,检查节点服务器(后端真实服务器)的健康检查(配置在真实服务器的模块当中

(二)配置lvs-DR模式+Keepalived

1、配置主调度器

Keepalived_第1张图片

Keepalived_第2张图片

Keepalived_第3张图片

Keepalived_第4张图片

Keepalived_第5张图片

(1)内置优化

Keepalived_第6张图片

Keepalived_第7张图片

2、配置备调度器(远程复制)

Keepalived_第8张图片

Keepalived_第9张图片

Keepalived_第10张图片

3、配置后端真实服务器

(1)编辑访问页面

(2)基于回环接口创建虚拟网卡

Keepalived_第11张图片

(3)把VIP地址绑定到lo:0,作为lvs的VIP地址。起到标识的作用,告诉调度器,进行转发请求的IP地址寻址

(4)修改内核参数

Keepalived_第12张图片

Keepalived_第13张图片

web2操作同上

4、测试

Keepalived_第14张图片

5、验证高可用:主备是否可以切换

(1)关闭主调度器

Keepalived_第15张图片

Keepalived_第16张图片

(2)主调度器恢复

Keepalived_第17张图片

Keepalived_第18张图片

Keepalived_第19张图片

6、验证节点服务器失效,再恢复,可以重新加入集群

(1)关闭后端服务器

Keepalived_第20张图片

Keepalived_第21张图片

2恢复后端服务器

Keepalived_第22张图片

Keepalived_第23张图片

7、修改负载均衡算法

(1)修改VIP的调度算法:ipvsadm -E -t 192.168.233.100:80 -s wrr

Keepalived_第24张图片

(2)修改策略的轮询权重:ipvsadm -e -t 192.168.233.100:80 -r 192.168.233.20:80 -w 3

Keepalived_第25张图片

三、生产中的环境(补充)

(一)dev(开发环境):开发人员专用

(二)sit(测试环境):测试人员专用(开发、运维)

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

(四)prd(最终的生产环境):面向用户的最终环境

四、nginx+Keepalived(借助脚本,检测本地nginx服务状态

nginx1和nginx1:做主和备

nginx1:20.0.0.11

nginx2:20.0.0.12

客户端:20.0.0.10

(一)配置主服务器

1、编辑Keepalived的配置文件

Keepalived_第26张图片Keepalived_第27张图片

2、编写脚本

Keepalived_第28张图片

如果本地访问失败,返回非0,然后stop Keepalived

Keepalived_第29张图片

3、编辑访问页面

Keepalived_第30张图片

(三)配置备服务器

1、编辑Keepalived的配置文件

Keepalived_第31张图片

Keepalived_第32张图片

2、编写脚本

Keepalived_第33张图片

3、编辑访问页面

(四)测试

Keepalived_第34张图片

Keepalived_第35张图片

Keepalived_第36张图片

(五)模拟主服务器故障

1、主服务器故障

Keepalived_第37张图片

Keepalived_第38张图片

2、恢复主服务器

Keepalived_第39张图片

Keepalived_第40张图片

Keepalived_第41张图片

你可能感兴趣的:(1024程序员节)