keepalived global_defs 配置解析

你说得对!我给你一个恰到好处的详细度——既不是全参数的技术手册,也不是过于简化的几行配置,而是运维日常最需要掌握的程度


global_defs 运维实用详解

一、先看一个标准的生产配置

global_defs {                              # 全局配置块开始
                                          # 这里的配置对整个keepalived进程生效
   
   # 1. 路由器标识(必改)
   router_id lb01                          # 【路由器标识】运行keepalived的服务器标识
                                          # 必须改成实际主机名,如lb01、lb02
                                          # 作用:在日志和邮件中区分不同机器
                                          # 主备节点必须设置不同的router_id
   
   # 2. VRRP协议配置(核心)
   vrrp_skip_check_adv_addr                # 【跳过地址检查】不检查VRRP通告包的源地址
                                          # 作用:避免在多网卡、复杂网络环境下误判
                                          # 建议保留,提高兼容性
   
   # vrrp_strict                            # 【严格模式】【重点】必须注释掉!
                                          # 如果开启此选项:
                                          # - VIP不能和物理IP在同一网段
                                          # - 必须使用组播,不能用单播
                                          # - 很多合法配置会报错
                                          # 生产环境99%的情况都要注释掉
   
   vrrp_garp_interval 0                     # 【免费ARP间隔】VIP切换时发送免费ARP
                                          # 0表示不限制发送速度,立即发送
                                          # 作用:通知交换机MAC地址变了,加快网络收敛
                                          # 建议保持默认0
   
   vrrp_gna_interval 0                      # 【免费NA间隔】IPv6环境使用
                                          # 作用和vrrp_garp_interval类似,但用于IPv6
                                          # 只用IPv4的话保持默认0即可
   
   # 3. 邮件告警(可选,现代环境建议用监控系统)
   # notification_email {                   # 【邮件收件人】如果不需要邮件告警,全部注释掉
   #   ops@company.com                       # 收件人地址
   # }                                       # 可配置多个
   #
   # notification_email_from keepalived@lb01 # 【邮件发件人】邮件显示的发件地址
   #
   # smtp_server 192.168.1.100               # 【邮件服务器】SMTP服务器地址
   #                                         # 需要本机能访问且无需认证
   #
   # smtp_connect_timeout 30                  # 【连接超时】连接SMTP超时时间(秒)
}
}

二、每个配置的运维视角解读

2.1 router_id —— 唯一必须改的

router_id lb01

运维必知

  • 作用:日志里标识这台机器
  • 怎么配:改成主机名或IP,两台机器不能一样
  • 查看效果grep router_id /var/log/messages

主备示例

# 主节点
router_id lb01

# 备节点
router_id lb02

2.2 vrrp_strict —— 最容易踩的坑

# vrrp_strict    # 一定要注释掉!

为什么必须注释?

状态后果
开启(有这行)VIP和物理IP在同一网段时会报错,VIP起不来
注释(没这行)一切正常

一句话:生产环境99%的情况都要注释掉,除非你知道自己在做什么。


2.3 vrrp_skip_check_adv_addr —— 保留别动

vrrp_skip_check_adv_addr

作用:让VRRP协议更”宽容”,不检查收到的包来源是否合法。

运维建议:保留。特别是有多网卡、多VLAN的环境,少了它可能误判。


2.4 garp 相关 —— 保持默认

vrrp_garp_interval 0
vrrp_gna_interval 0

作用:VIP切换时,立即通知交换机”MAC地址变了”。

运维建议:保持0,让切换最快完成。改大了会导致切换后业务恢复慢。


2.5 邮件告警 —— 知道怎么配就行

notification_email {
   ops@company.com
   dba@company.com
}
notification_email_from keepalived@lb01
smtp_server 192.168.1.100
smtp_connect_timeout 30

运维须知

  • 能用吗:能用,但要配邮件服务器(postfix等)
  • 推荐吗:不推荐,现在都用Zabbix/Prometheus/钉钉告警
  • 怎么办不用就删掉,留着也没事但没必要

三、三种环境配置速查

测试环境(随便玩玩)

global_defs {
   router_id lb01
   vrrp_skip_check_adv_addr
   # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

生产环境(标准配置)

global_defs {
   router_id lb01
   vrrp_skip_check_adv_addr
   # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   # 邮件全删掉,用监控系统
}

需要邮件告警的传统环境

global_defs {
   router_id lb01
   vrrp_skip_check_adv_addr
   # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0

   notification_email {
      ops@company.com
   }
   notification_email_from keepalived@lb01
   smtp_server mail.company.com
   smtp_connect_timeout 30
}

四、一句话总结

global_defs 配好三样:router_id 必改、vrrp_strict 必关、其他默认不动。

配置必配操作
router_id改成主机名
vrrp_strict注释掉
vrrp_skip_check_adv_addr保留
邮件相关不用就删
garp相关默认0就行

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注