Cal*_*ran 1 fallback spring github local-storage spring-cloud-config
我们计划将Spring Cloud Config用于我们的服务。我们最大的担心是,当容器启动时,它依赖于github始终可用,以便可以拉出配置文件。万一github出现故障,缓解该问题的最佳实践是什么?
我正在考虑将配置的本地文件夹存储为备份,并配置application.yml以使其回退(我不知道如何)。
我打算使用复合环境存储库,请参见此处:2.1.8节
但是它指出:
从环境存储库中检索值时,任何类型的故障都会导致整个组合环境的故障。
这意味着如果git检索失败,它就不会退回到组合的本地组件。我希望能做到。你们有没有处理过类似的问题?您是如何解决的?
这是一篇有关最佳做法的好文章。但是,对于情况1,我需要一种解决方法:处理GIT存储库不可用的最佳实践
Spring-Cloud具有配置属性来处理此问题。
spring.cloud.config.server.git.basedir = /your/config/local/fallback/directory
注意-如果您使用的是
.yml文件,请按照yaml约定定义上述属性。
要了解背景知识,请查看文档:http : //cloud.spring.io/spring-cloud-static/Finchley.RC1/single/spring-cloud.html#_version_control_backend_filesystem_use
因此,基本上,这里发生的是-只要您的应用程序最初能够连接到您在中设置的git存储库spring.cloud.config.server.git.uri = https://your-git/config-repo.git,然后在config-server / container启动时,您spring.cloud.config.server.git.basedir在本地默认情况下创建的get中定义的目录spring-cloud会将您的配置克隆到该目录中,以作为备用。
因此,每当您的git仓库无法访问时,spring-cloud都会从该基本目录中获取您的配置。
重要注意事项:
除非您真的只想仅在config-server启动时重新克隆git配置,否则请确保该属性spring.cloud.config.server.git.clone-on-start未设置为true或完全未设置-否则,每次重新启动cloud-config服务时,配置将为删除并再次重新克隆,并且如果该存储库当时不可用,则应用程序启动将失败- 并且您可能不希望这样做。
但是,如果spring.cloud.config.server.git.clone-on-start设置为false或根本没有设置(在这种情况下,默认值为false),则git存储库将仅按需克隆-因此,如果存储库不可访问,spring-cloud将优雅地回退以获取配置来自spring.cloud.config.server.git.basedir
即使重新启动应用程序配置服务器(或其容器)并且无法访问git存储库,您也会看到类似以下的内容:
No custom http config found for URL: https://your-git/config-repo.git/info/refs?service=git-upload-pack
... s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@3a26f314: startup date [Mon Oct 15 22:01:34 EDT 2018]; root of context hierarchy
... o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/your/config/local/fallback/directory/application.properties
Run Code Online (Sandbox Code Playgroud)
注意这一行:
Adding property source:file:/your/config/local/fallback/directory/application.properties
那就是魔术发生的地方。
因此,如果您希望spring.cloud.config.server.git.basedir即使在首次启动配置服务器之前(并且在启动期间您的git repo是否无法访问)都可以将其作为备用,则可以执行以下步骤;
spring.cloud.config.server.git.basedir cd /your/config/local/fallback/directorygit clone https://your-git/config-repo.git 虽然仓库可以使用确保所有配置文件/文件夹/子文件夹(包括.git文件夹)都直接克隆到后备目录的根目录。
例如,有一种趋势是git clone https://your-git/config-repo.git将存储库克隆到回退目录中/your/config/local/fallback/directory/config-repo。您将必须直接复制其中的所有织补内容(config-repo包括.git文件夹在内),并将其复制到/your/config/local/fallback/directory
第一次或每当启动config-server(或其容器)!...... 瞧!
| 归档时间: |
|
| 查看次数: |
2512 次 |
| 最近记录: |