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
拓扑图如下
部署要点:
- harbor201和harbor202上,通过仓库复制,实现两台harbor仓库的镜像同步;
- 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 # 验证
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 }
Ha211的配置见上。
由于VRRP的主在Ha210上,在Ha210上查看接口IP,应该可以看到 192.168.102.212
用curl http://192.168.102.212 检查服务是否正常。
配置完成后,即可用 http://192.168.102.212 来访问上述高可用架构。