有问题吗?想要报告问题?联系JFrog支持

跳到元数据的末尾
进入元数据的开始

概述

通过Artifactory Pro中的Replication Add-on, Artifactory允许在两个Artifactory实例之间复制存储库,以支持分布在遥远地理位置上的不同团队的开发。复制的好处是:

  • 确保所有开发人员都使用相同版本的远程工件
  • 确保构建工件在不同的开发团队之间有效地共享
  • 克服访问远程工件时的网络延迟和稳定性等连接问题
  • 访问远程工件的特定版本


用于复制的人工版本

我们强烈建议只在运行相同版本Artifactory Pro的服务器之间执行复制。

支持两种主要的复制方法:

  • 将复制
    B
    支持定时和基于事件的推送复制,企业license支持多推送复制

  • 把复制
    B
    支持其他计划的和基于事件的pull复制;基于事件的pull需要企业许可证。

页面内容

将复制

推送复制用于同步局部存储库,并由近端上的Artifactory服务器实现,该服务器调用工件到远端的同步。

有两种方法调用push复制:

  • 将推:按一定时间间隔异步调度推送
  • 基于事件的推动:推送几乎是实时发生的,因为工件的每次创建、复制、移动或删除都会立即传播到远端。

优势

  • 它是快速的,因为它是异步的。
  • 它最小化了存储库不同步的时间。
  • 在复制链的情况下,它减少了主节点上的流量(“服务器a”复制到“服务器B”,“服务器B”然后复制到“服务器C”等等)。



避免复制循环(“循环复制”)

当运行在不同服务器上的两个Artifactory实例同时将内容从一个复制到另一个时,就会发生复制循环(“循环”或“双向”复制)。

例如,“服务器A”被配置为将其存储库复制到“服务器B”,而与此同时,“服务器B”被配置为将其存储库复制到“服务器A”。

或者“服务器A”复制到“服务器B”,服务器B复制到“服务器C”,服务器C复制回“服务器A”。

我们强烈建议避免循环复制,因为这可能会对系统造成灾难性的影响,导致数据丢失,或者相反,导致磁盘空间使用呈指数级增长。

严格避免复制循环

何时使用Push复制

当远端存储库对于近端存储库中的任何更改(创建、复制、移动或删除工件)进行近实时更新非常重要时,建议使用基于事件的推送复制。

定期计划的复制运行在基于事件的复制之上,即使在服务器停机和网络分区的情况下也能保证完整复制的一致性。

Multi-push复制

使用企业许可证,Artifactory支持多推送复制,允许您同时将本地存储库从单个源复制到多个企业目标站点。

把复制

这提供了一种方便的方式来主动填充远程缓存,并且当由于网络延迟而不希望等待新工件按需到达时(第一次请求时),这种方法非常有用。

调用pull复制有两种方法:

  • 安排拉:Pull复制由远程存储库调用,并根据定义的计划异步运行,以定期同步存储库(本地、远程或虚拟)。
  • 基于事件的提取:
    pull几乎是实时发生的,因为工件的每次创建、复制、移动或删除都会立即传播到远端。只要上传了一个文件,它就会被复制并立即提供给目标(拉)实例,甚至不需要等待文件上传在源端完成

优势

  • 许多目标服务器可以有效地从同一源服务器提取数据,实现一对多复制。
  • 因为每个包裹只有一个“跳”,所以更安全。
  • 它减少了目标服务器上的流量,因为它们不必在复制链中传递工件。

何时和何时不使用拉复制

在以下情况下,建议使用Pull复制:

  • 当您需要将存储库复制到多个目标时。
  • 当您的源存储库位于阻止推送复制的代理之后时(例如,将托管在Artifactory SaaS上的存储库复制到站点的本地存储库)

拉式复制不能用于复制不是Artifactory存储库的远程资源。的正常缓存和代理行为中,只能按需缓存来自第三方存储库的工件远程存储库



调度和配置复制

界面方式

通过用户界面将复制配置为计划任务。本地存储库可以配置为推式复制,远程存储库可以配置为拉式复制。

所有复制消息都记录在主服务器上Artifactory日志文件artifactory.log).

复制本地存储库列表中的列指示是否为列表中的每个存储库配置了复制。如果确实为存储库配置了复制,则可以单击列表中的图标来调用它。

本地存储库的推送复制

配置推送复制

中配置了本地存储库的推送复制任务复制的标签。编辑本地存储库对话框。

首先,在Cron表达式字段定义复制任务计划有效的cron表达式。

下一次复制时间将指示更新相应。

Cron表达式VS事件库复制

方法将此存储库复制到其所有目标,同时进行Cron表达式你定义。

事件库复制将尝试复制只有受事件影响的工件,而Cron表达式将触发存储库中所有工件的同步。这个区别很重要,因为如果其中一个事件同步失败,下一次Cron表达式将触发同步,所有更改将同步。

为每个复制目标配置了复制属性之后,可以使用复制选项卡显示它们。

推送复制目标

字段名 描述
推动
您已经定义的复制目标
启用
设置时,启用此存储库复制到中指定的目标推动
启用事件复制
设置后,每个事件都将触发复制在此事件中更改的工件。这可以是工件上的任何类型的事件,例如添加、删除或属性更改。

复制目标个数

如果没有企业许可证,则只能定义一个复制的目标。使用企业许可证,Artifactory支持多推送复制,您可以根据需要定义任意数量的目标。

添加推送复制目标

单击,为该复制添加目标站点添加显示复制属性对话框,并按如下方式填写详细信息。

推送复制属性


字段名 描述
启用此存储库的活动复制
设置后,该复制将在保存时启用
URL

远程Artifactory服务器上的目标本地存储库的URL。


用户名
HTTP认证用户名。
密码
HTTP认证密码。
代理
与远程实例通信时使用的代理配置。
套接字超时
用于远程操作的网络超时(以毫秒为单位)。
同步已删除的工件
设置后,本地删除的项也应该远程删除(也适用于属性元数据)。
同步工件属性
设置后,该任务还同步复制工件的属性。
同步工件统计信息
设置后,该任务还同步工件下载统计信息。设置为避免在为灾难恢复设置复制时在目标实例上进行无意的清理。
路径前缀(可选)
只有位于与存储库中的子路径匹配的路径中的工件才会被复制。


配置Pull复制

中配置了远程存储库的拉复制任务复制的标签。编辑远程存储库对话框。

首先,在Cron表达式字段定义复制任务计划cron表达式。

下一次复制时间将指示更新相应。

字段名 描述
启用此存储库的活动复制
设置后,该复制将在保存时启用
URL

远程Artifactory服务器上的目标本地存储库的URL。

对于某些包类型,需要在URL中为存储库键加上前缀api / < pkg >。有关所需的包类型的列表,请参见请注意下面

同步已删除的工件
设置后,本地删除的项也应该远程删除(也适用于属性元数据)。
同步工件属性
设置后,该任务还同步复制工件的属性。
路径前缀(可选)
只有位于与远程存储库中的子路径匹配的路径中的工件才会被复制。
启用事件复制
设置后,每个事件都将触发复制在此事件中更改的工件。这可以是工件上的任何类型的事件,例如添加、删除或属性更改。

关于远程存储库配置的凭据

用于复制的远程存储库的文件清单是使用存储库下定义的存储库凭据检索的先进的配置部分。

检索到的远程文件取决于已配置用户在远程存储库(在另一个Artifactory实例上)上的有效权限。

*检查哪些包格式需要在存储库路径前面加上api/

对于某些打包格式,当使用相应的客户端通过Artifactory访问存储库时,URL中的存储库密钥需要加上前缀api / < pkg >在路上。例如,在的情况下Npm存储库,存储库键应该加上前缀api / npm

然而,这条规则也有例外。例如,在复制Maven存储库时,您需要这样做需要为远程存储库路径添加前缀

是否为存储库密钥添加前缀的注意事项api / < pkg >与配置智能远程存储库时相同。获取应作为前缀的包格式的详细列表api / < pkg >,详情请参阅配置智能远程存储库

使用REST API进行复制

Artifactory的REST API支持推式复制和拉式复制。详情请参阅以下资料:

复制属性

一旦复制被调用,Artifactory就会对被复制的源存储库进行注释,并使用指示复制状态的属性对其进行注释。属性中可以查看这些属性以及可能注释存储库的其他属性属性的标签。树浏览器

对于单个推送复制操作,将创建/更新以下属性:

关键 价值
artifactory.replication。< source_repo_key > .started 复制开始的时间
artifactory.replication。<source_repo_key > .status

指示复制操作完成后的状态。取值为:

好吧:复制成功。

失败:复制失败。您应该检查日志文件中的错误

artifactory.replication。<source_repo_key > .finished 复制结束的时间

复制属性

对于多推送复制操作(仅适用于企业客户),将创建/更新以下属性:

关键 价值
artifactory.replication。< source_repo_key >_ < target_repo_URL >.started 复制开始的时间
artifactory.replication。< source_repo_key >_ < target_repo_URL >.status

指示复制操作完成后的状态。取值为:

好吧:复制成功。

失败:复制失败。您应该检查日志文件中的错误

artifactory.replication。< source_repo_key > _ < target_repo_URL > .finished 复制结束的时间

观看录像

要了解复制的实际情况,请观看下面的简短截屏。