keepalive的高可用集群:
代理服务器和调度器都是单点模式
keepalive就是用来实现调度器的高可用集群
keepalive的工作原理:
keepalive是专门为了lvs集群开发出来的,但是适用场景不仅仅局限于lvs,而且keepalive为后台的真实服务器做了一个健康检查,当服务不可用时,会自动移除ipvs的转发策略,服务恢复时,会自动重新把策略加入到ipvs中
基于vrrp协议实现调度器的高可用方案★★★★★
vrrp:虚拟路由的冗余协议
keepalive可以实现:
-
1、主备切换,优先级,当主故障时,可以自动切换到备,主恢复之后,如果主的优先级比备高,还是会自动的切换到主
-
2、自带故障检测和恢复功能
-
3、主备之间通过组播地址:224.0.0.18★★★★★ 互相发送健康检查报文,以确定主和备之间的通信(确定双方是否工作正常)
-
4、通过配置vip来实现集群的入口,vrrp是一个冗余协议,主在工作时,备完全不参与集群的工作,只是监听主的状态
实验:
test1:主调度器
vip地址:192.168.31.100/24
test2:备调度器
nginx1:真实服务器1
nginx2:真实服务器2
test3:访问测试的客户端
apt -y install ipvsadm keepalived
global_defs:整个vrrp的全局配置
vrrp_instanceVl_1:指定网卡设备和vip地址的模块,以及确定vrrp中主备的关系
virtual_server:指定转发到策略,以及lvs的工作模式和负载均衡算法
check:负责健康检查,只要是检查服务的端口(监控服务状态一般都是监听端口)
script:文本模式,也可以支持脚本形式的健康
router_id 主备两个不能相同
vrrp_iptables:配置了之后,keepalive重启之后,不会添加iptables的策略
1、检查配置的转发策略是否生效
2、检查主的vip地址是否生成
3、检查备服务器上是否有vip地址
4、模拟故障切换,主的vip能否飘到备服务器
5、主恢复之后,vip是否能够回到主服务器
1、故障切换,冗余模式 224.0.0.18
2、出现故障之后,vip地址永远只能出现一台调度上
keepalive可以不依赖lvs的环境实现故障切换和高可用
使用nginx实现代理服务器的高可用
-
调用nginx检查的配置
配置从可执行的脚本中来,位置一定要是绝对路径 -
interval 5
每5秒钟通过脚本检查nginx的状态
脑裂:
在HA(高可用)系统中,只要是通过vip这个机制实现的,都有可能会出现这个问题 -----------vip地址同时出现在主和备上
解决脑裂的办法:
- 1、防火墙屏蔽了主备之间224.0.0.18的报文,导致互相都收不到,就认为都已经挂起来,都认为自己是主
- 2、网卡出现故障,配置出问题,ip地址冲突
- 3、心跳线:网线之间连接故障,断开,老化
- 4、keepalived的配置文件有问题,(id相同,优先级相同,虚拟路由id不一样,state都是master主)配置的相关项出现问题(80%)
软件层面:
- 1、抓包进行定位,查看组播的报文是否正常
- 2、配置文件进行排查(网卡配置,应用配置)
硬件:
- 1、更换心跳线(网线)进行测试
- 2、网卡硬件的问题
- 3、内存和cpu,磁盘空间不足,也会出现脑裂
总结:lvs模式的比较
优缺点 | NAT | DR | TUN |
优点 | 配置简单 | 性能最好 | 支持vpn模式 |
缺点 | 性能低 | 不支持跨网段 | 只能用vpn流量进行隧道模式 |
真实服务器 | any | 必须要屏蔽arp | 必须要有vpn |
支持网络类型 | 内网 | 内网 | 内网/外网 |
真实服务器数量 | 10-30 | 100 | 100 |
keepailive:
vrrp协议实现的冗余高可用
224.0.0.18发送组播的报文
lvs的负载均衡的算法:
- rr
- wrr
- lc
- wlc
脑裂的现象是什么,脑裂的解决方法