简单地说,我可以运行Spring Cloud Config服务器群集以确保高可用性吗?如果是,怎么样?
我尝试使用Spring Cloud Config作为我的中央配置服务。我的问题是每个客户端只能指定一个服务器来获取配置。如果此服务器关闭,一切都必须等待其恢复。
其他一些框架允许您运行多个服务器并在客户端枚举它们。 Spring Cloud Config有这样的功能吗?
如果那是不可能的,我考虑运行几个实例并将它们放在nginx之后。这会引起一些副作用吗?
任何建议都将不胜感激。
答案 0 :(得分:1)
某些其他框架允许您运行多个服务器并在客户端枚举它们。 Spring Cloud Config是否具有这种功能?
您应该使用Spring Cloud Netflix Eureka将Eureka Server作为服务发现,并将Eureka Client包含在services(Microservice)中。 您可以让Config Server在Discovery Service中注册。
Spring Cloud Config Discovery service
来自文档:
如果您使用诸如Spring Cloud Netflix和Eureka Service Discovery或Spring Cloud Consul之类的DiscoveryClient实施,则可以让Config Server向Discovery Service注册。但是,在默认的“配置优先”模式下,客户端无法利用注册。
如果您更喜欢使用DiscoveryClient来定位Config服务器,则可以通过设置spring.cloud.config.discovery.enabled = true(默认值为false)来实现。这样做的最终结果是,所有客户端应用程序都需要带有适当发现配置的bootstrap.yml(或环境变量)。例如,对于Spring Cloud Netflix,您需要定义Eureka服务器地址(例如,在eureka.client.serviceUrl.defaultZone中)。使用此选项的价格是启动时需要进行额外的网络往返,以查找服务注册。好处是,只要发现服务是固定点,配置服务器就可以更改其坐标。默认服务ID是configserver,但是您可以通过设置spring.cloud.config.discovery.serviceId在客户端上进行更改(以及在服务器上,以一种通常的服务方式,例如通过设置spring.application.name来更改)。
例如服务(客户端)中的bootstrap.yml
:
spring:
application:
name: example-service
cloud:
config:
fail-fast: true
discovery:
enabled: true
service-id: configuration-server
# Eureka client
eureka:
client:
prefer-same-zone-eureka: true
region: region1
service-url:
zone1: http://discovery-server-01:8761/eureka/,http://discovery-server-02:8761/eureka/
availability-zones:
region1: zone1