一 Harbor主从介绍

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

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

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

二 Harbor主从部署

2.1 前期准备

节点
IP地址
备注
docker01
172.24.8.111
Docker harbor主节点,reg.harbor01.com
docker02
172.24.8.112
Docker harbor从节点,reg.harbor02.com
docker03
172.24.8.113
Docker客户端,用于测试仓库
建议所有节点添加hosts解析:
 172.24.8.111 reg.harbor01.com
172.24.8.112 reg.harbor02.com
 

2.1 主从节点部署Harbor

部署方法可参考《011.Docker仓库管理》部署。
提示:主从节点都必须部署Harbor,本实验采用http形式,只需要修改hostname为对应的域名即可。
注意:Job services主要用于镜像复制,本地镜像可以被同步到远程Harbor实例上。因此若采用域名配置,则需要在jobservice的hosts中添加主从解析,为方便修改,可将使用以下脚本快速在所有容器hosts添加相应解析:
 root@docker02:~/harbor# cat addhosts.sh
#!/bin/sh
#****************************************************************#
# ScriptName: test.sh
# Author: xhy@itzgr.com
# Create Date: 2018-10-27 15:48
# Modify Author: xhy@itzgr.com
#***************************************************************#
docker ps | awk '{print $1}'>./dockerlist.txt
for id in `cat ./dockerlist.txt`
do
HOSTS=`docker inspect $id | grep hosts | awk -F "\"" '{print $4}'`
echo -e "172.24.8.111 reg.harbor01.com\n172.24.8.112 reg.harbor02.com" >> $HOSTS
done
 
在Harbor部署完毕后执行该脚本:chmod u+x addhosts.sh && bash addhosts.sh。

2.2 主节点测试

浏览器使用默认账号和密码Harbor12345访问:http://reg.harbor01.com

2.3 创建用于复制的测试项目

2.4 仓库管理新建从目标

2.5 创建复制策略

2.6 docker 客户端测试

 root@docker03:~# vi /etc/hosts
172.24.8.111 reg.harbor01.com
172.24.8.112 reg.harbor02.com
root@docker03:~# vi /etc/docker/daemon.json
{
"insecure-registries": ["http://reg.harbor01.com","http://reg.harbor02.com"]
}
root@docker03:~# systemctl daemon-reload
root@docker03:~# systemctl restart docker.service
root@docker03:~# docker login reg.harbor01.com #登录registry
Username: admin
Password:
 
提示:公开的registry可pull,但push也必须登录,私有的registry必须登录才可pull和push。
 root@docker03:~# docker pull hello-world
root@docker03:~# docker tag hello-world:latest reg.harbor01.com/copyregistry/hello-world:xhy
root@docker03:~# docker push reg.harbor01.com/copyregistry/hello-world:xhy
 
浏览器使用默认账号和密码Harbor12345访问:http://reg.harbor01.com,查看是否同步状态:
浏览器使用默认账号和密码Harbor12345访问:http://reg.harbor02.com,查看是否同步成功:
 
参考链接:https://www.cnblogs.com/breezey/p/9444231.html
参考链接:https://blog.csdn.net/hiyun9/article/details/79655385

最新文章

  1. ManualResetEvent知识总结
  2. Linux -- objdump二进制文件比较
  3. UnitTesting中的ClassInitialize,ClassCleanup,TestInitialize,TestClearup
  4. 《开源安全运维平台OSSIM最佳实践》
  5. ruby -- 问题解决(四)编码错误导致无法显示(2)
  6. ZOJ 2112 Dynamic Rankings(主席树の动态kth)
  7. JAVA_输入输出流 异常处理
  8. 浏览器被hao.360.cn劫持怎么办
  9. Lazy Loading Images
  10. Jquery.linq 使用示例
  11. java遍历map方法
  12. Android的debug.keystore拒绝访问导致的生成异常及解决方案
  13. uva10635 LCS映射转LIS
  14. 201521123072《java程序设计》第十二周学习总结
  15. java项目打包生成MD5文件
  16. Python常用字符编码
  17. Js之设置日期时间 判断日期是否在范围内
  18. mysql的增删改查
  19. Golang并发编程中select简单了解
  20. SFTP 常用命令 —— SecureCRT版本

热门文章

  1. vue学习之用 Vue.js + Vue Router 创建单页应用的几个步骤
  2. saltstack系列~第一篇
  3. mysql 案例 ~ 分析执行完的大事务
  4. mysql 开源~canal维护相关问题
  5. eMMC基础技术8:操作模式1-boot mode
  6. ftruncate(改变文件大小)
  7. 四种加载React数据的技术对比(Meteor 转)
  8. genstr.py
  9. Struts2的类型转换器
  10. 配置mysql5.5主从复制、半同步复制、主主复制