港高可用集群配置

  <强>乔木是由VMWare在码头工人注册中心的基础之上进行了二次封装,加进去了很多额外程序,而且提供了一个非常漂亮的web界面。   

  港高可用集群配置

     <>强说明   

在上一篇,   《企业级安装与配置港镜像管理系统》中,我们简要说明了单机版本港口的配置。然而这种单机部署显然无法满足在生产中需求,必须要保证应用的高可用性。

  

目前有两种主流的方案来解决这个问题:

  

双主复制

  

多港实例共享后端存储

     <强>双主复制         

港官方默认提供主从复制的方案来解决镜像同步问题,通过复制的方式,我们可以实时将测试环境港仓库的镜像同步到生产环境港类似于如下流程:

  

  港高可用集群配置

  

在实际生产运维的中,往往需要把镜像发布到几十或上百台集群节点上。这时,单个注册表已经无法满足大量节点的下载需求,因此要配置多个注册表实例做负载均衡。手工维护多个注册表实例上的镜像,将是十分繁琐的事情.Harbor可以支持一主多从的镜像发布模式,可以解决大规模镜像发布的难题:

  

  港高可用集群配置

  

只要往一台注册表上发布,镜像就像“仙女散花”般地同步到多个注册表中,高效可靠。

  

如果是地域分布较广的集群,还可以采用层次型发布方式,如从集团总部同步到省公司,从省公司再同步到市公司:

  

  港高可用集群配置

  

然而单靠主从同步,仍然解决不了港主节点的单点问题。

        

所谓的双主复制其实就是复用主从同步实现两个海港节点之间的双向同步,来保证数据的一致性,然后在两台港口前端顶一个负载均衡器将进来的请求分流到不同的实例中去,只要有一个实例中有了新的镜像,就是自动的同步复制到另外的的实例中去,这样实现了负载均衡,也避免了单点故障,在一定程度上实现了港口的高可用性:

  

  港高可用集群配置

  

这个方案有一个问题就是有可能两个港实例中的数据不一致。假设如果一个实例一个挂掉了,这个时候有新的镜像进来,那么新的镜像就会在另外一个实例B中,后面即使恢复了挂掉的一个实例,港实例B也不会自动去同步镜像,这样只能手动的先关掉港实例B的复制策略,然后再开启复制策略,才能让实例B数据同步,让两个实例的数据一致。

  

另外,我还需要多吐槽一句,在实际生产使用中,主从复制十分的不靠谱。

  

所以这里推荐使用下面要说的这种方案。

     <>强多港实例共享后端存储         

共享后端存储算是一种比较标准的方案,就是多个港实例共享同一个后端存储,任何一个实例持久化到存储的镜像,都可被其他实例中读取。通过前置磅进来的请求,可以分流到不同的实例中去处理,这样就实现了负载均衡,也避免了单点故障:

  

  港高可用集群配置

  

这个方案在实际生产环境中部署需要考虑三个问题:

  

共享存储的选取,港口的后端存储目前支持AWS S3, Openstack迅速、Ceph等,在我们的实验环境里,就直接使用nfs。

  

会话在不同的实例上共享,这个现在其实已经不是问题了,在最新的港口中,默认会话会存放在复述中,我们只需要将复述,独立出来即可。可以通过复述,前哨或者复述,集群等方式来保证复述的可用性。在我们的实验环境里,仍然使用单台复述。

  

港多实例数据库问题,这个也只需要将港口中的数据库拆出来独立部署即可。让多实例共用一个外部数据库,数据库的高可用也可以通过数据库的高可用方案保证。

     <强>环境说明         <>以前ip的作用   192.168.198.133港   192.168.198.135港   192.168.198.136复述,mysql, nfs   

需要强调的是,我们的环境中,不包括负载均衡器的配置,请自行查阅负载均衡配置相关文档

港高可用集群配置