一、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、配置主调度器






(1)内置优化


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




3、配置后端真实服务器
(1)编辑访问页面

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


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

(4)修改内核参数


web2操作同上
4、测试

5、验证高可用:主备是否可以切换
(1)关闭主调度器


(2)主调度器恢复




6、验证节点服务器失效,再恢复,可以重新加入集群
(1)关闭后端服务器



(2)恢复后端服务器



7、修改负载均衡算法
(1)修改VIP的调度算法:ipvsadm -E -t 192.168.233.100:80 -s wrr

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

三、生产中的环境(补充)
(一)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的配置文件



2、编写脚本

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

3、编辑访问页面


(三)配置备服务器
1、编辑Keepalived的配置文件


2、编写脚本

3、编辑访问页面


(四)测试



(五)模拟主服务器故障
1、主服务器故障


2、恢复主服务器


