zoukankan      html  css  js  c++  java
  • (十八)VMware Harbor 镜像同步

    为什么需要镜像同步

    由于对镜像的访问是一个核心的容器概念,在实际使用过程中,一个镜像库可能是不够用的,下例情况下,我们可能会需要部署多个镜像仓库:

    • 国外的公有镜像下载过慢,需要一个中转仓库进行加速
    • 容器规模较大,一个镜像仓库不堪重负
    • 对系统稳定性要求高,需要多个仓库保证高可用性
    • 镜像仓库有多级规划,下级仓库依赖上级仓库

    更常用的场景是,在企业级软件环境中,会在软件开发的不同阶段存在不同的镜像仓库,

    • 在开发环境库,开发人员频繁修改镜像,一旦代码完成,生成稳定的镜像即需要同步到测试环境。
    • 在测试环境库,测试人员对镜像是只读操作,测试完成后,将镜像同步到预上线环境库。
    • 在预上线环境库,运维人员对镜像也是只读操作,一旦运行正常,即将镜像同步到生产环境库。
    • 在这个流程中,各环境的镜像库之间都需要镜像的同步和复制。

    功能简介

    在功能设计方面,Harbor仍然以“项目”为中心, 通过对项目配置“复制策略”,标明需要复制的项目以及镜像。管理员在复制策略中指明目标实例,即复制的“目的地”,并对它的地址和连接时使用的用户名密码进行设置。当复制策略被激活时,源项目下的所有镜像,都会被复制到目标实例;此外,当源项目下的镜像被添加或删除(push或delete), 只要策略还在激活状态,镜像的变化都会同步到目标实例上去, 如下图所示

    在较大的容器集群中,往往需要多个Registry服务器做负载均衡,可以采用主从发布模式,镜像只需要发布一次,就可以推送到多个Registry实例中。同时还支持双主复制和层次型的多级镜像发布,如下图所示: 

    Harbor的镜像同步机制

    有了多个镜像仓库,在多个仓库之间进行镜像同步马上就成为了一个普遍的需求。比较传统的镜像同步方式,有两种:

    • 第一种方案,使用Linux提供的RSYNC服务来定义两个仓库之间的镜像数据同步。
    • 第二种方案,对于使用IaaS服务进行镜像存储的场景,利用IaaS的配置工具来对镜像的同步进行配置。

    这两种方案都依赖于仓库所在的存储环境,而需要采用不同的工具策略。Harbor则提供了更加灵活的方案来处理镜像的同步,其核心是三个概念:

    • 用Harbor自己的API来进行镜像下载和传输,作到与底层存储环境解耦。
    • 利用任务调度和监控机制进行复制任务的管理,保障复制任务的健壮性。在同步过程中,如果源镜像已删除,Harbor会自动同步删除远端的镜像。在镜像同步复制的过程中,Harbor会监控整个复制过程,遇到网络等错误,会自动重试。
    • 提供复制策略机制保证项目级的复制需求。在Harbor中,可以在项目中创建复制策略,来实现对镜像的同步。与Docker Registry的不同之处在于,Harbor的复制是推(PUSH)的策略,由源端发起,而Docker Registry的复制是拉(PULL)的策略,由目标端发起。

    我们准备两台机器,并分别安装好Harbor( 版本:1.4.0 ):

    主Harbor harbor.test.com 192.168.5.150
    备Harbor harbor-01.test.com 192.168.5.151
    docker client   192.168.5.107

    1. 在主Harbor 创建新项目test

    2.在主Harbor的仓库管理->新建目标:

     

    3.在Harbor的复制管理->新建规则:

    4.在客户端上传image到主Harbor

    [root@clinet ~]# docker push harbor.test.com/test/docker-test:latest
    The push refers to a repository [harbor.test.com/test/docker-test]
    146788dad3cb: Layer already exists 
    2f6c24bddb30: Layer already exists 
    952a32dca55a: Layer already exists 
    b308dc99c2a4: Layer already exists 
    4ac76077f2c7: Layer already exists 
    latest: digest: sha256:520230466225bac646e1cd5ff645eb3f6d24b8e62039e5ffb5d355c67e4058e6 size: 1354

    5.在主Harbor的复制管理中看到多了一条复制任务在执行:

    6.再在备Harbor中已经看到test/docker-test.latest 已经从主Harbor自动复制过来:

    参考:https://blog.csdn.net/hxpjava1/article/details/79308890

    参考:https://blog.csdn.net/kozazyh/article/details/79829463

    参考:https://my.oschina.net/vmwareharbor/blog/728085

  • 相关阅读:
    优化Android Studio/Gradle构建
    Android sdk 搭建
    map排序
    单例
    一些rtsp实现的开源代码
    MySQL性能优化/调优:默认配置的修改
    mysql 优化 实现命中率100%
    mysql性能优化-慢查询分析、优化索引和配置
    findbugs规则
    网络编程及并发编程总结
  • 原文地址:https://www.cnblogs.com/shix0909/p/11115122.html
Copyright © 2011-2022 走看看