1. 离线部署Keepalived的核心挑战在严格的内网环境中部署Keepalived最大的痛点就是依赖库的连锁反应。想象一下你带着一个主程序安装包去客户现场结果就像带着乐高玩具却少了关键零件——每次运行安装命令都会提示缺少新的依赖而你又无法现场下载。这种情况我在2018年某银行项目中就遇到过当时为了安装一个基础服务前后折腾了20多个依赖包。离线环境最典型的特征有三个网络隔离物理断网、安全限制禁止外联和初始环境干净最小化安装。CentOS 7默认最小安装时基础依赖库的缺失率高达70%这正是为什么直接使用rpm -ivh安装经常会报错的原因。比如安装Keepalived时它会先要求net-snmp-libs而这个库又依赖lm_sensors-libs形成一条长长的依赖链。2. 外网环境准备工作2.1 搭建模拟环境建议使用VMware Workstation创建与生产环境同版本的CentOS 7虚拟机。我习惯使用CentOS-7-x86_64-Minimal-2009.iso这个镜像因为它最接近客户的最小化安装环境。关键配置步骤如下# 配置静态IP模拟生产环境 vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPEEthernet BOOTPROTOstatic ONBOOTyes IPADDR192.168.1.100 NETMASK255.255.255.0 GATEWAY192.168.1.1 DNS18.8.8.8 # 重启网络 systemctl restart network2.2 启用Yum缓存机制这是整个离线部署方案的核心技巧。修改yum配置后所有通过yum安装的软件及其依赖包都会保留在本地vi /etc/yum.conf # 将keepcache0改为1 keepcache1 # 指定缓存目录可选 cachedir/var/cache/yum/$basearch/$releasever实测发现开启缓存后安装Keepalived会生成约20MB的缓存文件包含主包和所有依赖。这里有个细节要注意不同版本的CentOS 7如7.6和7.9生成的依赖包可能不兼容所以务必保持内外网系统版本一致。3. 依赖包完整下载方案3.1 使用downloadonly插件更高效的方法是使用yum-plugin-downloadonly插件可以直接将目标软件及其依赖下载到指定目录# 安装插件 yum install -y yum-plugin-downloadonly # 下载Keepalived及其所有依赖 mkdir -p /root/keepalived_offline yum install --downloadonly --downloaddir/root/keepalived_offline keepalived这个命令会下载约15-20个rpm包包括主包keepalived-1.3.5-19.el7.x86_64.rpm核心依赖net-snmp-libs、net-snmp-agent-libs二级依赖lm_sensors-libs、perl相关组件3.2 处理特殊依赖项有时会遇到像MySQL库这样的间接依赖。比如某次部署时出现libmysqlclient.so.18缺失错误这是net-snmp的深层依赖。解决方案是在外网机下载兼容的mysql-community-libs-compat包手动导入到离线仓库使用createrepo重建元数据# 示例添加额外依赖包到本地仓库 cp mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm /root/keepalived_offline/ createrepo --update /root/keepalived_offline/4. 构建离线安装仓库4.1 创建本地Yum源将下载的rpm包制作成可移植的本地仓库# 安装createrepo工具 yum install -y createrepo # 创建仓库元数据 cd /root/keepalived_offline createrepo . # 生成仓库配置文件 cat /etc/yum.repos.d/local.repo EOF [local] nameLocal Repository baseurlfile:///root/keepalived_offline enabled1 gpgcheck0 EOF4.2 打包转移方案建议使用以下目录结构打包方便内网部署keepalived_offline_pkg/ ├── install.sh # 安装脚本 ├── local.repo # 仓库配置文件 └── packages/ # 所有rpm包 ├── keepalived-1.3.5-19.el7.x86_64.rpm └── ...使用tar打包时注意保留文件权限tar -czvf keepalived_offline.tar.gz --ownerroot --grouproot keepalived_offline_pkg5. 内网批量部署实战5.1 单节点安装流程将离线包上传到内网机器后执行标准化安装# 解压安装包 tar -xzvf keepalived_offline.tar.gz -C /opt # 配置本地yum源 cp /opt/keepalived_offline_pkg/local.repo /etc/yum.repos.d/ # 清除yum缓存 yum clean all yum makecache # 安装Keepalived yum install -y keepalived5.2 自动化集群部署对于多节点部署可以结合expect脚本实现无人值守安装#!/usr/bin/expect set timeout 300 spawn ssh root192.168.1.101 expect { *password: { send your_password\r } } expect # send tar -xzvf /tmp/keepalived_offline.tar.gz -C /opt\r send cp /opt/keepalived_offline_pkg/local.repo /etc/yum.repos.d/\r send yum install -y keepalived\r send exit\r expect eof6. 验证与排错指南6.1 安装结果验证执行以下命令确认安装成功# 检查版本 keepalived --version # 查看服务状态 systemctl status keepalived # 测试启动 systemctl start keepalived journalctl -u keepalived -f6.2 常见问题解决依赖冲突问题若出现Transaction check error可尝试rpm -ivh *.rpm --nodeps --force服务启动失败检查配置文件语法keepalived -t -f /etc/keepalived/keepalived.confSNMP相关错误在简单场景下可以禁用SNMP检查vi /etc/keepalived/keepalived.conf # 添加以下配置段 global_defs { enable_snmp_keepalived no enable_snmp_vrrp no }7. 进阶配置建议7.1 开机自启优化对于生产环境建议调整systemd服务配置vi /usr/lib/systemd/system/keepalived.service # 修改以下参数 Restartalways RestartSec5s # 重载配置 systemctl daemon-reload7.2 安全加固措施限制配置文件权限chmod 640 /etc/keepalived/keepalived.conf chown root:keepalived /etc/keepalived/keepalived.conf启用日志监控vi /etc/rsyslog.conf # 添加 local0.* /var/log/keepalived.log # 创建日志轮转 vi /etc/logrotate.d/keepalived /var/log/keepalived.log { daily rotate 7 compress delaycompress missingok notifempty }8. 扩展应用场景同样的方法适用于其他服务的离线部署。比如最近在某医疗项目中我用相同方案离线部署了NginxKeepalived组合先在外网机通过yum下载Nginx及其依赖与Keepalived包合并成统一仓库编写组合安装脚本批量部署到30多台内网服务器这种方案的最大优势是保持环境一致性。曾经遇到过客户现场因手动下载依赖版本不一致导致的内存泄漏问题使用标准化离线仓库后彻底避免了此类问题。