如何在Consul中正确注册Spring Boot应用程序(部署到Cloud Foundry)

时间:2017-08-17 09:01:17

标签: spring-cloud spring-cloud-consul

我遵循了这个文档:http://cloud.spring.io/spring-cloud-consul/1.0.x/index.html并将我的Spring Boot应用程序配置如下:

spring:
  cloud:
    consul:
      enabled: true
      host: consul.domain.tld
      port:  443
      discovery:
        instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}}
        fail-fast: false

当部署到Cloud Foundry时,应用程序可以连接到Consul并尝试注册,但Consul的“服务检查”立即失败。

阅读已配置的内容,我在Spring Boot应用程序中获得以下实例:

list = discoveryClient.getInstances("myApp");
list.get(0) => "http://05c81764-18a4-4905-41a8-b5b8:8080"

我看到UUID最有可能是Cloud Foundry生成的instanceId。当然,该URL不起作用,既不在Cloud Foundry内,也不适用于试图定期检查服务健康状况的外部Consul服务器。

如何正确配置我的Spring Boot应用程序,以便在Consry中使用Cloud Foundry进行服务注册?

1 个答案:

答案 0 :(得分:1)

您需要将spring.cloud.consul.discovery.hostname设置为vcap环境变量返回的值。

类似的东西:

spring.cloud.consul.discovery.hostname=${vcap.application.uris[0]:localhost}
spring.cloud.consul.discovery.port=80