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

本篇想实现Harbor的高可用。

1. 结构与部署要点

所用到的主机:

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 2022-01-08 22:36  NetDevOps  阅读(552)  评论(1编辑  收藏  举报

导航