目录
关于高可用集群的知识点
集群类型
集群类型主要包括高可用集群、负载均衡集群和高性能集群。集群,作为一组相互独立的计算机通过高速网络互联而构成的计算资源,以其出色的性能、扩展性和可靠性,在现代信息技术中发挥着至关重要的作用
什么是高可用集群
主要用于保障关键服务的持续运行。当集群中的某个节点发生故障时,其它健康的节点能够迅速接管工作,从而避免服务中断。此类集群通常以主备形式运作,能够在大型故障下实现快速恢复,是确保业务连续性和数据安全的重要基础设施
高可用的实现
虚拟路由冗余协议(VRRP)
VRRP的工作原理依赖于其三种状态机:Initialize(初始化状态)、Master(活动状态)和Backup(备份状态)。Master设备定期发送VRRP通告报文,告知其它设备其工作正常。如果Master设备出现故障,Backup设备会根据优先级选举出新的Master设备,继续提供网络连接。这种选举机制确保了网络在设备故障时能够迅速恢复服务,而不会导致长时间的中断
keepalived 简介
Keepalived是一个开源的、可靠的高可用和故障切换解决方案,主要用于Linux系统。它通过虚拟IP地址的方式,实现主服务器和备份服务器之间的无缝切换,确保服务的高可用性。
Keepalived的主要功能
-
虚拟IP地址:Keepalived可以为每个服务创建多个虚拟IP地址,当主服务器宕机时,备份服务器可以接管这些虚拟IP地址,继续提供服务。
-
健康检查:Keepalived通过心跳(heartbeat)机制,定期检查主服务器和备份服务器的健康状况,如果发现主服务器宕机,备份服务器可以立即接管。
-
故障切换:当主服务器宕机时,Keepalived可以自动将流量重定向到备份服务器,实现故障切换。
-
负载均衡:Keepalived可以配置为负载均衡模式,将流量均匀分配给主服务器和备份服务器,提高系统的处理能力。
-
日志记录:Keepalived可以记录健康检查和故障切换的日志,便于分析和诊断问题。
-
配置灵活:Keepalived的配置非常灵活,可以根据实际需求进行定制。
Keepalived的相关文件
主要包括以下几个:
-
软件包名:keepalived-------这是安装Keepalived时使用的软件包名称。
-
主程序文件:/usr/sbin/keepalived-------这是Keepalived的主程序文件路径,用于启动和停止Keepalived服务。
-
主配置文件:/etc/keepalived/keepalived.conf--------这是Keepalived的主配置文件路径,用于设置Keepalived的运行参数和故障切换规则。
-
配置文件示例:/usr/share/doc/keepalived/-------这个目录下存放了Keepalived的配置文件示例和文档,可以作为配置参考。
-
Unit File:/lib/systemd/system/keepalived.service--------这是Keepalived的systemd服务单元文件路径,用于systemd管理系统服务。
-
Unit File的环境配置文件:/etc/sysconfig/keepalived---------这是Keepalived的环境配置文件路径,用于设置Keepalived的一些环境变量。
Keepalived实验
实验环境
四台虚拟机:
KA1(172.25.254.10)KA2(172.25.24.120),
realserver1(172.25.254.110),realserver2(172.25.254.120)
yum install keepalived -y
systemctl start keepalived
realserver1:
yum install -y httpd
systemctl start httpd
echo 172.25.254.110-realserver1 > /var/www/html/index.html
realserver2:
yum install -y httpd
systemctl start httpd
echo 172.25.254.120-realserver2 > /var/www/html/index.html
keepalived基本配置
在KA1上编辑配置文件,使KA1为主服务器,优先级为100
在KA2上编辑配置文件,使KA2为备用服务器,优先级为80
此时作为主服务器的KA1上已经有了vip
启用keepalived日志并自定义存放位置
1.编辑配置文件/etc/sysconfig/keepalived定义日志级别为6
2.编辑日志文件/etc/rsyslog.conf,定义存放位置
测试:重启服务查看日志文件
实现独立子配置文件
在主配置文件中添加内容
用于使主配置文件读取 /etc/keepalived/conf.d/
目录下所有以 .conf
结尾的配置文件。这样可以让 Keepalived 在启动时自动加载这些配置文件,以便实现更复杂的负载均衡和高可用性功能。
keppalived的抢占模式和非抢占模式
抢占模式:在抢占模式下,当主节点(Master)从故障中恢复后,它会重新从备份节点(Backup)手中夺取VIP,并重新接管服务。这种模式不需要特殊配置,默认即为抢占模式。具体而言,当Master节点宕机后,Backup节点会接管服务。当Master节点恢复后,它会再次从Backup节点手中抢回VIP,并重新提供服务
非抢占模式:在非抢占模式下,即使主节点恢复,也不会从备份节点手中夺回VIP,从而避免VIP的频繁切换和不必要的服务中断。这种模式需要通过配置nopreempt
标志来实现
keepalive中默认为抢占模式
非抢占模式配置:
在KA1和KA2中配置文件中更改,加入nopreempt,并且将两边都设置为备用
测试:在KA1上重启服务(keepalived中间会断线),然后查看ip,发现虽然KA1的优先级还是高于KA2,但因为中途短线vip飘向了KA2,此时重启vip也不会回来,这就是非抢占模式
VIP单播配置
在配置文件中编写单播源地址以及目标地址,并且注释掉vrrp_strict(与vip单播模式冲突)
测试 通过tcpdump -i eth0 -nn src host 172.25.254.10 and dst 172.25.254.20命令抓取单播包
双主模式的实现
在KA1和KA2配置文件中创建第二个虚拟路由,第二个虚拟路由vip为172.25.254.200,KA1为备份服务器,KA2为主服务器
配置完成后查看KA2发现KA2已经有vip172.25.254.200
Keepalived 通知脚本配置
利用keppalived实现IPVS的高可用性
1.在realserver1和realserver2中配置临时ip(vip)
ip a a 172.25.254.100/32 dev lo
2.在realserver1和realserver2中关闭ARP响应(vim /etc/sysctl.d/arp.conf)
3.编辑KA1和KA2的配置文件
虚拟服务器(virtual_server)配置:
- IP地址:172.25.254.100
- 端口:80
- 延迟循环:6(用于在真实服务器之间平均分配请求的简单机制)
- 负载均衡算法:wrr(加权轮询)
- 负载均衡类型:DR(直接路由)
- 使用的协议:TCP
真实服务器(real_server)配置:
- 第一个真实服务器的IP地址:172.25.254.110,端口:80,权重:1
- 第二个真实服务器的IP地址:172.25.254.120,端口:80,权重:1
健康检查配置:
- URL路径:
/
(根路径) - 期望的HTTP状态码:200
- 连接超时时间:3秒
- 重试次数:2
- 重试间隔:2秒
这个配置文件的主要目的是将流量平均分配到两个真实服务器上,同时通过健康检查确保只有健康的服务器接收流量
4.重启服务查看两边路由策略
测试:访问172.25.254.100
当KA1keepalived服务关闭时,依然正常
keepalived+haproxy使用
1.下载haproxy并完成基本配置
2.编写脚本监控haproxy的运行状态
3.在keepalived配置文件中启用监控,当优先级高的KA1宕机后vip移动至KA2,vip移动过程中haproxy的工作并没有中断
测试
过程中访问一直未中断