我起初是用helm在k8s上装的harbor,最近遇到如下故障:就是服务器硬件设备故障突然死机,恰巧是harbor容器所在的服务器,其他在这个服务器上运行的容器,由kubelet调度到其他正常的服务器上重启去了,但harbkor并没有被调度走。移动到其他服务器上的容器,需要重新连接harbor拉取镜像,但私有仓库挂了,镜像也就拉取失败,直接导致所有在这个宕机的服务器上运行的容器全部挂了,无法再次启动。所以就想着把harbor从k8s中替换出来,找两台固定的服务器做一个高可用HA,这样harbor再次失效的可能性就小一些。
我选择的HA架构是如下图所示,如果机器富裕,我感觉不用这种架构,把数据独立共享出来可能会更好一些。

我这张图是下载网上的,这里没有用负载均衡Haproxy,只是用了Keepalived做了一个虚拟地址,然后把域名绑定到虚拟地址上,一旦一台harbor的主机宕机,虚拟地址自动漂移到另一台harbor上,可确保harbor始终在线,这里只要做好两台harbor的数据同步就可以了。如果不是两台主机同时挂,应该不会出现上述故障现象了。如下是操作步骤。
我选择的两台主机ip分别为11.12.3.97和11.12.3.98使用keepalived虚拟出来的地址是11.12.3.99,要确保这些ip地址不会冲突,且网络可达。
在主机上安装docker、docker-compose、python3、pip和keepalived,然后参考优快云我之前写的这篇文章配置keepalived,停机测试虚拟地址是否可以正常漂移。在安装docker组件的时候要注意版本的问题,不然安装harbor会报错。我这里用的版本是:

文章讲述了作者在Kubernetes集群中使用Helm部署Harbor遇到故障后的解决方案,即通过Keepalived实现Harbor的高可用性,使用两台服务器并同步数据以应对硬件故障。作者详细描述了安装、配置和同步过程,以及存在的问题和改进策略。
最低0.47元/天 解锁文章
1417

被折叠的 条评论
为什么被折叠?



