Docker + Harbor自身的镜像双向复制 + Keepalived 高可用

41次阅读
没有评论

Docker + Harbor + Keepalived 高可用+harbor自身的镜像双向复制

一、整体架构

  • 主节点:10.0.0.91
  • 备节点:10.0.0.92
  • VIP:10.0.0.99(用户唯一访问入口)
  • 数据:Harbor 双向镜像复制
  • 高可用:Keepalived + 服务健康检查

二、Harbor 配置要点

两台节点的 harbor.ymlhostname 统一配置为 VIP 10.0.0.99,保证切换后访问地址、回调地址一致。

yaml

hostname: 10.0.0.99
http:
  port: 80
https:
  port: 443
  certificate: xxx
  private_key: xxx

配置后执行:

./prepare
docker-compose down
docker-compose up -d

三、Keepalived + 健康检查(服务级 HA)

1. 检查脚本 /etc/keepalived/check_harbor.sh

#!/bin/bash
curl -s -o /dev/null http://127.0.0.1:80
if [ $? -ne 0 ];then
  exit 1
fi

docker ps | grep harbor-core > /dev/null
if [ $? -ne 0 ];then
  exit 1
fi

exit 0
chmod +x /etc/keepalived/check_harbor.sh

2. 主节点 keepalived.conf

global_defs {
    router_id HARBOR_HA
}

vrrp_script check_harbor {
    script "/etc/keepalived/check_harbor.sh"
    interval 2
    weight -20
    fall 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        check_harbor
    }

    virtual_ipaddress {
        10.0.0.99/24
    }
}

3. 备节点

仅修改:

state BACKUP
priority 100

其余完全一致。


四、为什么用户一开始就访问 10.0.0.99?

  • Keepalived 启动后,VIP 自动绑定在主节点
  • Harbor 对外地址就是 VIP
  • 用户 docker login 10.0.0.99 直接访问 VIP
  • 无需关心后端真实节点

五、Harbor 数据一致性(高可用关键)

两台 Harbor 配置双向复制

  • 91 复制到 92
  • 92 复制到 91模式:基于事件驱动 + 定时同步确保主备镜像、用户、权限一致。

六、典型故障与切换

  1. 主节点机器宕机 → VIP 漂移至备机
  2. Harbor 核心容器挂了 → 脚本检测失败 → 权重降低 → VIP 漂移
  3. 网络异常 → 自动切换整个过程用户无感知。

七、总结

两台 Harbor 统一使用 VIP 作为 hostname,通过双向复制保证数据一致;使用 Keepalived 实现 VIP 高可用,并搭配服务健康检查脚本,实现机器宕机或 Harbor 服务异常时自动漂移 VIP,用户全程只访问 VIP,实现无感知高可用。

正文完
 0
评论(没有评论)