Lvs+keepalived:高可用集群
Keepalived是为了lvs应运而生的高可用服务,lvs的调度器无法做高可用,于是keepalived这个软件,实现的是调度器的高可用
但是keepalived不是专门为了lvs集群服务的,也可以做其他代理服务器的高可用
Lvs的高可用集群:主调度器和备调度器(可以有多个)一主两备或一主一备
主调度器能够正常运行时,由主调度器进行后端真实服务器的分配处理,其余的备用调度器处于在冗余状态,也就是备用调度器不参与集群的运转,主调度器出现了故障无法运行,这个时候备调度器才会承担主调度器的功能,一旦主调度器恢复了工作,继续由主调度器进行处理,备调度器又成了冗余。
Vrrp:keepalived 是基于rrp协议实现lvs服务的高可用,解决了调度器单节点的故障问题
Vrrp协议:提高网络路由器的可靠性开发的一种协议
故障恢复:一旦主服务器恢复了通信之后还是由组播地址进行通信,发现在恢复的主服务器优先级更高,会抢占原主服务器的位置,成为主服务器,调度和接受请求
Lvs-DR模式结合keepalived
Keepalived的体系模块有三个
配置文件内容解释
优先等级
发送报文间隔(通知间隔秒数)
检查后端服务器
工作方式要大写
0就是关掉连接保持时间
用的tcp协议
脑裂:主和备同时拥有vip地址,在高可用系统当中,联系两个节点的心跳线,如果断开,本来是一体的,动作协调的高可用系统,心跳线断开后,分裂成两个独立的个体,主要是主和备之间失去了联系,都以为是对方出现了故障。,两个调度器就像脑裂人一样开始抢占主的位置,抢占vip,于是出现了脑裂现象,主有vip,备也有vip,从而导致整个集群失败。
怎么解决脑裂?
检查配置文件,配置文件有问题,是不是主备优先级搞错了。
Tcpdunmp抓包分析一下
简单粗暴的方式就是重启
高可用服务器之间的心跳线检测失败,主要是主和备之间无法进行通信,导致主备抢占vip导致的
很复杂多种原因
连接主备之间的心跳线老化
网卡或者网卡的驱动失效,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协议:
Keepalived工作方式 流向