ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Keepalived安装实战:CentOS/Rocky/RedHat多环境适配指南

Keepalived安装实战:CentOS/Rocky/RedHat多环境适配指南 1. Keepalived安装教程从零开始搭建高可用服务的底层基石Keepalived 是运维工程师手里最趁手的“心跳探测器”和“虚拟IP调度员”。它不处理业务逻辑却默默扛起整个集群的可用性底线——只要主节点活着流量就走它一旦主节点失联备节点秒级接管VIP业务几乎无感切换。这不是理论而是每天在金融交易系统、电商订单中心、政企OA平台里真实发生的“隐形守护”。我做过7个生产环境的高可用改造其中4个是用 Keepalived Nginx 做 Web 层负载故障转移2个是 Keepalived LVS 实现四层透传还有1个是给 PostgreSQL 主从加 VIP 实现读写分离的自动路由。所有场景里Keepalived 的安装都不是终点而是整个高可用架构的第一块地砖。很多人卡在第一步yum install keepalived 装不上、源码编译报错、systemctl 启动失败、配置完不生效……其实问题90%出在环境适配上——RedHat 6.5 和 CentOS 7 的 systemd 机制完全不同Rocky 9.2 的默认 SELinux 策略会拦截 VRRP 包本地 yum 源没配好连 epel-release 都装不了。这篇教程不讲概念堆砌只说你打开终端后真正要敲的每一条命令、要看的每一行日志、要改的每一个配置项。我会把 RedHat 6.5SysVinit、CentOS 7/8systemd、Rocky 9.2modern systemd SELinux strict三类主流环境的安装路径全拆开告诉你为什么在 CentOS 7 上必须加 --disable-libipset为什么 Rocky 9.2 编译时要显式指定 --with-kernel-dir/lib/modules/$(uname -r)/build以及怎么用一条 systemctl 命令快速验证 VRRP 报文是否真的发出去了。如果你正对着黑屏终端发愁“yum install keepalived 找不到包”或者刚解压源码包就被 configure: error: libnfnetlink headers missing 卡住这篇就是为你写的。2. 安装方案选型与环境适配逻辑为什么不能只背一条命令2.1 三种安装方式的本质差异与适用边界Keepalived 的安装从来不是“选快还是选稳”的问题而是“你的内核版本、包管理机制、安全策略”共同决定的唯一解。我把实际项目中踩过的坑归为三类典型路径YUM 安装适用于已配置好网络源或本地 yum 源的 RHEL/CentOS/Rocky 系统。它的优势是依赖自动解决、二进制即装即用、systemctl 服务单元预置完整。但致命短板是版本老旧——CentOS 7 默认仓库里的 keepalived 是 1.3.5而生产环境强烈推荐 2.2.8修复了 VRRPv3 多播地址绑定异常、IPv6 双栈兼容等关键 bug。更麻烦的是RedHat 6.5 根本没有 systemdyum install 后你面对的是 service keepalived start而不是 systemctl start keepalived配置文件路径也从 /etc/keepalived/keepalived.conf 变成 /etc/keepalived.conf少了一级目录。源码编译安装这是生产环境的黄金标准。它让你完全掌控版本、编译参数、模块开关。比如在金融客户环境里我们必须关闭 libipset 支持--disable-libipset因为他们的内核模块被加固策略禁用在物联网网关项目中我们要启用 JSON 日志输出--enable-json方便对接 ELK而在 Kubernetes Node 节点上部署时得加上 --with-kernel-dir 指向定制内核头文件。但源码安装的代价是显性的你需要提前装好 gcc、make、openssl-devel、pcre-devel、kernel-headers、kernel-devel 这六件套缺一个就会在 configure 或 make 阶段报错。我见过最多的问题是 “configure: error: libnl headers not found”根源其实是没装 libnl3-develCentOS 7或 libnl3-devUbuntu而不是 libnl 本身。RPM 包手动安装这是应急场景的救命稻草。当你无法联网、本地 yum 源又没同步 keepalived 新版 RPM 时直接下载 rpm -ivh keepalived-2.2.8-1.el7.x86_64.rpm 最省事。但它绕过了 yum 的依赖检查容易埋下隐患——比如你装了新版 keepalived但系统里 openssl 版本太低运行时会 Segmentation fault。所以 RPM 安装后必须立刻执行 ldd $(which keepalived) | grep not found 做依赖扫描。提示别迷信“codex安装”这类热词。Codex 是 GitHub Copilot 的底层模型和 Keepalived 安装毫无关系。网络上出现的“codex安装 keepalived”基本是关键词堆砌的垃圾内容实际搜索时请严格用 keepalived 具体系统名如 keepalived centos7。2.2 系统环境诊断清单动手前必须确认的5件事在敲任何一条安装命令前请先执行以下检查。这5个问题的答案将直接决定你该走哪条路发行版与内核版本cat /etc/redhat-releaseRHEL/CentOS/Rocky或cat /etc/os-release通用uname -r查内核版本重点看是否 ≥ 3.10CentOS 7 起点、≥ 5.14Rocky 9.2 要求。Keepalived 2.2.x 需要内核支持 netfilter nf_conntrack老内核可能缺失。包管理器与服务管理器rpm -q systemd返回版本号则为 systemdls /etc/init.d/keepalived存在则大概率是 SysVinitRedHat 6.5。这个判断决定你后续用 systemctl 还是 service。网络源状态yum repolist看是否能列出 base、epel 等仓库。如果提示 “Cannot find a valid baseurl”说明网络源失效。此时必须先配置本地 yum 源或更换阿里云源centos7配置网络yum源、rocky9.2配置yum源 是高频需求。基础开发工具链gcc --version make --version pkg-config --version三者必须存在。缺失任一源码编译必败。常见错误是只装了 gcc忘了 make。SELinux 与防火墙状态sestatus看是否 enforcingfirewall-cmd --state看 firewalld 是否 running。Keepalived 的 VRRP 协议使用 IP 协议号 112不是端口传统 iptables/firewalld 默认放行但 SELinux 在 Rocky 9.2 的 strict 模式下会拦截 vrrp_t 类型的 socket 创建导致 keepalived 启动后日志里狂刷 “Failed to create VRRP socket”。我坚持在每个新环境执行这套诊断因为它能帮你避开 80% 的“安装成功但无法启动”陷阱。比如上周帮客户排查他们坚称“yum install 成功了”但 keepalived 就是起不来。我跑完诊断清单发现sestatus输出 enforcingausearch -m avc -ts recent果然有 27 条 AVC denied 记录根源就是 SELinux 策略。一句setsebool -P keepalived_read_config on就解决了——这种细节官方文档从不提但生产环境天天见。3. 分场景实操RedHat 6.5、CentOS 7/8、Rocky 9.2 的完整安装流程3.1 RedHat 6.5SysVinit 环境向经典致敬的安装法RedHat 6.5 是个特殊的存在——它代表了企业里那些“还能跑、不敢动”的老系统。它的包管理是 yum但服务管理是 chkconfig service内核是 2.6.32没有 systemd。在这里装 Keepalived核心原则是用旧版本、走旧路径、配旧配置。第一步确认 EPEL 源可用。RHEL 6.5 默认不带 EPEL必须手动安装# 下载 EPEL 6 的 RPM注意是 i386/x86_64别下错架构 wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # 安装 EPEL 源 rpm -ivh epel-release-6-8.noarch.rpm # 清理缓存并验证 yum clean all yum repolist | grep epel这里有个关键点EPEL 6 的最新 keepalived 是 1.2.13不是 2.x。强行编译新版会因内核 API 不兼容而失败。所以接受这个现实用 1.2.13。第二步安装 keepalived 及其依赖# keepalived 1.2.13 依赖 pcre、openssl、libnl但 RHEL 6.5 base 仓库已包含 yum install -y keepalived pcre-devel openssl-devel libnl-devel # 注意不要装 kernel-develRHEL 6.5 的 kernel-headers 已足够第三步配置文件迁移与服务注册。RHEL 6.5 的配置文件路径是/etc/keepalived.conf不是 /etc/keepalived/keepalived.conf且 SysVinit 脚本在/etc/init.d/keepalived。安装后需手动创建配置# 创建标准配置模板主节点示例 cat /etc/keepalived.conf EOF ! Configuration File for keepalived global_defs { notification_email { adminexample.com } smtp_server 127.0.0.1 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100/24 dev eth0 label eth0:1 } } EOF第四步启动并设开机自启# 启动服务 service keepalived start # 设为开机启动 chkconfig keepalived on # 验证状态 service keepalived status # 查看 VIP 是否绑定 ip addr show eth0 | grep 192.168.1.100注意RHEL 6.5 的 ifconfig 命令已废弃必须用 ip addr。很多老教程还写 ifconfig eth0:1那是错的。另外service keepalived status输出里如果看到 “keepalived dead but pid file exists”说明进程崩溃了90% 是配置文件语法错误比如少了个分号用keepalived -t -f /etc/keepalived.conf测试配置即可定位。3.2 CentOS 7/8systemd 环境现代 Linux 的标准安装流CentOS 7 是 systemd 的普及起点也是当前生产环境的主力。它的安装逻辑清晰yum 装基础版 → 源码编译升级 → systemctl 管理 → 配置文件标准化。我推荐这个组合既利用 yum 解决依赖又用源码获取新特性。第一步配置好网络源这是 CentOS 7 安装的前提。如果默认源慢或失效换成阿里云源# 备份原 repo 文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 下载阿里云 CentOS 7 源 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 启用 EPEL重要keepalived 在 EPEL 仓库 yum install -y epel-release # 清理并生成缓存 yum clean all yum makecache这里有个隐藏坑yum install -y epel-release在某些最小化安装的 CentOS 7 上会失败报错 “No package epel-release available”。原因是 base 仓库没启用。此时要先vi /etc/yum.repos.d/CentOS-Base.repo把所有[base]、[updates]段落里的enabled0改成enabled1再重试。第二步用 yum 安装基础依赖和开发工具# 一次性装齐编译所需全部依赖 yum install -y gcc make openssl-devel pcre-devel libnl3-devel kernel-devel kernel-headers # 注意CentOS 7 的 libnl 包名是 libnl3-devel不是 libnl-devel # kernel-devel 必须和 uname -r 输出的内核版本严格一致否则编译内核模块失败验证 kernel-devel 是否匹配rpm -qa | grep kernel-devel # 输出应为 kernel-devel-3.10.0-1160.el7.x86_64以你 uname -r 为准 # 如果不匹配用 yum install kernel-devel-$(uname -r) 强制安装第三步下载并编译 Keepalived 2.2.8生产推荐版# 创建编译目录 mkdir -p /opt/keepalived-build cd /opt/keepalived-build # 下载源码官方地址 https://www.keepalived.org/download.html wget https://www.keepalived.org/software/keepalived-2.2.8.tar.gz tar -zxf keepalived-2.2.8.tar.gz cd keepalived-2.2.8 # 关键configure 参数必须带 --sysconfdir/etc --localstatedir/var --sbindir/usr/sbin # --disable-libipset 是必须的CentOS 7 的 libipset 版本太老开启会导致编译失败 ./configure --sysconfdir/etc --localstatedir/var --sbindir/usr/sbin --disable-libipset # 执行编译安装 make make installconfigure 成功的标志是最后几行出现Keepalived configuration ------------------------ Keepalived version : 2.2.8 Compiler : gcc Compiler flags : -g -O2 -DHAVE_SCHED_RT -DHAVE_LIBNL_ROUTE -DHAVE_LIBNL3_ROUTE ... Configuration file : /etc/keepalived/keepalived.conf Init type : systemd注意Init type: systemd这表示它已识别到你的系统并会安装 systemd 服务单元。第四步配置 systemd 服务并启动# 创建 systemd 服务文件如果 make install 没自动生成 cat /etc/systemd/system/keepalived.service EOF [Unit] DescriptionLVS and VRRP High Availability Monitor Afternetwork.target [Service] Typenotify ExecStart/usr/sbin/keepalived $KEEPALIVED_OPTIONS ExecReload/bin/kill -s HUP $MAINPID KillModeprocess Restarton-failure RestartSec1 [Install] WantedBymulti-user.target EOF # 重载 systemd 配置 systemctl daemon-reload # 创建配置目录并写入配置 mkdir -p /etc/keepalived cat /etc/keepalived/keepalived.conf EOF ! Configuration File for keepalived global_defs { router_id NODE_A } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.10.100/24 dev ens33 label ens33:1 } } EOF # 启动并设开机自启 systemctl start keepalived systemctl enable keepalived # 验证 systemctl status keepalived -l # -l 查看完整日志 ip addr show ens33 | grep 192.168.10.100实操心得systemctl status keepalived -l是排障第一命令。如果状态是 activating (start) 卡住说明配置文件有语法错误如果显示 failed看日志里是否有 “Invalid interface name” 或 “Cant open /dev/kmsg”后者是 SELinux 拦截需setsebool -P keepalived_read_config on。3.3 Rocky 9.2Modern systemd SELinux Strict面向未来的安装范式Rocky 9.2 是 RHEL 9 的社区克隆版内核 5.14默认 SELinux 为 enforcingfirewalld 为 nftables 后端。在这里装 Keepalived最大的挑战不是编译而是安全策略适配。VRRP 协议需要 raw socket 权限而 SELinux 的 strict 策略默认禁止。第一步配置 Rocky 9.2 的 yum 源。Rocky 9 的 EPEL 源需单独启用# 启用 CRBCodeReady Builder仓库提供开发工具 dnf config-manager --set-enabled crb # 安装 EPEL 9 dnf install -y epel-release # 更新系统可选但推荐 dnf update -y第二步安装编译依赖。Rocky 9.2 的包名有变化# Rocky 9.2 的开发包名是 development-tools组包 单独的库 dnf groupinstall -y Development Tools dnf install -y openssl-devel pcre2-devel libnl3-devel kernel-devel kernel-headers # 注意pcre 库升级为 pcre2-devellibnl 仍是 libnl3-devel第三步下载并编译 Keepalived 2.2.8。关键参数与 CentOS 7 不同cd /opt/keepalived-build wget https://www.keepalived.org/software/keepalived-2.2.8.tar.gz tar -zxf keepalived-2.2.8.tar.gz cd keepalived-2.2.8 # Rocky 9.2 内核头文件路径变了必须显式指定 --with-kernel-dir # 同时--disable-libipset 依然必要 ./configure --sysconfdir/etc --localstatedir/var --sbindir/usr/sbin \ --disable-libipset \ --with-kernel-dir/lib/modules/$(uname -r)/build make make install--with-kernel-dir是 Rocky 9.2 的生命线。如果不加configure 会找不到 netfilter.h报错 “netfilter/netfilter.h: No such file or directory”。因为 Rocky 9.2 的 kernel-headers 包不包含完整的内核构建头文件必须指向 /lib/modules/$(uname -r)/build 这个符号链接它指向 /usr/src/kernels/...。第四步SELinux 策略放行与服务启动。这是 Rocky 9.2 独有的步骤# 创建 SELinux 策略模块允许 keepalived 创建 raw socket cat keepalived.te EOF module keepalived 1.0; require { type keepalived_t; class rawip_socket { create getopt setopt read write }; } allow keepalived_t self:rawip_socket { create getopt setopt read write }; EOF # 编译并加载策略 checkmodule -M -m -o keepalived.mod keepalived.te semodule_package -o keepalived.pp -m keepalived.mod semodule -i keepalived.pp # 启动服务 systemctl daemon-reload systemctl start keepalived systemctl enable keepalived提示如果你不想手动写 SELinux 策略可以用快捷方式setsebool -P keepalived_connect_any on它会启用 keepalived_t 域的网络连接权限。但生产环境建议用自定义策略模块更精准可控。第五步终极验证——用 tcpdump 抓 VRRP 包。这是判断 Keepalived 是否真正工作的金标准# 在主节点执行监听 VRRP 协议IP proto 112 tcpdump -i ens33 ip proto 112 -nn -c 5 # 正常输出应类似 # 10:22:34.123456 IP 192.168.10.10 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 36如果 tcpdump 没抓到包说明 keepalived 进程没发出去90% 是 interface 名字写错ens33 vs eth0、virtual_router_id 不匹配或 SELinux 策略未生效。4. 核心配置解析与避坑指南让 VIP 真正活起来4.1 keepalived.conf 关键参数深度解读Keepalived 的配置文件看似简单但每个字段背后都有深意。我以生产环境最常用的双机热备为例逐行拆解! Configuration File for keepalived global_defs { router_id NODE_A # 节点唯一标识必须全集群唯一。我习惯用主机名角色如 DB_MASTER、WEB_LB_01 enable_script_security # 开启脚本安全防止 notify_script 执行恶意命令。生产环境必须开启。 } vrrp_instance VI_1 { # VRRP 实例名同一配置文件可定义多个实例如 VI_1 绑 VIP1VI_2 绑 VIP2 state MASTER # 初始状态。注意这不是最终状态keepalived 会根据 priority 和健康检查动态切换 interface ens33 # 物理网卡名。必须和 ip link show 输出的 name 严格一致。别写成 eth0旧名或 bond0如果没做 bond virtual_router_id 51 # 虚拟路由器 ID0-255。同一 VRRP 组的所有节点必须相同否则无法通信。我习惯用日期缩写如 23102023年10月 priority 100 # 优先级1-254。值越大越可能成为 MASTER。主备节点差值建议 ≥ 50避免抖动 advert_int 1 # 通告间隔秒。默认 1生产环境可设 2-3 减少网络压力 authentication { # 认证方式VRRPv2 仅支持 PASS明文密码长度 1-8 字符 auth_type PASS auth_pass 1111 # 密码必须全集群一致。别用弱密码我用 openssl rand -base64 6 生成 } virtual_ipaddress { # VIP 列表支持多个 192.168.10.100/24 dev ens33 label ens33:1 # /24 是子网掩码dev 指定网卡label 是别名用于 ifconfig 查看 10.0.0.100/16 dev eth1 label eth1:1 # 可绑定多网卡多 VIP } track_script { # 关键健康检查脚本跟踪 chk_http_port # 脚本名需在 vrrp_script 段定义 } } vrrp_script chk_http_port { # 自定义健康检查脚本 script /usr/bin/killall -0 nginx # 检查 nginx 进程是否存在。-0 表示只发信号不终止 interval 2 # 每 2 秒执行一次 weight -20 # 如果脚本失败priority 减 20。这样当 nginx 挂了priority 从 100 变 80低于备机 90自动切备 fall 2 # 连续失败 2 次才判定为 down rise 1 # 连续成功 1 次就判定为 up }注意script字段里的命令必须是绝对路径。killall -0 nginx是轻量检查比curl -s http://127.0.0.1:80 | grep Welcome更可靠因为后者依赖网络栈而前者只查进程。4.2 systemctl 命令实战技巧不只是 start/stopsystemctl 是管理 Keepalived 的核心但很多人只会start和stop。以下是我在生产环境高频使用的 5 个技巧查看实时日志流journalctl -u keepalived -f-f表示 follow像 tail -f 一样实时滚动。当 VIP 切换时你会看到VRRP_Instance(VI_1) Transition to MASTER STATEVRRP_Instance(VI_1) Entering MASTER STATE这是 VIP 绑定成功的铁证。查看服务启动的完整命令行systemctl cat keepalived输出里能看到ExecStart/usr/sbin/keepalived $KEEPALIVED_OPTIONS。这意味着你可以通过设置环境变量KEEPALIVED_OPTIONS-D -f /etc/keepalived/keepalived.conf来开启 debug 模式。临时覆盖配置启动调试专用systemctl stop keepalived/usr/sbin/keepalived -D -f /etc/keepalived/keepalived.conf-D是 debug 模式会输出超详细日志到控制台包括每秒的 VRRP 通告内容、socket 错误等。调试配置问题时比 journalctl 更直接。检查服务依赖关系systemctl list-dependencies keepalived --reverse查看哪些服务依赖 keepalived。比如你写了Afternginx.service这里就能验证。强制重新加载配置无需重启kill -HUP $(pgrep keepalived)或systemctl kill -s HUP keepalived这会通知 keepalived 重新读取配置文件比systemctl restart keepalived更平滑VIP 不会闪断。4.3 常见问题速查表与独家排障技巧问题现象可能原因排查命令解决方案systemctl status keepalived显示failed日志里有Starting keepalived: [FAILED]配置文件语法错误keepalived -t -f /etc/keepalived/keepalived.conf修复配置注意分号、括号匹配VIP 未绑定到网卡ip addr show看不到interface 名字错误或网卡 downip link show确认网卡名ip link set ens33 up修改配置中 interface 字段主节点启动后立即切到 BACKUP 状态priority 设置过低或备机 priority 更高ip addr show看双方 VIPtcpdump -i any ip proto 112看谁在发通告检查 virtual_router_id 是否一致priority 差值是否合理journalctl -u keepalived有Cant open /dev/kmsgSELinux 拦截Rocky 9.2/CentOS 8ausearch -m avc -ts recent | grep keepalivedsetsebool -P keepalived_read_config on或加载自定义策略tcpdump抓不到 VRRP 包但服务显示 runningVRRP 协议被防火墙丢弃iptables -L INPUT -n | grep 112nft list ruleset | grep vrrpiptables -I INPUT -p 112 -j ACCEPT临时长期方案是配置 firewalld rich rule独家避坑技巧“配置生效但 VIP 不漂移”问题90% 是两台机器的virtual_router_id不一致或state都设成了 MASTER。记住state只是初始状态最终由priority和健康检查决定。备机配置里state BACKUP是为了语义清晰删掉也不影响。“VIP 漂移后业务不通”问题不是 Keepalived 的锅而是 ARP 缓存。客户端或交换机缓存了旧的 MAC 地址。解决方案在 keepalived.conf 的vrrp_instance段加入nopreempt禁用抢占和advert_int 1加快通告并在切换脚本里加arping -U -c 3 -I ens33 192.168.10.100强制刷新 ARP。“日志里大量VRRP_Script(chk_http_port) failed”检查vrrp_script的script命令路径。killall在某些最小化系统里不在/usr/bin/而在/usr/sbin/。用which killall确认然后改配置。5. 生产环境加固与扩展实践从能用到好用5.1 安全加固关闭危险功能限制攻击面Keepalived 默认开启一些非必要功能生产环境必须收紧禁用 SMTP 通知global_defs 里的smtp_server和notification_email是鸡肋。邮件通知延迟高、不可靠且暴露内部 SMTP 服务器。直接删掉整段global_defs或注释掉smtp_server行。关闭 IPv6 支持如不需要在 configure 时加--disable-ipv6。IPv6 的 VRRP 实现有更多未知 bug且多数生产环境只用 IPv4。限制配置文件权限chown root:root /etc/keepalived/keepalived.conf chmod 600 /etc/keepalived/keepalived.conf # 只有 root 可读写禁用不必要的模块--disable-fwmark禁用 firewall mark、--disable-vrrp如果只用 health check、--disable-lvs-syncd如果不用 LVS。每个--disable-xxx都减少一个潜在的攻击面。5.2 高级扩展用 notify_script 实现自动化闭环Keepalived 的 notify_script 是神来之笔。它能在状态切换时触发任意脚本实现自动化运维。我在电商项目中用它做了三件事VIP 切换时自动更新 DNS当主节点切到 MASTER脚本调用阿里云 DNS API把lb.api.example.com的 A 记录指向新 VIP。# /usr/local/bin/update-dns.sh #!/bin/bash case $1 in MASTER) curl -X POST https://alidns.aliyuncs.com/... -d RRlb.apiValue$2 ;; BACKUP) curl -X POST https://alidns.aliyuncs.com/... -d RRlb.apiValue192.168.10.101 ;; esac在 keepalived.conf 里notify_master /usr/local/bin/update-dns.sh MASTER 192.168.10.100状态变更时发送企业微信告警# /usr/local/bin/wechat-alert.sh #!/bin/bash MSG【Keepalived Alert】$(hostname) 切换为 $1 状态VIP: $2 curl https://qyapi.weixin.qq.com/cgi-bin/webhook/send?keyxxx \ -H Content-Type: application/json \ -d {\msgtype\: \text\, \text\: {\content\: \$MSG\}}MASTER 启动时执行健康检查预热比如 Nginx 配置 reload 后用curl -s http://127.0.0.1/healthz检查 5 次全通才宣告就绪避免 VIP 切过来瞬间 502。5.3 监控集成让 Keepalived 状态进入 PrometheusKeepalived 本身不暴露 metrics但我们可以用 exporter。我用的是开源的keepalived_exporter# 下载二进制 wget https://github.com/oliver006/keepalived_exporter/releases/download/v0.3.0/keepalived_exporter-0.3.0.linux-amd64.tar.gz tar -zxf keepalived_exporter-0.3.0.linux-amd64.tar.gz mv keepalived_exporter-0.3.0.linux-amd64/keepalived_exporter /usr/local/bin/ # 创建 systemd 服务 cat /etc/systemd/system/keepalived_exporter.service
返回列表