当注册的代理宕机时,服务从 Consul 集群完全注销

时间:2021-07-01 07:28:55

标签: spring-boot consul consul-health-check

我拥有的领事设置:

我有一个由三个节点和一个数据中心组成的 consul 集群。

场景

  1. 我已经启动了一个 spring 服务,它使用 ngnix 和我的 域名 xxx.mydomain.com 到任一代理启动时。

  2. 当注册代理节点宕机时,从 consul 注销完整的服务 集群。

  3. 当使用健康检查端点获取服务健康状态时也没有服务

我在 spring 服务中所做的配置

---
spring:

  cloud:
    consul:
      token: a528cdde-a9fe-8b96-f0e9-xxxxxxxxxx
      enabled: true
      host: xxx.mydomain.com
      port: 6014
      scheme: https
      retry:
        initial-interval: 5000
        max-attempts: 6
        max-interval: 600000
        multiplier: 3
      discovery:
        instanceId: ${spring.application.name}:${spring.cloud.client.hostname}
        preferIpAddress: true
        ipAddress: ${spring.cloud.client.hostname}
        healthCheckPath: /${spring.application.name}/actuator/health
        healthCheckInterval: 20s
        port: 8080
        catalogServicesWatch:
          enabled: false
    discovery:
      client:
        composite-indicator:
          enabled: false
  profiles: test

---

我添加的spring consul listner

@Configuration
@ConditionalOnConsulEnabled
@ConditionalOnMissingBean(type= "org.springframework.cloud.consul.discovery.ConsulLifecycle")
@AutoConfigureAfter(ConsulAutoServiceRegistrationAutoConfiguration.class)
public class ConsulListener implements ApplicationContextAware {

   @Autowired(required=false)
   private ConsulAutoServiceRegistration registration;

   public void setApplicationContext(ApplicationContext context) throws BeansException {
       if (registration != null){
           registration.start();
       }
   }
}

实例上的领事配置

{
  "server": true,
  "node_name": "102",
  "datacenter": "dc_1",
  "data_dir": "C:\\consul\\data",
  "bind_addr": "192.168.X.102",
  "client_addr": "0.0.0.0",
  "advertise_addr": "192.168.X.102",
  "bootstrap_expect": 2,
  "retry_join": [
    "192.168.X.101",
    "192.168.X.102",
    "192.168.X.100"
  ],
  "enable_script_checks": true,
  "ui": true,
  "log_level": "DEBUG"
}

0 个答案:

没有答案
相关问题