Spring Cloud Config Server - MultipleJGitEnvironmentRepository:无法为主远程获取远程
Posted
技术标签:
【中文标题】Spring Cloud Config Server - MultipleJGitEnvironmentRepository:无法为主远程获取远程【英文标题】:Spring Cloud Config Server - MultipleJGitEnvironmentRepository : Could not fetch remote for master remote 【发布时间】:2020-11-21 06:51:26 【问题描述】:我正在尝试设置一个 spring 云配置服务器,它使用 SSH 密钥从 git repo 获取配置。它与 springBootVersion 2.1.0.RELEASE 和 springCloudVersion Greenwich.M3 一起运行。
当使用带有用户名和密码的 https bitbucket URI 以及以下配置时,配置服务可以正常工作:
security.user:
name: xxxxx
password: xxxxx
cloud.config.server:
git:
uri: https://bitbucket.org/abc/configs.git
username: uname
password: pass
但我们必须迁移以使用 ssh 密钥而不是用户名和密码,配置如下:
security.user:
name: xxxxx
password: xxxxx
cloud.config.server:
git:
uri: git@bitbucket.org:abc/configs.git
id_rsa 私钥文件与配置文件位于 .ssh 文件夹中:
Host bitbucket.org
StrictHostKeyChecking no
IdentityFile /home/user/.ssh/id_rsa
初始的 git clone 工作正常,当我点击 http://xxxx:xxxx@localhost:8899/app/dev
时,我们能够毫无问题地获取配置。
但在那之后,日志中有很多无法从远程获取的 WARN。在初始克隆之后,还会正确获取对配置的进一步更新。但不知道为什么日志中有这么多 WARN,这让我很担心。
2020-07-31 11:38:51.636 WARN 1 --- [io-48899-exec-7] .cseMultipleJGitEnvironmentRepository:无法获取远程主远程:git@bitbucket.org:abc/configs.git
正如我之前提到的,这仅在我们使用 SSH 密钥进行克隆时才会发生。同一个项目适用于 https 克隆。有什么我遗漏的吗?
【问题讨论】:
【参考方案1】:如果以后有人遇到这个问题,我们可以通过在 config-server 中设置 refreshRate 来解决这个问题。
您可以控制配置服务器的频率 通过使用从 Git 后端获取更新的配置数据 spring.cloud.config.server.git.refreshRate。该物业的价值 以秒为单位指定。默认值为 0,表示配置 服务器每次都会从 Git 存储库中获取更新的配置 它被请求。
默认设置为 0。由于它已注册到 consul,其他服务的 consul 健康检查端点以每秒太多的请求压倒了配置服务器,导致配置服务器从 bitbucket 中提取太多次.一旦 refreshRate 设置为 5 秒,那么配置服务器开始仅每 5 秒拉一次配置,现在它是稳定的。 一周过去了,配置服务按预期工作,SSH 密钥没有任何问题。
【讨论】:
以上是关于Spring Cloud Config Server - MultipleJGitEnvironmentRepository:无法为主远程获取远程的主要内容,如果未能解决你的问题,请参考以下文章
spring-cloud-starter-eureka-server 和 spring-cloud-starter-netflix-eureka-server的区别
spring-cloud-config:spring-cloud-config Maven配置错误
无法通过 spring.cloud.config.enabled:false 禁用 Spring Cloud Config