给负载均衡做高可用的工具Keepalived

一、keepalived

1.1 简介:

Keepalived 是基于 VRRP(虚拟路由冗余协议) 实现的高可用(HA) 集群管理软件,主要用于解决单点故障问题。

1.2 作用:

(1) 它通过构建主备冗余节点架构,对外提供VIP(虚拟 IP 地址) 作为统一访问入口,并支持对后端服务或节点的健康状态检测。

(2) 当主节点或对应服务失效时,Keepalived 可实现秒级故障自动切换,将 VIP 漂移至备用节点,保障业务连续性与高可用性。

(3) 常与 LVS、HAProxy、Nginx 等负载均衡组件配合,构建高可用、高可靠的四层 / 七层负载均衡集群。

二、keepalived 的环境部署

2.1 实验环境

|-----------|----------------------------------------------|------|
| 主机名 | IP | 角色 |
| KA1 | eth0:192.168.198.50 模式:NAT | 调度器1 |
| KA2 | eth0:192.168.198.60 模式:NAT | 调度器2 |
| webserve1 | 192.168.248.10 模式:host-only wg:192.168.248.2 | 服务器1 |
| webserve2 | 192.168.248.20 模式:host-only wg:192.168.248.2 | 服务器1 |
| client | 192.168.198.10 模式:host-only | 客户端 |

2.2 环境配置

2.2.1 KA1的环境配置

bash 复制代码
[root@KA1 ~]# ip add
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:6d:7f:2b brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.50/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe6d:7f2b/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

[root@KA1 ~]# cat > /etc/hosts << EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.198.50 KA1
192.168.198.60 KA2
192.168.248.10 web1
192.168.248.20 web2
EOF

[root@KA1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.198.50 KA1
192.168.198.60 KA2
192.168.248.10 web1
192.168.248.20 web2

[root@KA1 ~]# vim /etc/chrony.conf
 26 allow 0.0.0.0/0
 27
 28 # Serve time even if not synchronized to a time source.
 29 local stratum 10
[root@KA1 ~]# systemctl restart chronyd
[root@KA1 ~]# systemctl enable --now chronyd

2.2.2 KA2的环境配置

bash 复制代码
[root@KA2 ~]# ip add
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:f6:15:27 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.60/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fef6:1527/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

[root@KA2 ~]#  cat > /etc/hosts << EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.198.50 KA1
192.168.198.60 KA2
192.168.248.10 web1
192.168.248.20 web2
EOF

[root@KA2 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.198.50 KA1
192.168.198.60 KA2
192.168.248.10 web1
192.168.248.20 web2

[root@KA2 ~]# vim /etc/chrony.conf
 3 pool 192.168.198.50 iburst
[root@KA2 ~]# systemctl restart chronyd
[root@KA2 ~]# systemctl enable --now chronyd

2.2.3 web1的环境配置

bash 复制代码
[root@web1 ~]# ip ad
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:f2:dc:c4 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.248.10/24 brd 192.168.248.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fef2:dcc4/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

[root@web1 ~]# dnf install httpd -y
[root@web1 ~]# echo RS1 - 192.168.248.10 > /var/www/html/index.html

[root@web1 ~]# cat > /etc/hosts << EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.198.50 KA1
192.168.198.60 KA2
192.168.248.10 web1
192.168.248.20 web2
EOF

[root@web1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.198.50 KA1
192.168.198.60 KA2
192.168.248.10 web1
192.168.248.20 web2

2.2.4 web2的环境配置

bash 复制代码
[root@web2 ~]# ip add
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:ad:be:2c brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.248.20/24 brd 192.168.248.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fead:be2c/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

[root@web2 ~]# cat > /etc/hosts << EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.198.50 KA1
192.168.198.60 KA2
192.168.248.10 web1
192.168.248.20 web2
EOF

[root@web2 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.198.50 KA1
192.168.198.60 KA2
192.168.248.10 web1
192.168.248.20 web2
测试:

查看KA2的时间是否与KA1同步

bash 复制代码
[root@KA2 ~]# chronyc sources -v

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* KA1                           3   6    17    56   -225us[ -328us] +/-   38ms

注意

时间同步:保证 VRRP 协议判断一致,防止脑裂、保证切换正常。

域名解析:keepalived 启动、健康检查需要解析配置中的主机名。

三、Keepalived 的子配置文件设定

3.1 简介

Keepalived 支持通过 include 指令将主配置文件拆分为多个子配置文件,便于维护和协作,实现模块化管,避免单一配置文件过于臃肿。主配置文件通过 include 指令引入子配置目录,Keepalived 启动时会自动合并所有子配置。

3.2 keepalived 文件配置

bash 复制代码
 [root@KA1 ~]# vim /etc/keepalived/keepalived.conf
 3 global_defs {
  4    notification_email {
  5     3305275485@qq.com
  6    }
  7    notification_email_from 3305275485@qq.com
  8    smtp_server 127.0.0.1
  9    smtp_connect_timeout 30
 10    router_id KA1
 11    vrrp_skip_check_adv_addr
 12    #vrrp_strict
 13    vrrp_garp_interval 1
 14    vrrp_gna_interval 1
 15    vrrp_mcast_group4 224.0.0.44
 16 }
 17 include /etc/keepalived/conf.d/*.conf

[root@KA1 ~]# mkdir  /etc/keepalived/conf.d -p
[root@KA1 ~]# vim /etc/keepalived/conf.d/webvip.conf
  1 vrrp_instance WEB_VIP {
  2     state MASTER
  3     interface eth0
  4     virtual_router_id 51
  5     priority 100
  6     advert_int 1
  7     authentication {
  8         auth_type PASS
  9         auth_pass 1111
 10     }
 11     virtual_ipaddress {
 12         192.168.248.100/24 dev eth0 label eth0:0
 13     }
 14 }

3.2.1 通知邮件相关配置

notification_email:指定接收告警邮件的地址,当主备切换、服务异常时,Keepalived 会发邮件到这个地址。

notification_email_from:指定发件人邮箱地址,用于邮件头部。

smtp_server:指定发送邮件的 SMTP 服务器,这里用的是本地 127.0.0.1(即本机 Postfix 或 Sendmail 等服务)。

smtp_connect_timeout:SMTP 连接超时时间,单位是秒,这里设为 30 秒。

3.2.2 路由器ID配置

router_id:当前 Keepalived 节点的唯一标识,在同一个 VRRP 组内不能重复,用于日志和状态区分,这里是 KA1。

3.2.3 VRRP 相关配置

vrrp_skip_check_adv_addr:跳过对 VRRP 通告报文源地址的检查,避免某些网络场景下误判通告来源。

vrrp_garp_interval 1:免费 ARP(GARP)发送间隔,单位为秒,这里是 1 秒。用于向网络宣告虚拟 IP 的 MAC 地址更新,保证其他设备能及时更新 ARP 表。

vrrp_gna_interval 1:免费 NA(GNA,IPv6 下的邻居宣告)发送间隔,单位为秒,这里是 1 秒,作用和 GARP 类似,针对 IPv6 环境。

vrrp_mcast_group4 224.0.0.44:指定 VRRP 协议使用的IPv4 多播组地址,默认是 224.0.0.18,这里改成了 224.0.0.44,用于节点间发送 VRRP 通告报文。

3.2.4 web_vip 基础定义

vrrp_instance:定义一个 VRRP 实例,WEB_VIP 是该实例的自定义名称(可自定义,用于标识业务)。

3.2.5 节点角色与网络

state MASTER:当前节点的初始角色为主节点(备节点应设为 BACKUP),主节点优先级更高时会抢占 VIP。

interface eth0:指定 VRRP 报文在 eth0 网卡上传输,需与实际网卡名一致。

virtual_router_id 51:VRRP 组的唯一标识,同一组内所有节点必须相同(范围 1-255),用于区分不同 VRRP 组。

3.2.6 优先级与通告

priority 100:节点优先级,范围 1-254,主节点优先级应高于备节点(如备节点设为 90),优先级高者成为 Master。

advert_int 1:VRRP 通告报文的发送间隔,单位为秒,同一组内节点必须一致,用于节点间心跳检测

3.2.7 认证配置

auth_type PASS:使用密码认证(另一种是 AH 认证,较少用),防止非法节点加入 VRRP 组。

auth_pass 1111:认证密码,同一组内所有节点必须相同,最多 8 个字符

3.2.8 虚拟ip配置

192.168.248.100/24:对外提供服务的虚拟 IP(VIP),主节点故障时会自动漂移到备节点。

dev eth0:指定 VIP 绑定在 eth0 网卡上。

label eth0:0:给 VIP 分配网卡别名,便于在系统中查看(如 ip addr 可看到 eth0:0)。

注意:设置子配置时在主配置文件中把相应的配置文件删除,否则会出现配置文件参数冲突。

3.3 测试

检查子配置文件是否报错,重启keepalived 后 虚拟ip 在eth0上是否挂载成功

bash 复制代码
[root@KA1 ~]# keepalived -t -f /etc/keepalived/conf.d/webvip.conf

[root@KA1 ~]# systemctl restart keepalived.service

[root@KA1 ~]# ip add
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:6d:7f:2b brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.50/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.100/24 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe6d:7f2b/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

四、Keepalived虚拟路由配置

4.1 简介

Keepalived 的虚拟路由核心是基于 VRRP(虚拟路由冗余协议) 实现的高可用,目的是让多个物理节点对外表现为一个统一的虚拟 IP(VIP),当主节点故障时,备节点能自动接管 VIP,保证服务不中断。

4.2 keepalived 主文件配置

在KA1中的配置

bash 复制代码
[root@KA1 ~]# vim /etc/keepalived/keepalived.conf
  3 global_defs {
  4    notification_email {
  5     3305275485@qq.com
  6    }
  7    notification_email_from 3305275485@qq.com
  8    smtp_server 127.0.0.1
  9    smtp_connect_timeout 30
 10    router_id KA1
 11    vrrp_skip_check_adv_addr
 12    #vrrp_strict
 13    vrrp_garp_interval 1
 14    vrrp_gna_interval 1
 15    vrrp_mcast_group4 224.0.0.44
 16 }

 18 vrrp_instance WEB_VIP {
 19     state MASTER
 20     interface eth0
 21     virtual_router_id 51
 22     priority 100
 23     advert_int 1
 24     authentication {
 25         auth_type PASS
 26         auth_pass 1111
 27     }
 28     virtual_ipaddress{
 29         192.168.248.100/24 dev eth0 label eth0:0
 30     }
 31 }
[root@KA1 ~]# systemctl restart keepalived.service

在KA2中的配置

bash 复制代码
[root@KA2 ~]# vim /etc/keepalived/keepalived.conf
  1 ! Configuration File for keepalived
  2
  3 global_defs {
  4    notification_email {
  5         3305275485@qq.com
  6    }
  7    notification_email_from 3305275485@qq.com
  8    smtp_server 127.0.0.1
  9    smtp_connect_timeout 30
 10    router_id KA2
 11    vrrp_skip_check_adv_addr
 12    #vrrp_strict
 13    vrrp_garp_interval 1
 14    vrrp_gna_interval 1
 15    vrrp_mcast_group4 224.0.0.44
 16 }

 18 vrrp_instance WEB_VIP {
 19     state BACKUP
 20     interface eth0
 21     virtual_router_id 51
 22     priority 80
 23     advert_int 1
 24     authentication {
 25         auth_type PASS
 26         auth_pass 1111
 27     }
 28     virtual_ipaddress {
 29         192.168.248.100 dev eth0 label eth0:0
 30     }
 31 }

[root@KA2 ~]# systemctl restart keepalived.service

4.3 测试

bash 复制代码
[root@KA1 ~]# ip add
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:6d:7f:2b brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.50/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.100/24 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe6d:7f2b/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

此时vip在KA1中,关闭KA1 keepalived 服务观察 VIP是否便偏移到KA2

bash 复制代码
[root@KA2 ~]# ip add
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:f6:15:27 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.60/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.100/32 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fef6:1527/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

开启KA1 keepalived服务观察 VIP 是否回到 KA1

bash 复制代码
[root@KA1 ~]# systemctl restart keepalived.service
[root@KA1 ~]# ip add
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:6d:7f:2b brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.50/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.100/24 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe6d:7f2b/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

五、Keepalived日志分离

5.1 简介:

默认情况下。keepalived的日志会被保存在/var/log/messages文件中,这个文件中除了含有keepalived的日志外,还有其他服务的日志信息,这样不利于对于keepalived的日志进行查看。

5.2 开启日志

修改 keepalived 配置文件和 rsyslog 日志配置文件

bash 复制代码
[root@KA1 log]# vim /etc/sysconfig/keepalived
 14 KEEPALIVED_OPTIONS="-D -S 6"
[root@KA1 log]# systemctl restart keepalived.service

[root@KA1 log]# vim /etc/rsyslog.conf
 68 local6.*                                                /var/log/keepalived.log
[root@KA1 log]# systemctl restart rsyslog.service

-D:开启调试模式,输出更详细的日志(便于排错)

-S 6:指定日志使用 local6 设施(facility) 输出,这是 syslog 中自定义的日志分类,方便后续单独收集

local6.*:匹配所有来自 local6 设施的日志(即 Keepalived 输出的日志)

/var/log/keepalived.log:将匹配到的日志单独写入这个文件,而不是默认的 /var/log/messages

5.3 测试

重启 keepalived 服务查看 /var/log/ m目录下是否生成日志 keepalived

bash 复制代码
[root@KA1 log]# systemctl restart keepalived.service
[root@KA1 log]# ls keepalived.log
keepalived.log

六、抢占模式

6.1 简介:

6.1.1 抢占模式

(1 )核心逻辑:

谁的优先级更高,VIP 就归谁持有。

(2) 适用场景:

主节点性能更强,希望它恢复后立刻接管服务。

对主节点身份有强绑定需求的场景(比如主节点承载额外业务)。

6.1.2 非抢占模式

(1)核心逻辑

只要当前持有 VIP 的节点 VRRP 通告正常,就不会发生 VIP 迁移,即使有更高优先级的节点上线。

(2)适用场景

避免频繁切换 VIP 导致服务抖动(比如数据库、存储类业务对切换敏感)。

希望保持服务稳定性,优先保证当前 Master 持续提供服务。

6.1.3 延迟抢占模式

(1)核心逻辑:

是抢占模式的优化版:高优先级节点上线 / 恢复后,不会立即抢占 VIP,而是等待一段预设时间(延迟时间),确认自身状态稳定后再发起抢占。

过滤掉短暂的节点 / 网络异常(如重启、闪断),避免不必要的 VIP 切换。

(2) 适用场景:

主节点重启后,需要等待依赖服务(如数据库、应用)完全启动,再接管 VIP。

网络环境不稳定,存在短暂丢包 / 抖动,防止误判导致频繁切换。

对服务连续性要求高的业务(如金融、支付),在保证主节点优先的同时,减少切换带来的短暂不可用。

6.2 开启非抢占模式的配置

在KA2上配置

bash 复制代码
[root@KA1 log]# vim /etc/keepalived/keepalived.conf
 18 vrrp_instance WEB_VIP {
 19     state BACKUP
 20     interface eth0
 21     virtual_router_id 51
 22     nopreempt
 23     priority 100
 24     advert_int 1
 25     authentication {
 26         auth_type PASS
 27         auth_pass 1111
 28     }
 29     virtual_ipaddress{
 30         192.168.248.100/24 dev eth0 label eth0:0
 31     }
 32 }

[root@KA1 log]# [root@KA1 log]# systemctl restart keepalived.service
[root@KA1 log]# ip add
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:6d:7f:2b brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.50/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.100/24 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe6d:7f2b/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

nopreempt:开启非抢占模式

在KA2上配置

bash 复制代码
[root@KA2 ~]# vim /etc/keepalived/keepalived.conf
 18 vrrp_instance WEB_VIP {
 19     state BACKUP
 20     interface eth0
 21     virtual_router_id 51
 22     nooreempt
 23     priority 80
 24     advert_int 1
 25     authentication {
 26         auth_type PASS
 27         auth_pass 1111
 28     }
 29     virtual_ipaddress {
 30         192.168.248.100 dev eth0 label eth0:0
 31     }
 32 }

[root@KA2 ~]# ip add
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:f6:15:27 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.60/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fef6:1527/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

6.3 测试,关闭KA1 观察 VIP 是否偏移

bash 复制代码
[root@KA1 log]# systemctl stop keepalived.service
[root@KA1 log]# ip ad
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:6d:7f:2b brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.50/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe6d:7f2b/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

[root@KA2 ~]# ip add
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:f6:15:27 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.60/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.100/32 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fef6:1527/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

重启KA1 keepalived 服务观察VIP 是否偏移回来

bash 复制代码
[root@KA1 log]# systemctl restart keepalived.service
[root@KA1 log]# ip add
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:6d:7f:2b brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.50/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe6d:7f2b/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

[root@KA2 ~]#  ip add
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:f6:15:27 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.60/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.100/32 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fef6:1527/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

关闭 KA2 服务观察 VIP 是否偏移到 KA1 上

bash 复制代码
[root@KA2 ~]# systemctl stop keepalived.service




[root@KA1 log]# ip add
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:6d:7f:2b brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.50/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.100/24 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe6d:7f2b/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

6.4 开启延迟抢占模式配置

在KA1 中配置

bash 复制代码
[root@KA1 log]# vim /etc/keepalived/keepalived.conf
 18 vrrp_instance WEB_VIP {
 19     state BACKUP
 20     interface eth0
 21     virtual_router_id 51
 22     priority 100
 23     preempt_delay 10
 24     advert_int 1
 25     authentication {
 26         auth_type PASS
 27         auth_pass 1111
 28     }
[root@KA1 log]# systemctl restart keepalived.service

在KA2中配置

bash 复制代码
[root@KA2 ~]# vim /etc/keepalived/keepalived.conf
 18 vrrp_instance WEB_VIP {
 19     state BACKUP
 20     interface eth0
 21     virtual_router_id 51
 22     preempt_delay 10
 23     priority 80
 24     advert_int 1
 25     authentication {
 26         auth_type PASS
 27         auth_pass 1111
 28     }
[root@KA2 ~]# systemctl restart keepalived.service

6.4 测试

关闭KA1 keepalived服务,再开启keep alived 服务,查看 VIP 偏移过程

总结:

呈现的效果,当KA1 keepalived 服务关闭时,KA2 优先级比 KA1 低,会立刻抢占VIP,当KA1 keepalived 服务开启时, KA1 会延迟十秒再抢占 VIP

这里有个易错点:只有优先级高的才有权力抢占优先级低的 master ,优先级低的只能被动等待优先级高的故障时才接管VIP,所以当关闭KA1 的服务时,KA2 立即获得VIP,当KA1 服务开启时,KA1 等待10秒后才抢占 master。

七、单播模式

7.1 简介

Keepalived 默认使用 多播(multicast) 发送 VRRP 通告报文,但在部分网络环境(如多播被禁用、跨网段部署)中,需要切换为单播模式(unicast),直接向指定对端节点发送 VRRP 报文。

特点:

(1) 解决多播限制:在云环境(如阿里云、AWS)、部分物理交换机或跨网段场景中,多播地址(224.0.0.18)可能被封禁,单播模式可保证 VRRP 通信正常。

(2) 精准通信:直接向指定的备节点 IP 发送通告,避免多播扩散带来的网络开销,提升安全性和稳定性。

(3) 兼容复杂网络:支持跨网段部署主备节点,不再受限于同一广播域

7.2 开启单播模式

在KA1 中

bash 复制代码
[root@KA1 log]# vim /etc/keepalived/keepalived.conf
 13    vrrp_garp_interval 1
 14    vrrp_gna_interval 1
 15    #vrrp_mcast_group4 224.0.0.44
 16 }
 17
 18 vrrp_instance WEB_VIP {
 19     state BACKUP
 20     interface eth0
 21     virtual_router_id 51
 23     priority 100
 24     advert_int 1
 25     unicast_src_ip 192.168.248.50
 26     unicast_peer {
 27         192.168.248.60
 28     }

[root@KA1 log]# systemctl restart keepalived.service

#vrrp_mcast_group4 224.0.0.44:关闭组播

unicast_src_ip 172.25.254.60:指定单播源地址,通常是本机IP

unicast_peer { 172.25.254.50 } :#指定单播接收地址

在KA2 中

bash 复制代码
[root@KA2 ~]# vim /etc/keepalived/keepalived.conf
 15    #vrrp_mcast_group4 224.0.0.44
 16 }
 17
 18 vrrp_instance WEB_VIP {
 19     state MASTER
 20     interface eth0
 21     virtual_router_id 51
 23     priority 80
 24     advert_int 1
 25     unicast_src_ip 192.168.248.60
 26     unicast_peer {
 27         192.168.248.50
 28     }
[root@KA2 ~]# systemctl restart keepalived.service

7.3 测试

关闭KA1 的keepalived 服务,观察 VIP的偏移

开启 KA1 的keepalived 服务

8、Keepalived业务vip迁移告警

8.1 简介

Keepalived 支持在 VIP 发生主备切换(迁移) 时,通过脚本或邮件向运维人员发送告警,及时感知服务高可用状态变化。

作用:

实时感知故障: 当主节点宕机、网络故障或手动切换时,VIP 漂移到备节点,立刻触发告警,让运维人员第一时间发现问题。

业务连续性保障: 避免 VIP 迁移后无人知晓,导致后续问题排查滞后,保障业务持续可用。

**可扩展通知:**支持邮件、企业微信、钉钉、短信等多种通知方式,适配不同运维场景。

8.2 开启 keepalived 业务vip迁移警告

8.2.1 安装邮件代理

bash 复制代码
[root@KA1 ~]#  dnf install s-nail postfix   -y
[root@KA1 ~]# systemctl start postfix.service
bash 复制代码
[root@KA2 ~]#  dnf install s-nail postfix   -y
[root@KA2 ~]# systemctl start postfix.service

8.2.2 配置mailcap文件

给KA1 配置

bash 复制代码
 [root@KA1 ~]# vim /etc/mailcap
 15 set smtp=smtp.com
 16 set smtp-auth=login
 17 set smtp-auth-user=3305275485@qq.com
 18 set smtp-auth-password=pqnigeilnddydbba
 19 set from=3305275485@qq.com
 20 set ssl-verify=ignore

set smtp=:指定 SMTP 服务器地址

set smtp-auth=login:设置 SMTP 认证方式login 是最常用的用户名 / 密码登录认证

set smtp-auth-user=:认证用的发件人邮箱账号

set smtp-auth-password=:认证用的密码 / 授权码

set from=:邮件的发件人地址 ,显示在邮件头的 From 字段

set ssl-verify=ignore:忽略 SSL 证书验证,避免因证书问题导致发件失败(测试环境常用,生产环境建议开启验证)

给KA2 配置

8.3 测试

使用邮件工具给自己发送邮件

bash 复制代码
[root@KA1 ~]# echo hello | mailx -s test
[root@KA1 ~]# mailq
-Queue ID-  --Size-- ----Arrival Time---- -Sender/Recipient-------
3137FC0910D8*     321 Thu Mar 19 20:11:38  root@KA1.localdomain
                                         3305275485@qq.com

-- 0 Kbytes in 1 Request.

查看自己的邮箱是否收到邮件

8.4 设定keepalived告警脚本

KA1和KA2都要做

bash 复制代码
[root@KA1 ~]# vim /etc/keepalived/scripts/waring.sh
[root@KA1 ~]# chmod +x /etc/keepalived/scripts/waring.sh
[root@KA1 ~]# /etc/keepalived/scripts/waring.sh master
  1 #!/bin/bash
  2 mail_dest='3305275485@qq.com'
  3 #inet_protocols = ipv4
  4 mail_send()
  5 {
  6     mail_subj="$HOSTNAME to be $1 vip 转移"
  7     mail_mess="`date +%F\ %T`: vrrp 转移,$HOSTNAME 变为 $1"
  8     echo "$mail_mess" | mail -s "$mail_subj" $mail_dest
  9 }
 10 case $1 in
 11     master)
 12     mail_send master
 13     ;;
 14     backup)
 15     mail_send backup
 16     ;;
 17     fault)
 18     mail_send fault
 19     ;;
 20     *)
 21     exit 1
 22     ;;
 23 esac

测试:

bash 复制代码
[root@KA1 ~]# /etc/keepalived/scripts/waring.sh master
bash 复制代码
[root@KA2 ~]# /etc/keepalived/scripts/waring.sh master

8.5 配置keepalived告警

修改/etc/keepalived/keepalived.conf 文件信息

bash 复制代码
[root@KA1 ~]# vim /etc/keepalived/keepalived.conf
  3 global_defs {
  4    notification_email {
  5     3305275485@qq.com
  6    }
  7    notification_email_from 3305275485@qq.com
  8    smtp_server 127.0.0.1
  9    smtp_connect_timeout 30
 10    router_id KA1
 11    vrrp_skip_check_adv_addr
 12    #vrrp_strict
 13    vrrp_garp_interval 1
 14    vrrp_gna_interval 1
 15    vrrp_mcast_group4 224.0.0.44
 16    enable_script_security
 17    script_user root
 18 }

 20 vrrp_instance WEB_VIP {
 21     state MASTER
 22     interface eth0
 23     virtual_router_id 51
 24     priority 100
 25     advert_int 1
 26     authentication {
 27         auth_type PASS
 28         auth_pass 1111
 29     }
 30     virtual_ipaddress{
 31         192.168.248.100/24 dev eth0 label eth0:0
 32     }
 33     notify_master "/etc/keepalived/scripts/waring.sh master"
 34     notify_backup "/etc/keepalived/scripts/waring.sh backup"
 35     notify_fault  "/etc/keepalived/scripts/waring.sh fault"
 36 }
[root@KA1 ~]# systemctl restart keepalived.service

enable_script_security: 启用脚本安全机制,对 notify/vrrp_script 等自定义脚本进行安全校验。

script_user root:指定所有自定义脚本(notify_script、vrrp_script 等)以 root 用户身份执行。

notify_master:当本节点晋升为 MASTER 时触发

notify_backup:当本节点晋升为 BACKUP 时触发

notify_fault:当本节点检测到故障,进入 FAULT 状态时触发

bash 复制代码
[root@KA2 ~]# vim /etc/keepalived/keepalived.conf
  3 global_defs {
  4    notification_email {
  5     3305275485@qq.com
  6    }
  7    notification_email_from 3305275485@qq.com
  8    smtp_server 127.0.0.1
  9    smtp_connect_timeout 30
 10    router_id KA1
 11    vrrp_skip_check_adv_addr
 12    #vrrp_strict
 13    vrrp_garp_interval 1
 14    vrrp_gna_interval 1
 15    vrrp_mcast_group4 224.0.0.44
 16    enable_script_security
 17    script_user root
 18 }

 20 vrrp_instance WEB_VIP {
 21     state BACKUP
 22     interface eth0
 23     virtual_router_id 51
 24     priority 80
 25     advert_int 1
 26     authentication {
 27         auth_type PASS
 28         auth_pass 1111
 29     }
 30     virtual_ipaddress {
 31         192.168.248.100 dev eth0 label eth0:0
 32     }
 33     notify_master "/etc/keepalived/scripts/waring.sh master"
 34     notify_backup "/etc/keepalived/scripts/waring.sh backup"
 35     notify_fault "/etc/keepalived/scripts/waring.sh fault"
 36 }
[root@KA2 ~]# systemctl restart keepalived.service

测试:

关闭KA1 的keepalived 服务

bash 复制代码
[root@KA1 ~]# systemctl stop keepalived.service

开启KA1的keepalived 服务

bash 复制代码
[root@KA1 ~]# systemctl start keepalived.service

九、keepalived 双主模式

9.1 简介:

Keepalived 双主模式(Dual-Master Mode)是一种高可用架构,它能让两个节点同时对外提供服务,实现负载均衡 + 故障自动切换。

特点:

同时持有 VIP:两个节点都可以成为 MASTER,各自绑定不同的虚拟 IP(VIP),流量会被分担到两台机器上。

互为主备:节点 A 是 VIP1 的主节点,同时是 VIP2 的备节点,节点 B 是 VIP2 的主节点,同时是 VIP1 的备节点

故障自动切换:如果其中一台宕机,另一台会自动接管它的 VIP,保证服务不中断。

适用场景:

业务流量较大:需要两台机器分担请求,提升并发能力

多业务 / 多 VIP 场景:比如一个 VIP 给 Web 服务,另一个给数据库服务

资源利用率更高:避免主备模式下备机长期闲置

9.2 开启keepalived 的双主模式

KA1上设置

bash 复制代码
[root@KA1 ~]# vim /etc/keepalived/keepalived.conf
 20 vrrp_instance WEB_VIP {
 21     state MASTER
 22     interface eth0
 23     virtual_router_id 51
 24     priority 100
 25     advert_int 1
 26     authentication {
 27         auth_type PASS
 28         auth_pass 1111
 29     }
 30     virtual_ipaddress{
 31         192.168.248.100/24 dev eth0 label eth0:0
 32     }
 33     #notify_master "/etc/keepalived/scripts/waring.sh master"
 34     #notify_backup "/etc/keepalived/scripts/waring.sh backup"
 35     #notify_fault  "/etc/keepalived/scripts/waring.sh fault"
 36 }
 37
 38 vrrp_instance DB_VIP {
 39     state BACKUP
 40     interface eth0
 41     virtual_router_id 52
 42     priority 80
 43     advert_int 1
 44     authentication {
 45         auth_type PASS
 46         auth_pass 1111
 47     }
 48     virtual_ipaddress {
 49         192.168.248.200/24 dev eth0 label eth0:1
 50     }
 51 }
[root@KA1 ~]# systemctl restart keepalived.service

KA2上设置

bash 复制代码
[root@KA2 ~]# vim /etc/keepalived/keepalived.conf
 20 vrrp_instance WEB_VIP {
 21     state BACKUP
 22     interface eth0
 23     virtual_router_id 51
 24     priority 80
 25     advert_int 1
 26     authentication {
 27         auth_type PASS
 28         auth_pass 1111
 29     }
 30     virtual_ipaddress {
 31         192.168.248.100 dev eth0 label eth0:0
 32     }
 33 }
 34
 35 vrrp_instance DB_VIP {
 36     state MASTER
 37     interface eth0
 38     virtual_router_id 52
 39     priority 100
 40     advert_int 1
 41     authentication {
 42         auth_type PASS
 43         auth_pass 1111
 44     }
 45     virtual_ipaddress {
 46         192.168.248.200/24 dev eth0 label eth0:1
 47     }
[root@KA2 ~]# systemctl restart keepalived.service

测试,查看IP

bash 复制代码
[root@KA1 ~]# ip ad
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:6d:7f:2b brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.50/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.100/24 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe6d:7f2b/64 scope link noprefixroute
       valid_lft forever preferred_lft forever



[root@KA2 ~]#  ip add
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:f6:15:27 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.60/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.200/24 scope global eth0:1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fef6:1527/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

关闭KA1 的keepalived 服务 再查看ip

bash 复制代码
[root@KA1 ~]# systemctl stop keepalived.service
[root@KA1 ~]# ip ad
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:6d:7f:2b brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.50/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe6d:7f2b/64 scope link noprefixroute
       valid_lft forever preferred_lft forever


[root@KA2 ~]#  ip  add
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:f6:15:27 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.60/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.200/24 scope global eth0:1
       valid_lft forever preferred_lft forever
    inet 192.168.248.100/32 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fef6:1527/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

再打开KA1 keepalived 服务查看 ip

bash 复制代码
[root@KA1 ~]# systemctl restart keepalived.service
[root@KA1 ~]# ip add
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:6d:7f:2b brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.50/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.100/24 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe6d:7f2b/64 scope link noprefixroute
       valid_lft forever preferred_lft forever



[root@KA2 ~]# ip add
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:f6:15:27 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 192.168.198.60/24 brd 192.168.198.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.248.200/24 scope global eth0:1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fef6:1527/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
相关推荐
袁小皮皮不皮1 小时前
【HCIA】第三章TCP/IP协议栈中其他主要协议
运维·服务器·网络·网络协议·tcp/ip
阿梦Anmory1 小时前
保姆级教程:Flask应用实现后台常驻运行(Linux服务器)
linux·服务器·flask
夏日听雨眠1 小时前
Linux学习1
linux·服务器·学习
头孢头孢2 小时前
效率提升 10 倍!我用 OpenClaw 实现了工作自动化
运维·自动化
Agent产品评测局2 小时前
中国龙虾ai软件有哪些选择?2026自动化选型指南
运维·人工智能·ai·chatgpt·自动化
思麟呀2 小时前
应用层自定义协议与序列化
linux·运维·服务器·网络·c++
Lost_in_the_woods2 小时前
Java程序员的Linux之路——命令篇
linux·运维·服务器
IpdataCloud2 小时前
在线IP查询API与本地离线库,速度与安全如何选型?
运维·服务器·网络
志栋智能2 小时前
超自动化巡检,如何成为业务稳定的“压舱石”?
大数据·运维·网络·人工智能·自动化