高可用无单点架构之镜像仓库
本篇文章探讨镜像仓库registry
的高可用
镜像仓库高可用无单点故障涉及那些场景#
镜像仓库对外提供访问无单点故障#
镜像仓库对外提供的访问点保持高可用
镜像仓库的数据存储高可用#
存储在镜像仓库中的数据都得是高可用的
镜像仓库无单点故障技术关键点#
镜像仓库对外提供访问无单点故障#
和上一篇文章一样,如果IaaS
能提供ELB
,我们最好是使用ELB
,或者使用浮动IP的方式替换
镜像仓库的数据存储高可用#
- 配置镜像仓库使用
IaaS
的S3存储 - 配置镜像仓库使用本地存储,通过共享文件路径存储来实现高可用,如
Glusterfs
等 - 配置镜像仓库使用S3存储,自建兼容S3 API的存储
Server
通常会使用共享存储来做到镜像仓库存储的高可用
方案概述#
那么其实镜像仓库的高可用方案就是对上面方案的组合,下面我们举几个例子
镜像仓库依赖组件部署方式#
MinIo
、KeepAlived
、registry
都推荐使用容器部署,方便运维管理,但是镜像推荐内置到虚拟机中,不依赖镜像仓库或其他组件,避免循环依赖
使用IaaS的S3存储 + 负载均衡组件#
这是最简单的方案,得益于云厂商提供的S3存储和负载均衡组件,我们可以进行很简单的配置,并部署一台以上的registry
,如下图所示
自建兼容S3存储 + KeepAlived浮动Ip#
我们可以自己搭建MinIo
集群来作为兼容S3存储,由于MINIO最低部署4个节点,我们需要根据故障域机器来选择部署MINIO的数目,比如,故障域是三台物理机,我们部署4节点就不妥。原因是,4节点,总会有一台物理机上会部署2个minio节点,如果这台物理机挂掉,就会导致单点故障。所以,如果故障域为三台物理机,我们最好部署6节点,可容忍一台物理机宕机。其他的节点,读者也可以自行测算。
下图是假设三台物理机,minio
6副本场景下的部署示意图
注,为了图的美观,并未画出所有的连线
MINIO关键配置#
- 节点数目6个
- EC2