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 主依然为主
相关推荐
康熙38bdc20 分钟前
Linux 环境变量
linux·运维·服务器
l1x1n024 分钟前
网络安全概述:从认知到实践
网络
鄃鳕24 分钟前
HTTP【网络】
网络·网络协议·http
存储服务专家StorageExpert35 分钟前
DELL SC compellent存储的四种访问方式
运维·服务器·存储维护·emc存储
蜡笔小新星37 分钟前
Python Kivy库学习路线
开发语言·网络·经验分享·python·学习
hakesashou1 小时前
python如何比较字符串
linux·开发语言·python
Ljubim.te1 小时前
Linux基于CentOS学习【进程状态】【进程优先级】【调度与切换】【进程挂起】【进程饥饿】
linux·学习·centos
cooldream20092 小时前
Linux性能调优技巧
linux
长天一色2 小时前
【ECMAScript 从入门到进阶教程】第三部分:高级主题(高级函数与范式,元编程,正则表达式,性能优化)
服务器·开发语言·前端·javascript·性能优化·ecmascript
醉颜凉2 小时前
银河麒麟桌面操作系统修改默认Shell为Bash
运维·服务器·开发语言·bash·kylin·国产化·银河麒麟操作系统