GCP上的Spring Cloud Consul运行状况检查和状态配置

时间:2019-02-21 17:12:59

标签: spring-boot google-cloud-platform spring-cloud-consul

我们正尝试在spring-cloud-consul上向consul注册一个GCP compute engine应用程序,该应用程序可以在领事那里注册该应用程序,但是我们面临着两个问题应用。以下是该应用程序的 bootstrap.yaml server.yaml

application.yaml

server:
  port: 10003
spring:
  application:
    name: hello-service
  cloud:
    consul:
      enabled: true
    inetutils:
      useOnlySiteLocalInterfaces: true
  endpoints:
    actuator:
      sensitive: false

bootstrap.yaml

spring:
  cloud:
    consul:
      enabled: true
      host: 10.160.0.18
      port: 8500
      discovery:
        prefer-ip-address: true
  1. Consul无法在计算引擎上调用运行状况检查,可能是因为它已在实例的内部域名上注册。
  带有领事的

服务:NewService {id ='hello-service-10003',   名称=“ hello-service”,标签= [安全=假],   地址='consul-app-test.c。项目名称。内部',meta = null,   端口= 10003,enableTagOverride = null,check = Check {script ='null',   interval ='10s',ttl ='null',   http ='http://consul-app-test.c.name-of-project.internal:10003/actuator/health',   method ='null',header = {},tcp ='null',timeout ='null',   deregisterCriticalServiceAfter ='null',tlsSkipVerify = null,   status ='null'},checks = null}

  1. 申请,未从领事馆注销。我们仍停止了该应用程序在领事UI上显示。

2 个答案:

答案 0 :(得分:0)

我对适用于我的 application.yaml bootstrap.yaml 进行了一些更改。

application.yaml

[30,40,50,100].any? { |item| item >= 100 } # => true
[10,20,30,40].any? { |item| item >= 100 } # => false

bootstrap.yaml

spring:
  application:
    name: hello-service
  cloud:
    consul:
      discovery:
        instanceId: ${spring.application.name}:${random.value}
        health-check-critical-timeout: 3m
        prefer-ip-address: true # disable if we want to use google cloud internal DNS 

答案 1 :(得分:0)

如果您像我一样使用版本2.1.2org.springframework.cloud:spring-cloud-starter-consul-discovery:2.1.2.RELEASE

您可以设置:

spring:

  cloud:
    consul:
      host: localhost #  consul的地址
      port: 8500 # consul 的端口
      discovery:
        prefer-ip-address: true  # // This must be matched
        tags: version=1.0
        instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}
        healthCheckPath: /actuator/health # 服务做健康检查的端口
        healthCheckInterval: 15s  # 服务健康检查的周期
        healthCheckTimeout: 60s # 服务检查是的timeout时长
        healthCheckCriticalTimeout: 5m # 服务健康检查失败5分钟后,删除服务

,您可以在ConsulDiscoveryProperties中查看源代码:

@ConfigurationProperties("spring.cloud.consul.discovery")
public class ConsulDiscoveryProperties {

……

    /** Is service discovery enabled? */
    private boolean enabled = true;

    /** Alternate server path to invoke for health checking. */
    private String healthCheckPath = "/actuator/health";

    /** Custom health check url to override default. */
    private String healthCheckUrl;

    /** How often to perform the health check (e.g. 10s), defaults to 10s. */
    private String healthCheckInterval = "10s";

    /** Timeout for health check (e.g. 10s). */
    private String healthCheckTimeout;

    /**
     * Timeout to deregister services critical for longer than timeout (e.g. 30m).
     * Requires consul version 7.x or higher.
     */
    private String healthCheckCriticalTimeout;
……