ARTIFACTORY:解决联合存储库复制问题

Gajapathi Kimidi
2023-01-22 11:06

在Artifactory服务器之间启用联合存储库复制的先决条件

  1. 联邦成员之间的Artifactory版本必须相同。
  2. JFrog平台部署(JPDs)时钟必须同步
  3. 在Artifactory上创建联合存储库之前,必须为Artifactory配置自定义基url。为了配置自定义基础URL,打开Artifactory UI >管理>常规>常规设置>配置自定义基础URL
  4. 必须在Artifactory实例之间设置信任圈。建立信任圈有两种方法。

故障排除

1.基础url配置
在将本地存储库转换为联合存储库时,如果观察到以下消息
发生意外错误:基本URL是强制的,没有配置”。,
你需要先配置Custom base url。

2.信任圈
在添加联邦成员时,如果看到错误,
添加联合存储库失败。确保在这个实例和远程JFrog平台部署之间建立了跨实例身份验证”。,
我们需要在联盟成员之间建立圈子信任。

3.联邦存储库的完全同步
在将本地存储库转换为联合存储库之后,将不会自动复制之前上传的构件。我们需要运行一个同步调用来触发复制。curl -u <用户> -p <密码> -X POST
https://source-artifactory:8082/artifactory/api/federation/fullSync/maven-s1

4.url的尾斜杠
在添加联邦成员时,请确保在配置过程中删除存储库名称末尾的任何斜杠(/)。如果在存储库名称的末尾有任何斜杠,我们将在保存配置时得到下面的错误消息。更新联合存储库的远程成员失败:maven-source-repo,成员失败:[http://destination-artifactory:8082/artifactory/maven-dest-repo/]。请检查URL、网络、代理可访问性,然后重试。

下面是正确配置的示例。

用户添加图片"src=
5.复制的工件在目标实例中可见,但不能下载
如果您使用的版本低于7.26.3,联邦复制可能无法复制工件的实际内容,只复制数据库条目。这意味着,当我们展开Artifactory树视图时,我们可以在目标端看到工件,但是我们不能下载它们。

下面是我们可以在目标服务器$JFROG_HOME/artifactory/var/log/artifactory-service位置中看到的日志条目。2022-07-18 t9:34:38.584 z [jfrt] [INFO] [54af869eb79958bd] [o.a.a.m.i. .]MirrorImpl:301] [http-nio-8081-exec-5] -镜像成员从:http://destination-artifactory:8082/artifactory/maven-d1到:http://source-artifactory:8082/artifactory/maven-s1 active
2022-07-18 t9:34:38. 685z [jfrt] [INFO] [70117083326bde1a] [o.a.e。UploadServiceImpl:454] [http-nio-8081-exec-3] -部署到'maven-d1:acegi-security/acegi-security/0.5/acegi-security-0.5.jar' Content-Length: 168502(估计)artificial: true
2022-07-18 t9:34:38. 727z [jfrt] [ERROR] [5b3a0e48fd06ea0] [s.b.c.]RemoteBinaryProvider:317] [ated-binary-importer] -在http://source-artifactory:8082/artifactory/binarystore的远程端点无法访问'mvn-destination-federated-repo-http://source-artifactory:8082/artifactory/mvn-source'。收到响应:503:服务不可用
2022-07-18 t9:34:38. 736z [jfrt] [ERROR] [5b3a0e48fd06ea0] [.a.f.b。RemoteBinaryImporter:92] [ated-binary-importer] -导入校验和为dc44aac08d4cd9e61047769b52274e8a28a5e268的远程二进制文件到本地失败
org.jfrog.storage. bstore.exceptions . binarystorageexception: 503: Failed to import binary with sha1: dc44aac08d4cd9e61047769b52274e8a28a5e268
org.artifactory.addon.federated.binary.RemoteBinaryImporter.run (RemoteBinaryImporter.java: 65)
org.artifactory.opentracing.TraceableRunnableDecorator.run (TraceableRunnableDecorator.java: 40)
在java.base / java.util.concurrent.Executors RunnableAdapter.call美元(Executors.java: 515)
在java.base / java.util.concurrent.FutureTask.run (FutureTask.java: 264)
在java.base / java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java: 1128)
在java.base / java.util.concurrent.ThreadPoolExecutor Worker.run美元(ThreadPoolExecutor.java: 628)
在java.base / java.lang.Thread.run (Thread.java: 834)

当您尝试在目的地下载文件时,您将收到503,并且将在artifact -service.log中观察到下面的条目2022-07-18 t9:37:58. 65z [jfrt] [WARN] [176c6034415f3e29] [.r。ArtifactoryResponseBase:136] [http-nio-8081-exec-7] - Sending HTTP error code 500: Could not process download request: Binary provider has no content for 'dc44aac08d4cd9e61047769b52274e8a28a5e268'

它被识别为一个错误,建议升级到7.26.3或更高版本。

6.联合存储库的基于GEO的url配置。
如果你有几个Artifactory实例连接到一个单一的Geo basedurl

例如,您有http://my-artifactory/,其中有两个底层artifactories在两个不同的位置,如http://my-EAST-artifactory/和http://my-WEST-artifactory/,根据用户位置,发生路由。在这种情况下,除了基本url,我们还需要在管理> Artifactory > Advanced >配置描述符的全局配置描述符的部分下添加以下XML标记。
注意:在编辑该文件时应该小心,因为对该配置的任何意外更改都可能破坏Artifactory。
例如,对于EAST站点,我们需要下面的标记。< federatedRepoUrlBase > https://my-EAST-artifactory/artifactory < / federatedRepoUrlBase >

注意:在最新版本的Artifactory中添加了很多关于联邦的改进和特性。我们建议升级到最新版本,以便获得联合存储库的所有功能。