在生产环境中,本地YUM仓库的部署远比单机复杂,需要考虑高可用性、性能、安全性和可维护性。以下是企业级最佳实践:
1. 典型生产架构
(1) 独立仓库服务器
图表
-
核心组件:
-
仓库服务器:专用物理机/虚拟机(2C4G+,存储≥500GB)
-
存储:RAID10或分布式存储(Ceph/GlusterFS)
-
访问协议:HTTP(S)(Nginx/Apache)或NFS
-
同步工具:
reposync
+createrepo
+ 定时任务
-
(2) 高可用方案(大型企业)
图表
-
关键设计:
-
主备仓库双活(VIP漂移或DNS轮询)
-
使用CDN分发仓库内容(全球分支机构场景)
-
2. 生产级实施步骤
(1) 硬件规划
组件 | 规格要求 |
---|---|
CPU | 4核+(同步时CPU密集型) |
内存 | 8GB+(处理大量元数据) |
存储 | 500GB+ SSD(随机IOPS要求高) |
网络 | 千兆/万兆(内网带宽瓶颈排查) |
(2) 软件部署
bash
# 在仓库服务器上操作
yum install -y yum-utils createrepo nginx
# 创建仓库目录结构
mkdir -p /data/yum/{centos7,epel,custom}
# 同步官方源(示例:CentOS Base)
reposync --repo=base --download-metadata -p /data/yum/centos7
createrepo /data/yum/centos7
# 配置Nginx共享
cat > /etc/nginx/conf.d/yum.conf <<EOF
server {
listen 80;
server_name yum.internal.company.com;
root /data/yum;
autoindex on;
location / {
allow 10.0.0.0/8; # 限制内网访问
}
}
EOF
systemctl start nginx
(3) 客户端配置
bash
# 生产服务器上的repo文件配置
cat > /etc/yum.repos.d/company.repo <<EOF
[company-base]
name=Company CentOS Repository
baseurl=http://yum.internal.company.com/centos7
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[company-epel]
name=Company EPEL Repository
baseurl=http://yum.internal.company.com/epel
enabled=1
gpgcheck=0
EOF
3. 生产环境关键优化
(1) 自动化同步
bash
# 每日凌晨同步的crontab
0 3 * * * /usr/bin/reposync --repo=base -p /data/yum/centos7 --download-metadata --delete >> /var/log/yum-sync.log
0 4 * * * /usr/bin/createrepo --update /data/yum/centos7
(2) 安全控制
-
访问控制:
-
Nginx/IPtables限制IP段
-
HTTPS + 客户端证书认证
-
-
完整性校验:
bash
# 对所有RPM包生成校验和 find /data/yum -type f -name "*.rpm" | xargs sha256sum > /data/yum/checksums.txt
(3) 监控与告警
-
仓库健康检查:
bash
# 检查元数据是否完整 curl -I http://yum.internal.company.com/centos7/repodata/repomd.xml | grep 200
-
Zabbix监控项:
-
存储剩余空间
-
同步任务退出状态码
-
客户端下载成功率
-
4. 企业级扩展方案
(1) 分层仓库
图表
-
适用场景:跨国企业、多数据中心
(2) 容器化仓库
-
工具选择:
-
Nexus Repository Manager
-
Pulp (Red Hat官方解决方案)
-
-
优势:
-
支持Docker/RPM/DEB多格式
-
内置访问控制和存储配额
-
5. 故障排查手册
问题现象 | 排查命令 | 解决方案 |
---|---|---|
客户端无法访问仓库 | curl -v http://yum-server/repodata | 检查Nginx日志/防火墙规则 |
依赖解析失败 | yum deplist package-name | 手动补充缺失依赖包 |
同步速度慢 | iotop -o 查看磁盘IO | 更换SSD或调整rsync参数 |
总结:生产环境核心原则
-
隔离性:仓库服务器独立部署,不与业务混用
-
自动化:同步/元数据生成/监控全流程脚本化
-
可审计:所有软件包需记录来源和版本
-
灾备:定期备份仓库数据(至少保留3个版本)
📌 最终建议:超过50台服务器的环境建议使用 Pulp 或 Nexus 专业仓库管理工具,而非手动维护。