ARTIFACTORY:联邦存储库复制的故障排除
启用Artifactory服务器之间的联合存储库复制的先决条件
- 联合成员之间的人工版本必须相同。
- JFrog平台部署(JPDs)时钟必须同步
- 在Artifactory上创建联合存储库之前,必须为Artifactory配置自定义基url。为了配置自定义基础URL,打开人工UI >管理>常规>常规设置>配置自定义基础URL
- 必须在人工实例之间设置信任圈。建立信任圈有两种方法。
- 通过设置相关jpd之间的绑定(为了使用这个选项,我们需要启用任务控制作为Artifactory的服务。
- 通过建立信任圈。(此选项仅适用于On-prem)
故障排除
”
发生意外错误:Base URL是必需的,没有配置”。,您需要首先配置自定义基url。
2.信任圈
在添加联邦成员时,如果看到错误,
”添加联合存储库失败。确保在该实例和远程JFrog平台部署之间建立了跨实例身份验证”。,
我们需要在联合的人工制品成员之间建立圈子信任。
3.联邦存储库的完全同步
在将本地存储库转换为联合存储库之后,将不会自动复制之前上传的构件。我们需要运行一个同步调用以触发复制。curl -u
https://source-artifactory:8082/artifactory/api/federation/fullSync/maven-s1
4.url中的斜杠
添加联邦成员时,请确保在配置过程中删除存储库名称末尾的任何斜杠(/)。如果在存储库名称的末尾有任何斜杠,我们将在保存配置时得到以下错误消息。更新联合存储库远程成员失败:maven-source-repo,成员失败:[http://destination-artifactory:8082/artifactory/maven-dest-repo/]。请检查URL,网络,代理可访问性,然后再试一次。
下面是一个正确配置的示例。
5.复制的工件在目标实例中可见,但不可下载
如果您使用的是低于7.26.3的版本,那么联邦复制可能无法复制工件的实际内容,只会复制数据库条目。这意味着,当我们展开Artifactory树视图时,我们可以在目标端看到工件,但是我们不能下载它们。
下面是我们可以在目标服务器$JFROG_HOME/artifactory/var/log/artifactory-service位置看到的日志条目。[jfrt] [INFO] [54af869eb79958bd] [au:]MirrorImpl:301] [http-nio-8081- exc -5] -镜像成员从:http://destination-artifactory:8082/artifactory/maven-d1到:http://source-artifactory:8082/artifactory/maven-s1激活
[jfrt] [INFO] [70117083326bde1a] [o.a.e e.]UploadServiceImpl:454] [http-nio-8081- exec3] -部署到'maven-d1:acegi-security/acegi-security/0.5/acegi-security-0.5.jar' Content-Length: 168502(估计)artificial: true
[jfrt] [ERROR] [5b3a0e48fd06ea0] [s.b.c。]RemoteBinaryProvider:317] [atedbinaryimporter] -远程端点http://source-artifactory:8082/artifactory/binarystore无法访问'mvn-destination-federated-repo-http://source-artifactory:8082/artifactory/mvn-source'。得到响应:503:Service Unavailable
[jfrt] [ERROR] [5b3a0e48fd06ea0] [.a.f.b.]RemoteBinaryImporter:92] [ated-binary-importer] -导入校验和为dc44aac08d4cd9e61047769b52274e8a28a5e268的远程二进制文件失败
org.jfrog.storage.binstore.exceptions.BinaryStorageException: 503:导入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,并在artifactory-service.log中观察到以下条目[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或更高版本。
如果您有多个Artifactory实例连接到单个基于地理的url
例如,您有http://my-artifactory/,其中有两个底层工件位于两个不同的位置(如http://my-EAST-artifactory/和http://my-WEST-artifactory/),并且根据用户位置发生路由。在这种情况下,除了基本url,我们还需要在管理>人工>高级>配置描述符的全局配置描述符的
注意:在编辑此文件时,我们应该小心,因为对该配置的任何意外更改都可能损坏Artifactory。
例如,对于EAST站点,我们需要下面的标记。< federatedRepoUrlBase > https://my-EAST-artifactory/artifactory < / federatedRepoUrlBase >
注意:Artifactory的最新版本在联邦方面增加了许多改进和功能。我们建议升级到最新版本,以便获得联合存储库的所有功能。
