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

问题描述

我拥有的领事设置:

我有一个由三个节点和一个数据中心组成的 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"
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)