VRRP协议实战

一、基本概念


keepalived进程

keepalived启动后会有三个进程

父进程内存管理子进程管理等等

子进程VRRP子进程

子进程healthchecker子进程

二、主备切换

切换前:

关闭主节点:

在mater节点执行命令reboot
备升主

可以发现发现备节点多了一个虚拟ip(vip)

keepalived配置文件说明

bash 复制代码
local_address_group laddr_g1 {
    172.31.1.23
}
vrrp_script chk_lvs
{
    script "/etc/keepalived/lvs_check.sh 192.168.79.253"
    interval 2
    timeout 150
    fall 10
    rise 5
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 5
    priority 150
    nopreempt
    advert_int 1
    dont_track_primary

    virtual_ipaddress {
        192.168.79.253 dev eth1 label eth1:1
    }

    track_script {
        chk_lvs
    }
    notify_master "/etc/keepalived/exclusive_role_change.sh master"
    notify_backup "/etc/keepalived/exclusive_role_change.sh backup"
    notify_fault "/etc/keepalived/exclusive_role_change.sh fault"

    garp_master_refresh 30
}
bash 复制代码
这段配置文件是一个 keepalived 的配置示例,描述了一个 VRRP 实例(VI_1),用于在两台服务器之间实现高可用性。具体来说,这个配置文件中定义了以下内容:

local_address_group 定义了本地地址组,其中包含一个 IP 地址(172.31.1.23)。

vrrp_script 定义了一个 VRRP 脚本(chk_lvs),用于检查 LVS 的状态。脚本的路径为 "/etc/keepalived/lvs_check.sh 192.168.79.253",检查间隔为 2 秒,超时时间为 150 秒,连续失败 10 次后切换到备用状态,连续成功 5 次后切换回主用状态。

vrrp_instance 定义了一个 VRRP 实例(VI_1),其中包括了以下内容:

state BACKUP 表示当前实例的状态为备用状态。
interface eth0 指定了 VRRP 实例使用的网络接口。
virtual_router_id 5 定义了虚拟路由器的 ID。
priority 150 设置了当前节点的优先级为 150。
nopreempt 表示不允许其他节点抢占主用状态。
advert_int 1 设置了 VRRP 广播间隔为 1 秒。
dont_track_primary 表示不跟踪主用节点。
virtual_ipaddress 定义了虚拟 IP 地址(192.168.79.253),并指定了使用的网络接口和标签。
track_script 指定了需要跟踪的脚本(chk_lvs)。
notify_master、notify_backup 和 notify_fault 分别定义了在节点角色变化时需要执行的通知脚本。
garp_master_refresh 30 设置了主用节点发送 GARP 包的刷新间隔为 30 秒。
这个配置文件的作用是在两台服务器之间实现高可用性,通过 VRRP 实现了虚拟 IP 地址的故障切换,同时通过跟踪脚本检测 LVS 的状态来实现故障检测和自动切换。

如何判断是否会进行切换

bash 复制代码
vrrp_script 里的script返回值为0时认为检测成功,其它值都会当成检测失败;
weight 为正时,脚本检测成功时此weight会加到priority上,检测失败时不加;
	主失败:主 priority < 从 priority + weight 时会切换。
	主成功:主 priority + weight > 从 priority + weight 时,主依然为主
weight 为负时,脚本检测成功时此weight不影响priority,检测失败时priority -- abs(weight)
	主失败:主 priority -- abs(weight) < 从priority 时会切换主从
	主成功:主 priority > 从priority 主依然为主
相关推荐
Johny_Zhao20 小时前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
YuMiao1 天前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1232 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑2 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件2 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号3 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash3 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI3 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行4 天前
Linux和window共享文件夹
linux
Sinclair4 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器