【Keepalived】抢占模式、延迟抢占模式与非抢占模式详解

本篇博客将介绍Keepalived抢占模式、延迟抢占模式还有非抢占模式的配置流程以及运行的效果,通过本篇博客你可以理解Keepalived的三个模式的配置和使用

环境:

系统:RHEL9.3

Keepalived版本:Keepalived v2.2.8 (04/04,2023)

主机名及IP:

  • KA1,172.25.254.50/24
  • KA2,172.25.254.60/24

1、三种模式的简介

  • 默认为抢占模式preempt,即当高优先级的主机恢复在线后,会抢占低先级的主机的master角色,这样会使vip在KA主机中来回漂移,造成网络抖动,

  • 建议设置为非抢占模式 nopreempt ,即高优先级主机恢复后,并不会抢占低优先级主机的master角色

  • 非抢占模块下,如果原主机down机, VIP迁移至的新主机, 后续也发生down时,仍会将VIP迁移回原主机

2、非抢占模式配置及效果

  • 编辑配置文件
cpp 复制代码
# 编辑KA1子配置文件
[root@KA1 ~]# vim /etc/keepalived/conf.d/WEB_VIP.conf 

vrrp_instance WEB_VIP {
    state BACKUP		# 注意:非抢占模式下主机互为BACKUP
    interface eth0
    virtual_router_id 51
    nopreempt			# 添加该参数,启用非抢占模式
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:0
    }
}

# 重启服务
[root@KA1 ~]# systemctl restart keepalived.service
cpp 复制代码
# 编辑KA2子配置文件
[root@KA2 ~]# vim /etc/keepalived/conf.d/WEB_VIP.conf

vrrp_instance WEB_VIP {
    state BACKUP
    interface eth0
    virtual_router_id 51
    nopreempt
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:0
    }
}

# 重启服务
[root@KA2 ~]# systemctl restart keepalived.service
  • 测试
cpp 复制代码
# 关闭master的服务
[root@KA1 ~]# systemctl stop keepalived.service 

# 查看KA2的VIP情况,可见VIP已经漂移到KA2
[root@KA2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:81:44:a2 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 172.25.254.60/24 brd 172.25.254.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 172.25.254.100/24 scope global secondary eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::47bf:3a19:f4d5:a851/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

# 开启KA1的服务
[root@KA1 ~]# systemctl start keepalived.service

# 再查看KA2的VIP
# 可见KA2虽然优先级低,但是VIP还在
[root@KA2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:81:44:a2 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 172.25.254.60/24 brd 172.25.254.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 172.25.254.100/24 scope global secondary eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::47bf:3a19:f4d5:a851/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

可见非抢占模式下不论优先级,只要主机不挂,VIP都不会漂移

3、延迟抢占模式配置及效果

抢占延迟模式,即优先级高的主机恢复后,不会立即抢回VIP,而是延迟一段时间(默认300s)再抢回VIP

cpp 复制代码
preempt_delay #     #指定抢占延迟时间为#s,默认延迟300s
  • 编辑配置文件
cpp 复制代码
# 编辑KA1子配置文件
[root@KA1 ~]# vim /etc/keepalived/conf.d/WEB_VIP.conf 

vrrp_instance WEB_VIP {
    state BACKUP
    interface eth0
    virtual_router_id 51
    preempt_delay 10		# 配置延迟时间为10s,方便观察
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:0
    }
}

# 重启服务
[root@KA1 ~]# systemctl restart keepalived.service
cpp 复制代码
# 编辑KA2子配置文件
[root@KA2 ~]# vim /etc/keepalived/conf.d/WEB_VIP.conf

vrrp_instance WEB_VIP {
    state BACKUP
    interface eth0
    virtual_router_id 51
    preempt_delay 10
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:0
    }
}

# 重启服务
[root@KA2 ~]# systemctl restart keepalived.service
  • 测试
cpp 复制代码
# 关闭KA1服务
[root@KA1 ~]# systemctl stop keepalived.service

# 查看VIP漂移情况
# 可见VIP到了KA2
[root@KA2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:81:44:a2 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 172.25.254.60/24 brd 172.25.254.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 172.25.254.100/24 scope global secondary eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::47bf:3a19:f4d5:a851/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

# 开启KA1服务后马上查看KA2的VIP
# 可见当前VIP还在KA2上
[root@KA1 ~]# systemctl start keepalived.service
[root@KA2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:81:44:a2 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 172.25.254.60/24 brd 172.25.254.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 172.25.254.100/24 scope global secondary eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::47bf:3a19:f4d5:a851/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever


# 等待10s后查看KA1VIP情况
# 可见VIP又回到了KA1上
[root@KA1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:93:eb:8f brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 172.25.254.50/24 brd 172.25.254.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 172.25.254.100/24 scope global secondary eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::e3b4:c2e9:dca7:2b9b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

可见在延迟抢占模式下会优先级高的主机会等待设定的时间结束后才枪占VIP

至此实验全部结束

相关推荐
ly76892 分钟前
磁盘 I/O 延迟突增:用 iostat、blktrace 与火焰图定位到具体调用栈
java·linux·前端·数据库·iostat·磁盘 i/o·blktrace
程序员-Benothing5 分钟前
Linux查找文件命令:find、locate、which、whereis实战
linux·运维·服务器
j7~7 分钟前
【Linux网络加餐】(篇七)网络版计算器(中):协议落地、报文分隔与完整链路
linux·c++·网络编程·tcp·报文分割·网络计算器·协议落地
团子股股东峥哥14 分钟前
day39-RHEL-访问网络附加存储
linux·运维·服务器
不会写代码的小可爱&&16 分钟前
深入 Linux 内核内存管理:slab/slub 分配器原理剖析
linux·硬件架构
名字还没想好☜33 分钟前
Kubernetes 用 kubectl port-forward 和 proxy 调试集群内服务:两者区别、断连自动重连与为什么别用在生产
运维·docker·kubernetes
H_oRIZoN_44 分钟前
Linux入门DAY44 ARM 入门 Day02|ARM 汇编指令、模式切换、栈操作、汇编 C 混合编程
linux·单片机·嵌入式硬件·arm·linux应用编程
程序员-Benothing2 小时前
Linux文件查看与编辑:cat、less、tail、vim快速入门
linux·运维·服务器
考虑考虑8 小时前
docker compose V2版本新属性
运维·后端·自动化运维
AlanBruce9 小时前
摩尔信使MThings功能综述与应用使用指南
linux·自动化·plc·mthings·摩尔信使