Keepalived —— 子配置文件设定 笔记

Keepalived ------ 子配置文件设定 笔记

背景与目的

当 keepalived 的配置项增多时,全部写在 /etc/keepalived/keepalived.conf 会让主配置变得冗长、难以维护。通过在主配置中使用 include 指令加载子配置文件,可以把每个 VRRP 实例或不同功能分离到独立文件,提升可读性与可维护性。


总体思路

  • 把全局设置(global_defs)放在主配置文件 /etc/keepalived/keepalived.conf
  • 在主配置中使用 include /etc/keepalived/conf.d/*.conf 指定一个目录来放置子配置文件。
  • 每个 VRRP 实例写成一个独立的子文件,例如 /etc/keepalived/conf.d/webvip.conf
  • 使用 keepalived -t -f /etc/keepalived/keepalived.conf 测试语法,确认无误后重启服务。

主配置示例(/etc/keepalived/keepalived.conf)

text 复制代码
! Configuration File for keepalived

global_defs {
   notification_email {
     timinglee_zln@163.com
   }
   notification_email_from timinglee_zln@163.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id KA1
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 1
   vrrp_gna_interval 1
   vrrp_mcast_group4 224.0.0.44
}

include /etc/keepalived/conf.d/*.conf

说明:

  • global_defs 放全局参数(邮件、router_id、GRAT ARP 等)。
  • vrrp_skip_check_adv_addrvrrp_garp_intervalvrrp_gna_interval 等可根据网络环境调整。
  • include 行会加载 conf.d 目录下所有 .conf 文件��顺序按文件名排序。

创建目录并写入子配置:

bash 复制代码
mkdir -p /etc/keepalived/conf.d
vim /etc/keepalived/conf.d/webvip.conf   # 写入上面示例

子配置示例(/etc/keepalived/conf.d/webvip.conf)

text 复制代码
vrrp_instance WEB_VIP {
    state MASTER               # MASTER 或 BACKUP(在备节点改为 BACKUP)
    interface eth0
    virtual_router_id 51
    priority 100               # MASTER 大于 BACKUP(例如 100 vs 80)
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:0
    }
}

要点说明:

  • state:在主节点写 MASTER,备节点写 BACKUP
  • virtual_router_id:同一 VIP 的所有节点必须一致;不同 VIP 需不同 ID。
  • priority:数字越大越优先成为 MASTER。
  • authentication:保证所有参与节点的 auth_pass 一致。
  • virtual_ipaddress:可以直接写 172.25.254.100/24 或带 dev/label 指定别名方式,根据系统兼容性选择。
  1. 测试配置语法:
bash 复制代码
keepalived -t -f /etc/keepalived/keepalived.conf
  1. 重启服务:
bash 复制代码
systemctl restart keepalived.service
  1. 查看接口确认 VIP 已添加:
bash 复制代码
ip addr show eth0
# 或 ifconfig

常见问题与排障建议

  • VIP 未出现或无法漂移:
    • keepalived -t 检查配置语法。
    • 查看 keepalived 日志:tail -f /var/log/keepalived.logjournalctl -u keepalived -f
    • 确认 interface 名称正确(虚拟化环境接口名可能不是 eth0)。
    • 检查是否有 NetworkManager 或 cloud-init 等管理网络,可能覆盖别名或二级地址。
    • 多播/组播被宿主或虚拟网络阻断会导致 VRRP 报文不可见或不通。
    • auth_pass、virtual_router_id、priority 等参数不匹配会导致选举失败。
  • 子配置未生效:
    • 确认 include 路径正确,文件名后缀匹配(示例 *.conf)。
    • 检查子文件权限(keepalived 进程应能读取)。
    • 修改后需重启 keepalived 才能生效(或向 keepalived 发送 reload,由发行版支持与否决定)。
  • 多个实例管理:
    • 每个实例用单独文件,文件名建议以实例名或功能命名(便于排序与查找)。
    • 当有多个 VIP 或不同服务时,可在 conf.d 中分别维护 webvip.conf、dbvip.conf 等。

进阶建议

  • conf.d 目录纳入版本控制(git)以便变更追踪与审核。
  • 为子配置建立命名规范与注释(创建时间、负责人、用途)。
  • 在变更前在测试环境跑 keepalived -t 并做故障演练(停掉 MASTER 查看 BACKUP 是否接管)。
  • 若有自动化部署(Ansible、Salt 等),把主/子配置模板化生成并分发。

、负责人、用途)。

  • 在变更前在测试环境跑 keepalived -t 并做故障演练(停掉 MASTER 查看 BACKUP 是否接管)。
  • 若有自动化部署(Ansible、Salt 等),把主/子配置模板化生成并分发。
相关推荐
RainCity16 小时前
Java Swing 自定义组件库分享(十二)
java·笔记·后端
LinXunFeng8 天前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
两个人的幸福9 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
zzzzzz3109 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
BingoGo11 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack11 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820711 天前
PHP 扩展——从入门到理解
php
鹏仔先生12 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
大树8812 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
小宇宙Zz12 天前
Maven依赖冲突
java·服务器·maven