ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Rocky Linux上Harbor高可用集群部署指南

Rocky Linux上Harbor高可用集群部署指南

1. 项目概述

在现代化IT基础设施中,容器镜像仓库的高可用部署已成为企业级DevOps实践的标配。Rocky Linux作为RHEL的完美替代品,结合Harbor的企业级镜像管理能力,能够构建出稳定可靠的容器化基础设施。本文将详细记录一个生产级Harbor高可用集群在Rocky Linux上的完整部署过程。

2. 环境规划与准备

2.1 硬件资源配置建议

对于生产环境,建议采用以下配置:

  • 控制节点:3台,每台8核CPU/16GB内存/100GB存储
  • 工作节点:2台,每台16核CPU/32GB内存/200GB存储
  • 负载均衡器:2台,每台4核CPU/8GB内存/50GB存储

注意:实际配置应根据预期负载调整,镜像存储量大的场景需要额外规划存储节点

2.2 软件版本选型

经过实际测试验证的稳定版本组合:

  • 操作系统:Rocky Linux 8.6
  • Harbor:v2.6.2
  • Docker:20.10.17
  • Docker Compose:v2.6.0
  • PostgreSQL:13.5
  • Redis:6.2.6

3. 基础环境部署

3.1 Rocky Linux系统初始化

在所有节点执行以下初始化操作:

# 设置主机名 hostnamectl set-hostname node1 # 关闭SELinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 # 配置防火墙 firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-port=4443/tcp firewall-cmd --reload # 安装基础工具 dnf install -y vim wget curl net-tools lsof

3.2 Docker环境部署

# 安装依赖 dnf install -y yum-utils device-mapper-persistent-data lvm2 # 添加Docker仓库 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装Docker dnf install -y docker-ce docker-ce-cli containerd.io # 配置Docker mkdir -p /etc/docker cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "registry-mirrors": ["https://registry.docker-cn.com"] } EOF # 启动服务 systemctl enable docker systemctl start docker

4. Harbor高可用集群部署

4.1 负载均衡配置

使用Nginx作为Harbor前端负载均衡器:

upstream harbor { server 192.168.1.101:80; server 192.168.1.102:80; server 192.168.1.103:80; } server { listen 80; server_name harbor.example.com; location / { proxy_pass http://harbor; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

4.2 数据库集群部署

PostgreSQL主从配置:

# 主节点配置 vim /var/lib/pgsql/13/data/postgresql.conf # 修改以下参数 wal_level = replica max_wal_senders = 3 wal_keep_size = 1GB # 从节点配置 pg_basebackup -h 192.168.1.101 -U replicator -D /var/lib/pgsql/13/data -P echo "standby_mode = 'on'" >> /var/lib/pgsql/13/data/recovery.conf echo "primary_conninfo = 'host=192.168.1.101 port=5432 user=replicator password=yourpassword'" >> /var/lib/pgsql/13/data/recovery.conf

4.3 Redis哨兵模式配置

三节点Redis哨兵配置示例:

# redis.conf bind 0.0.0.0 protected-mode no port 6379 daemonize yes requirepass yourpassword # sentinel.conf sentinel monitor mymaster 192.168.1.101 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 10000 sentinel auth-pass mymaster yourpassword

4.4 Harbor安装与配置

下载并解压Harbor安装包:

wget https://github.com/goharbor/harbor/releases/download/v2.6.2/harbor-offline-installer-v2.6.2.tgz tar xvf harbor-offline-installer-v2.6.2.tgz cd harbor

修改harbor.yml配置文件:

hostname: harbor.example.com http: port: 80 https: port: 443 certificate: /data/cert/server.crt private_key: /data/cert/server.key harbor_admin_password: Harbor12345 database: password: root123 max_idle_conns: 100 max_open_conns: 900 data_volume: /data clair: updaters_interval: 12 jobservice: max_job_workers: 10 notification: webhook_job_max_retry: 3 chart: absolute_url: disabled log: level: info local: rotate_count: 50 rotate_size: 200M location: /var/log/harbor

执行安装脚本:

./install.sh --with-clair --with-chartmuseum

5. 存储方案集成

5.1 MinIO集群部署

作为Harbor的存储后端,MinIO提供高可用对象存储:

# 下载MinIO wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio mv minio /usr/local/bin/ # 创建启动脚本 cat > /etc/systemd/system/minio.service <<EOF [Unit] Description=MinIO After=network.target [Service] Type=simple User=minio Group=minio ExecStart=/usr/local/bin/minio server http://node{1...4}/data{1...4} \ --console-address ":9001" Restart=always [Install] WantedBy=multi-user.target EOF # 启动服务 systemctl daemon-reload systemctl enable minio systemctl start minio

5.2 Harbor配置MinIO存储

修改harbor.yml:

storage_service: s3: accesskey: yourminioaccesskey secretkey: yourminiosecretkey region: us-east-1 bucket: harbor endpoint: https://minio.example.com secure: true chunksize: 5242880 rootdirectory: /harbor

6. 运维与监控

6.1 日常维护命令

# 查看服务状态 docker-compose ps # 停止Harbor docker-compose down -v # 启动Harbor docker-compose up -d # 备份数据 tar czvf harbor-data-$(date +"%Y%m%d").tar.gz /data/database /data/registry

6.2 Prometheus监控配置

Harbor监控指标采集配置示例:

scrape_configs: - job_name: 'harbor' static_configs: - targets: ['harbor.example.com'] metrics_path: '/metrics' scheme: 'https' tls_config: insecure_skip_verify: true

7. 常见问题排查

7.1 镜像推送失败

可能原因及解决方案:

  1. 证书问题:确保客户端配置了正确的CA证书
  2. 存储空间不足:检查MinIO存储配额
  3. 网络问题:验证节点间网络连通性

7.2 登录认证失败

检查步骤:

  1. 确认PostgreSQL服务正常运行
  2. 验证Redis缓存服务状态
  3. 检查Harbor核心服务日志
docker logs harbor-core

7.3 高可用切换异常

故障转移测试方法:

  1. 手动停止主节点Harbor服务
  2. 观察负载均衡器自动切换
  3. 验证从节点服务接管情况

8. 性能优化建议

  1. 数据库优化:

    • 增加PostgreSQL连接池大小
    • 配置合适的WAL日志保留策略
  2. 存储优化:

    • 使用SSD存储后端
    • 启用MinIO纠删码功能
  3. 网络优化:

    • 配置节点间万兆网络
    • 启用TCP BBR拥塞控制算法
# 启用BBR echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf sysctl -p

9. 安全加固措施

  1. 证书管理:

    • 使用Let's Encrypt自动续期证书
    • 配置证书轮换策略
  2. 访问控制:

    • 启用Harbor项目配额
    • 配置细粒度权限策略
  3. 审计日志:

    • 集中收集Harbor操作日志
    • 配置日志告警规则
# 日志审计配置示例 cat > /etc/rsyslog.d/harbor.conf <<EOF module(load="imfile" PollingInterval="10") input(type="imfile" File="/var/log/harbor/*.log" Tag="harbor" Severity="info" Facility="local7") EOF

10. 扩展功能集成

10.1 与CI/CD系统对接

Jenkins集成示例:

pipeline { agent any environment { HARBOR_CREDS = credentials('harbor-credential') } stages { stage('Build') { steps { sh 'docker build -t harbor.example.com/myproject/app:${BUILD_NUMBER} .' } } stage('Push') { steps { sh ''' docker login -u ${HARBOR_CREDS_USR} -p ${HARBOR_CREDS_PSW} harbor.example.com docker push harbor.example.com/myproject/app:${BUILD_NUMBER} ''' } } } }

10.2 镜像扫描策略配置

启用Clair漏洞扫描:

clair: updaters_interval: 12 http_proxy: http://proxy.example.com:3128 https_proxy: http://proxy.example.com:3128 no_proxy: 127.0.0.1,localhost,.example.com

11. 升级与迁移

11.1 Harbor版本升级步骤

  1. 备份数据库和配置文件
  2. 下载新版安装包
  3. 修改配置适配新版本
  4. 执行升级脚本
./prepare --with-clair --with-chartmuseum docker-compose up -d

11.2 数据迁移方案

跨集群迁移流程:

  1. 使用harbor-migrator工具导出元数据
  2. 同步镜像存储数据
  3. 在新集群导入元数据
  4. 验证数据完整性
# 导出数据 harbor-migrator export --config harbor.yml --output backup.tar.gz # 导入数据 harbor-migrator import --config harbor.yml --input backup.tar.gz

12. 灾备恢复方案

12.1 全量备份策略

建议备份以下内容:

  1. Harbor数据库dump
  2. 配置文件目录
  3. 证书文件
  4. 镜像存储数据
# 创建每日备份任务 0 2 * * * /usr/bin/pg_dump -U postgres -d registry > /backup/harbor-db-$(date +\%Y\%m\%d).sql 0 3 * * * tar czvf /backup/harbor-config-$(date +\%Y\%m\%d).tar.gz /harbor/config

12.2 灾难恢复流程

恢复步骤:

  1. 在新环境部署基础服务
  2. 恢复数据库备份
  3. 还原配置文件
  4. 同步存储数据
  5. 启动Harbor服务

13. 最佳实践总结

经过多个生产环境部署经验,总结以下关键点:

  1. 容量规划要预留30%以上余量
  2. 定期测试高可用切换功能
  3. 监控关键指标:存储使用率、API响应时间、认证成功率
  4. 建立完善的备份验证机制

实际部署中发现,配置合理的PostgreSQL连接池参数和Redis缓存策略,可以显著提升Harbor在高并发场景下的性能表现。建议根据实际负载情况,持续优化这些关键参数。

返回列表