如何板载到联合存储库

扩展您的开发组织通常涉及到将开发分散到全球多个位置。多站点开发的关键挑战之一是确保跨时区协作的团队能够可靠地访问所需的软件包和工件。JFrog软件供应链平台通过联合存储库解决了这一挑战JFrog Artifactory.
什么是联合存储库?
当两个或多个相同包类型的存储库通过联邦连接起来时,就会创建联合存储库,以便在不同的JFrog平台部署(jpd)或JFrog Artifactory实例之间启用自动的、完全的双向镜像(图1)。这种同步也会为地理同步环境或双活灾难恢复(DR)环境创建。
持续同步存储库的好处
联合存储库允许分布式团队访问同一组工件、构建和包,从而使他们能够轻松地一起工作。当工件从一个存储库推入或拉入另一个存储库时,这种配置消除了复杂的复制设置和规则的需要。总之,它使得跨多个jpd或开发站点共享组件的过程更容易管理和维护。
在开始使用联合存储库之前
在开始使用联合存储库之前,需要考虑某些基础结构元素。它们包括:
- 网络速度:联合在很大程度上依赖于网络基础设施,在配置两个jpd之间的联合时,应该考虑网络速度。
- 磁盘大小:当触发联合时,将在根磁盘上创建一些临时文件。因此,有足够的磁盘空间是必要的。
- 管理负载:联合将为Artifactory增加一些额外的负载,因此管理员必须考虑需要联合的内容、工件的大小以及要联合的工件数量。建议定期监控资源,如DB资源(例如CPU、连2022世界杯阿根廷预选赛赛程接、长时间运行的查询)和基础设施资源(例如CPU、内存、存储、JVM参数)。
在能够在联邦中连接存储库之前,还有一些先决条件:
- 适当的订阅/许可证级别(即企业X及以上)。
- 更早的人工版本7.49.3在联邦成员之间必须相同。
- 在创建联合存储库之前,必须配置自定义基础urlArtifactory。
- 必须在Artifactory实例之间设置信任圈。建立信任圈有两种方法:
- 设置相关jpd之间的绑定.要使用此选项,您必须将任务控制作为Artifactory的服务启用。
- 建立信任圈.此选项仅适用于自托管部署。
一旦检查了基础结构并确保拥有正确的JPD级别,就可以开始设置存储库联合了。
设置联合存储库的最佳实践
让我们来看看联邦存储库在三种场景下的最佳实践:
- 新创建的联合存储库
- 从推复制转移到联合存储库
- 将大型回购联合到现有成员站点
新创建的联合存储库
在大型企业中,通过为小型存储库配置联合来验证联合速度以及任何系统性能异常,开始时要慢一些。
在确保限制和资源满足要求之后,以批处理的方式启动其他存储库的联合。2022世界杯阿根廷预选赛赛程
可以根据技术或团队结构来安排联合。例如,可以先在通用存储库上批量执行联合,然后移动到Maven、Docker等。或者,联盟可以基于单个团队。例如,在移动到团队2之前,开始执行团队1的联合(即,为团队1复制/同步所有的存储库),然后是团队3。
由于时间限制,如果目标是将所有存储库从JPD1同步到JPD2,则可以遵循以下四个步骤:
- 将JPD1的文件存储复制到JPD2。
- 按照本文介绍的方法将配置从JPD1迁移到JPD2KB文章.
- 此迁移将在JPD2中为Artifactory和Access创建重复的服务id。因此,请联系JFrog支持以帮助更改服务id。
一旦迁移完成并更改了服务id,就可以将本地存储库转换为联合存储库和可以建立联邦用于增量数据同步。
从推/拉复制转移到联合存储库
在已经配置了推或拉复制以使JPD1和JPD2中的存储库保持同步的场景中,转换到联合相对容易一些,因为数据应该已经同步了。
同样,从转换最少使用的开始本地存储库到联合存储库监测上述基础设施资源。2022世界杯阿根廷预选赛赛程
如果在JPD1和JPD2之间使用了一个全局DNS,并且JPD1和JPD2的自定义基本URL是相同的,那么在配置描述符中根据基本URL配置配置联邦基本URL维基.
将大型存储库联合到现有成员站点
有一个用例用于建立从JPD1到JPD2的大型单个存储库的联合,并且这个联合从一开始就是全新的。
通过将这个大型存储库的Push复制设置到JPD2本地存储库来启动这个联合,这样这个Push复制就可以将所有存储库二进制文件从JPD1复制到JPD2。
建议使用Push复制,因为这种复制是单向的,不会像联合存储库那样增加太多负载,因为联合存储库同步是双向的。
当Push复制将这个大型存储库的所有数据从JPD1复制到JPD2之后,将这个大型本地存储库转换为联合存储库并监视上述基础设施资源。2022世界杯阿根廷预选赛赛程
在联合过程和调优参数期间需要注意的项
在利用联合存储库时,有一些潜在的问题需要注意:
- 元数据文件(如maven-metadata.xml)不会被联合。因此,JPD1和JPD2之间的联邦文件数量会有所不同。
- 对于Docker存储库,_uploads文件夹下的文件不会被联合,因此工件的数量在JPD1和JPD2之间不匹配。
- 当大型存储库的联合失败并且在日志中看到读超时时,超时时间应该增加,如本文所述维基通过简单地添加
artifactory.mirror.http.client.socket.timeout.mili = 200000参数中的artifactory.system.properties文件。 - 类似地,反向代理/负载均衡器上的超时也应该增加,因为联邦是通过它们重定向的。
- 由于联邦会给Artifactory增加一些负载,所以建议按照下面的说明调优您的Artifactory实例KB文章.
在成功调优Artifactory之后,联合存储库设置也可以调优通过增加以下内容:
- 中的联合存储库配置
binarystore.xml40 10 35000 10 - 控件中的联合存储库参数
artifactory.system.propertiesartifactory.federated.repo.executor。poolMaxQueueSize=20000(默认为10000)。线程=20(默认值是5)连接=70(默认为50)百分比=20(默认为10)
监视联合存储库同步
通过在此帮助下获取联合的状态,可以监视联合存储库的同步联合存储库同步状态REST API:
$ curl -u admin -XGET https://myartifactory.www.si-fil.com/artifactory/api/federation/status/repo/
使用它监视最后一次联合之间的延迟时间REST API:
$ curl -u admin -XGET https://myartifactory.www.si-fil.com/artifactory/api/Federation/status/mirrorsLag
今天开始学习联合存储库
如果你正在寻找一种方法,让JFrog Artifactory的多个实例作为JFrog平台的一部分保持同步,可以考虑使用Artifactory的联合存储库功能。这些有用的建议将帮助你开始,但如果你仍然需要更多的指导,我们的支持团队是来帮忙的。
如果你今天不用Artifactory,你可以给它一个免费尝试.