- keepalived软件介绍:
- keepalived起初是专门针对LVS负载均衡设计的一款强大的辅助工具,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。
- keepalived的作用是检测服务器的状态,如果在高可用的集群中keepalived检测到主服务器宕机的话,会将主服务器在群集中剔除,同时将备份服务器来替代主服务器的工作,当主服务器工作恢复正常时,keepalived会自动将主服务器加入到集群中,恢复主服务器的工作。
- keepalived的工作原理:
- keepalived高可用服务器之间的故障切换转移,是通过VRRP(虚拟路由器冗余协议)来实现,在keepalived服务正常工作时,主服务器会不断的向备服务器发送心跳信息,用以告诉备服务器自己还活着,当主服务器发生故障时,就无法发送心跳信息,备服务器就因此无法继续检测来自主服务器的心跳了,于是便开始接管程序,代替主服务的工作,当主服务器节点恢复正常时,备服务器又会停止接管工作,主服务器继续工作。
- keepalived体系主要模块及其作用:
- keepalived体系架构中主要有三个模块,分别是core、check、和vrrp。
- core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
- vrrp模块:是来实现VRRP协议
- check模块:负责健康检查,常见方式有端口检查及URL检查
- keepalived体系架构中主要有三个模块,分别是core、check、和vrrp。
- VRRP协议:
- 公有协议,与它类似的协议还有HSRP(热备份路由协议),HSRP属于思科的私有协议。
- 中文名称虚拟路由冗余协议
- vrrp是通过一种竞选协议机制来将路由任务交给某台vrrp路由器的。(优先级的比较)
- vrrp用ip多播的方式(默认地址为:224.0.0.18)实现高可用之间通信
- 工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候(时间间隔超过同步通知间隔时间的三倍时),就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般 Keepalived系统运维工作中都是一对。
- VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码
- 介绍完keepalived之后接下来请看本章实验需要部署的环境:
- 环境准备(本章实验是在两台LB服务器上实现高可用群集):
- MASTER/LB1 IP:192.168.8.5
- BACKUP/LB2 IP: 192.168.8.8
- WEB1 IP:192.168.8.6
- WEB2 IP:192.168.8.7
- 实验目标:对两台负载均衡调度器之间部署高可用群集,一台MASTER,一台BACKUP,实现故障切换,保证了高可用性。
- 实验步骤:
- 1.对LB1服务器部署keepalived成为MASTER(主服务器配置):
- yum -y install keepalived
- vim /etc/keepalived/keepalived.conf (修改配置文件)
- 删除默认所有,仅保留一下配置:
- systemctl start keepalived
- 2.对LB2进行keepalived备服务器的部署(备服务器):
- yum -y install keepalived
- vim /etc/keepalived/keepalived.conf
- systemctl start keepalived
- 3.对主服务和备服务器部署完之后进行验证:
- 正常状态下虚拟ip地址(漂移地址)会出现在主服务器上,而备服务器不会出现,只有当主服务器宕机或keepalived服务不运行时,漂移地址会自动切换到备服务器上,这就是故障切换。
- 在主服务器上查看是否存在虚拟ip:
- 查看备服务器是否存在虚拟ip:
- 测试故障切换:
- 关闭主服务器上的keepalived服务,再次查看备服务器上是否出现了虚拟ip地址:
- 主服务器: systemctl stop keepalived
- ip a show dev ens33
- 备服务器:
- ip a show dev ens33
- 1
- ip a show dev ens33
- 关闭主服务器上的keepalived服务,再次查看备服务器上是否出现了虚拟ip地址:
- 至此keepalived高可用部署完毕,接下来说一说一种特殊情况:
- 高可用脑裂:
- 高可用节点之间互相失去联系,自认为自己是主服务器,就会出现多主现象,即脑裂现象,主备服务器同时都出现了虚拟地址。
- 裂脑出现的原因:
- 心跳线松动或网卡故障
- 服务器硬件故障,崩溃
- 节点服务器开启防火墙,却没有做防火墙策略,vrrp例外
- nginx服务死掉,不会出现裂脑现象,但整个集群都无法正常运作
- 解决脑裂方案:
- 检测脑裂脚本(在备服务器上运行)
- 对主服务器进行无限循环的ping测试,当备服务器可以ping通主服务器,并且备服务器上出现的虚拟ip时,则提示脑裂出现,进行实时的检测。
- 可以进行检测的测试,当备服务器开启防火墙时,则会发生脑裂,当关闭防火墙时,脑裂则会消失,这是因为当防火墙开启式,并没有做允许VRRP协议通过的流量,也就是说仅仅可以ping通但无法发送vrrp的包,当备服务器收不到主服务发来的包时,则会默认为主服务器死掉,则会接管主服务器的工作,所以会出现两台主设备。
- 解决因为防火墙引发脑裂的方案:
- 我们也要开启防火墙做策略,允许vrrp的流量通过:
- firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
- firewall-cmd --reload
- 我们也要开启防火墙做策略,允许vrrp的流量通过:
- 解决nginx故障造成群集无法工作的方法:
- 因为keepalived只会检测主机或服务是否运行来决定是否进行故障切换,如果主服务器的nginx服务down掉,同样是不会进行故障切换,因为它不会因为检测应用程序来进行故障切换,但是在我们这个环境中,主服务器的nginx服务如果down掉,整个环境是无法继续运作的,因为我们的高可用群集是建立在LB负载均衡调度器上的,所以我们要确保,故障切换会因为nginx服务来进行切换,不仅仅是因为主服务器宕机,或是keepalived服务关闭。
- 编辑nginx监控脚本(主服务器):
- mkdir /sh
- vim /sh/check_nginx_proxy.sh
- chmod +x /sh/check_nginx_proxy.sh
- 添加脚本追踪模块到keepalived配置文件:
- systemctl restart keepalived
- 主服务器可以添加计划任务,实时的对nginx应用程序进行检测:
- crontab -e
- * * * * * /bin/bash /sh/check_nginx_proxy.sh
- 主服务器关闭nginx,测试keepalived地址是否漂移。
- 至此,keepalived高可用群集的部署讲解完结,感谢大家的观看!!!
- 1.对LB1服务器部署keepalived成为MASTER(主服务器配置):
Keepalived 软件实现高可用群集的介绍及环境部署
最新推荐文章于 2024-01-28 14:33:48 发布
本文介绍了Keepalived软件,其用于管理和监控LVS集群,通过VRRP实现服务器故障切换。重点讲述了Keepalived的工作原理,涉及核心模块、健康检查和VRRP协议,以及如何在两台服务器间部署高可用集群,包括环境准备、配置和故障处理策略。
摘要由CSDN通过智能技术生成