Habor的高可用(Keepalived+Haproxy+Harbor)

本篇想实现Harbor的高可用。

1. 结构与部署要点

所用到的主机:

1
2
3
4
5
6
7
8
9
192.168.102.201     harbor201    // Harbor 仓库1
192.168.102.202     harbor202    // Harbor 仓库2
192.168.102.210     ha210          // 负责2台Harbor仓库的SLB,本身也实现了高可用
192.168.102.211     ha211          // 负责2台Harbor仓库的SLB,本身也实现了高可用
192.168.102.212               haproxy VIP
192.168.102.215     docker215    // Docker host
192.168.102.216     docker216    // Docker host
192.168.102.190     client1
192.168.102.191     client2   

  

拓扑图如下

 

 部署要点:

  1. harbor201和harbor202上,通过仓库复制,实现两台harbor仓库的镜像同步;
  2. ha210和ha211上,分别部署了Haproxy和keepalived,Haproxy实现对2台harbor仓库的LB,Keepalived实现2台haproxy的冗余。

 

2. 关键配置

2.1 通过仓库管理实现Harbor的高可用

两台Harbor通过仓库管理,建立到Peer的连接。配置要点如下

  • 在两台harbor上分别建立项目mara与用户mara,并将用户mara指定为项目mara的管理员;
  • 在两台harbor上,仓库管理——新建目标,建立到Peer的连接,见下图

    根据自己的情况,是否勾选验证远程证书
    下图是建立好连接的情况

  • 新建复制规则,复制管理——新建规则,根据自己的情况进行配置,如下图

 

通过上述配置,当对harbor201和harbor202中任一仓库进行增、删操作,都会同步到peer仓库,较简单地实现了Harbor的高可用。但存在以下缺点。

  • 当需要同步的harbor仓库数量增加时,仓库管理&复制管理中的配置会成倍增加;
  • 整体结构不灵活,不优雅。

 

 2.2 Harbor前端的负载均衡(Haproxy)

如何将上行流量负载到2台不同的harbor服务器上,需要用到Nginx、LVS、Haproxy等工具来实现,在这儿采用Haproxy。

Ha210的配置如下。

复制代码
 1 yum install -y haproxy
 2 systemctl start haproxy; systemctl enable haproxy
 3 cp /etc/haproxy/haproxy.conf{,.bak}
 4 vim /etc/haproxy/haproxy.conf
 5 //// 以下是haproxy.conf的关键配置
 6     listen harbor
 7         bind *:80
 8         mode tcp
 9         log global
10         balance source
11         server harbor201 192.168.102.201:80 check inter 3s fall 3 rise 5
12         server harbor202 192.168.102.202:80 check inter 3s fall 3 rise 5
13 //// haproxy.conf 结束
14 systemctl restart haproxy
15 ss -ntlp | grep 80
16 curl http://192.168.102.210        # 验证
View Code
复制代码

Ha211的配置与Ha210类似 。

完成上述配置后,无论登录Ha210、Ha211,都可以对后面的Harbor仓库进行管理。

当关闭Harbor201时,流量会切换到habor202上,登录信息会重置,镜像内容不受影响。

 

2.3 Keepalived实现VRRP

通过Keepalived,实现两台Haproxy只对外提供一个服务IP。

Keepalived的相关配置如下。

Ha210:

复制代码
 1 yum install -y keepalived
 2 systemctl enable keepalived; systemctl start keepalived
 3 cp /etc/keepalived/keepalived.conf{,.bak}
 4 vim /etc/keepalived/keepalived.conf
 5 //// 以下是keepalived.conf的关键配置,其他VRRP的配置删除
 6 vrrp_instance harbor_1 {
 7   state MASTER        // 备机:state BACKUP
 8   interface ens33
 9   virtual_router_id 101
10   priority 100
11   advert_int 1
12   virtual_ipaddress {
13     192.168.102.212
14   }
15 }
View Code
复制代码

Ha211的配置见上。

由于VRRP的主在Ha210上,在Ha210上查看接口IP,应该可以看到 192.168.102.212

 

 用curl http://192.168.102.212 检查服务是否正常。

 

配置完成后,即可用 http://192.168.102.212 来访问上述高可用架构。

 

posted on   NetDevOps  阅读(588)  评论(1编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示