keepalive-高可用集群
1.概述
高可用集群(High Availability Cluster,简称HA Cluster),是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外部不间断的提供服务,把因为软件,硬件,认为造成的故障对业务的影响降低到最小程度。总而言之就是保证公司业务7*24小时不宕机
高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损失。如果某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责。因此,对于用户而言,集群永远不会停机
高可用集群软件的主要作用就是实现故障检查和业务切换的自动化。只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的 情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能,更能满足用户
不断出现的需求变化
2.keepalive
1.概述
Keepalived 是一个基于 VRRP 协议来实现的 LVS 服务高可用方案,可以利用其来避免单点故障。一个 MvSOL或 Ivs或 nginx 服务会有 2台服务器运行 Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟 IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟 IP,继续提供服务,从而保证了高可用性。
keepalived主要有三个模块,分别是core、check和vrrp。 core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。 check负责健康检查,包括常见的各种检査方式。vrrp模块是来实现VRRP协议的。
2.原理
1.Keepalived运行在每台服务器上,通过网络监听来自其他服务器的VRRP广播消息。
2.当一台服务器出现故障或网络异常时,其他服务器会检测到这个变化,并根据VRRP优先级规则,选举出新的主服务器。
3.新的主服务器会接管故障服务器的IP地址,成为新的虚拟IP(VIP)的拥有者。
4.虚拟IP(VIP)会被路由器配置为默认网关,从而实现了负载均衡和故障切换。
5.当故障服务器恢复正常时,它会重新参与选举过程,并根据VRRP优先级规则决定是否成为新的主服务器。
3.安装配置
安装keepalive服务
yum -y install keepalived
systemctl enable keepalived --now
4.配置文件说明
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
# 全局配置
global_defs {
router_id 1 # 设备在组中的标识,设置不一样即可
}
vrrp_instance VI_1 { # VI_1 实例名,两台路由器要相同
state MASTER # 主或者从状态(主节点为MASTER,备节点为BACKUP)
interface ens33 # 监控网卡
mcast_src_ip 192.168.22.137 # 心跳源IP(本机实际IP)
virtual_router_id 55 # 虚拟路由编号,主备要一致
priority 100 # 优先级(主节点建议100,备节点建议小于100)
advert_int 1 # 心跳间隔(单位:秒)
authentication { # 秘钥认证(1-8位)
auth_type PASS
auth_pass 123456
}
virtual_ipaddress { # VIP(虚拟IP)
192.168.22.121/24
}
}
设置好MASTER主机之后,还需要设置BACKUP主机两台主主机配置基本相同但是其中配置
state MASTER改为state BACKUProuter_id修改为和主节点不同的值(如2)priority修改为低于主节点的值(如90)mcast_src_ip修改为备节点自身的实际 IP
两台主机不同的地方,当主机出现问题之后,虚拟IP会移动到BACKUP主机上
测试之前需要配置nginx负载均衡,反向代理,测试是否联通,keepalived配置文件中设置了虚拟VIP,两台主机都设置了虚拟ip但是优先级的原因虚拟VIP会在MASTER主机上,当MASTER主机出现问题之后,虚拟ip会出现在BACKUP服务器上

此时BACKUP上的主机上没有虚拟VIP但是当我们拔掉MASTER主机上的网卡之后,虚拟VIP会直接到BACKUP主机上

右下角断掉网卡

此时BACKUP上会回来这张网卡,但是当真正出现问题的时候nginx服务器如果是崩掉了的话,虚拟VIP还是会回到MASTER主机,上因此我们需要通过脚本联合keepalived来联合脚本使用
3.keepalive-联合脚本
keepalive联合脚本监控nginx是否启动,编辑keepalived.conf文件
! Configuration File for keepalived
global_defs {
router_id 1
}
vrrp_script chk_nginx {
script "/etc/keepalived/ck_ng.sh" # 脚本路径
interval 2 # 每2秒检查1次
weight -10 # 检查失败:优先级-10
fail 3 # 连续失败3次判定为异常
rise 2 # 连续成功2次判定为恢复
}
vrrp_instance VI_1 {
state MASTER
interface ens33
mcast_src_ip 192.168.22.137
virtual_router_id 55
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.22.121/24
}
track_script {
chk_nginx # 绑定上面定义的脚本名称
}
}
其中注释部分就是脚本检测的地方,脚本的地址就是他每次检测的地方,我们写一个nginx启动的脚本
#!/bin/bash
# 统计nginx进程数,如果为0的话就是没有正常启动
nginx_status=$(ps -ef | grep nginx | grep -v grep | wc -l)
# 判断如果进程数为0,那么就是没有正常启动需要启动
if [ $nginx_status -eq 0 ]; then
systecmctl start nginx
sleep 2
nginx_restart_status=$(ps -ef | grep nginx | grep -v grep | wc -l)
if [ $nginx_restart_nginx -eq 0 ];then
exit 1
else
exit 0
fi
else
exit 0
fi
这样这个keepalive集群就会定时检测nginx服务是否没有启动,如果没有启动就会自动启动nginx服务
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)