当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud Consult健康检查和GCP上的状态配置

葛阳
2023-03-14

我们正在尝试在GCP计算引擎上向consul注册一个spring cloud consul应用程序,它可以向consur注册该应用程序,但该应用程序面临两个问题。下面是引导。yaml和服务器。应用程序的yaml,

<代码>应用程序。yaml

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

<代码>引导。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',name='hello-service',tags=[secure=false],address='consur-app-test.c.name-of-project.internal',meta=null,port=10003,enableTagOverride=null,check=check{script null',interval='10s',ttl='null',http='0http://consul-app-test.c.name-of-project.internal:10003/actuator/health',方法='null',头={},tcp='null',超时='null',deregisterCriticalServiceAfter='null',tlsSkipVerify=null,状态='null',检查=null}

共有2个答案

夏侯博
2023-03-14

如果你像我一样使用版本2.1.2org.springframework.cloud:spring-Cloud-starter-consul-发现: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分钟后,删除服务

您可以在ConsultDiscoveryProperties中查看源代码

@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;
……
白吕恭
2023-03-14

我在应用程序中做了一些更改。yaml和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 

独自创立亚马尔

spring:
  cloud:
    consul:
      enabled: true
      host: 10.160.0.18
      port: 8500
 类似资料:
  • 我试图在GCP中部署一个函数2天,每次都会收到以下错误。 操作错误:代码=13,消息=由于运行状况检查失败,功能部署失败。这通常表示代码生成成功,但在测试执行期间失败。检查日志以确定原因。如果看起来是暂时的,请在几分钟后再次尝试部署。 日志查看器没有对问题给出正确的解释。持续提供以下日志,直到部署失败。 “错误:函数已终止。建议的操作:检查日志以了解终止原因。无法初始化函数。” 现在,有趣的事实是

  • SOFABoot 为 Spring Boot 的健康检查能力增加了 Readiness Check 的能力。如果你需要使用 SOFA 中间件,那么建议使用 SOFABoot 的健康检查能力的扩展,来更优雅的上线应用实例 引入健康检查扩展 要引入 SOFABoot 的健康检查能力的扩展,只需要引入以下的 Starter 即可: <dependency> <groupId>com.alipay

  • 我对弹性负载均衡器健康检查和亚马逊EC2健康检查有点困惑。 在将运行状况检查添加到自动缩放组中时,会显示: 如果已将一个或多个负载均衡器附加到自动缩放组,并且某个实例未通过负载均衡器运行状况检查,则默认情况下,自动缩放不会替换该实例。 如果启用负载均衡器运行状况检查,而某个实例未通过运行状况检查,则自动缩放将认为该实例不正常并替换它。 因此,如果我不启用ELB健康检查,EC2健康检查将起作用,如果

  • 我在GCP中建立了自己的Elasticsearch集群。群集已启动并运行良好。 集群包含两个客户端节点,我可以使用它们在内部访问并通过运行状况检查http://IP:9200/和

  • 健康检查配置概述。 filter.http.HealthCheck filter.http.HealthCheck proto { "pass_through_mode": "{...}", "endpoint": "...", "cache_time": "{...}" } pass_through_mode (BoolValue, REQUIRED) 指定过滤器是否在传递模式下运

  • 健康检查架构概述。如果为集群配置了健康检查,则会发出相应的统计信息。详见请参考统计相关文档。 HealthCheck HealthCheck.Payload HealthCheck.HttpHealthCheck HealthCheck.TcpHealthCheck HealthCheck.RedisHealthCheck HealthCheck HealthCheck proto { "ti