我拥有的领事设置:
我有一个由三个节点和一个数据中心组成的 consul 集群。
场景
我已经启动了一个 spring 服务,它使用 ngnix 和我的 域名 xxx.mydomain.com 到任一代理启动时。
当注册代理节点宕机时,从 consul 注销完整的服务 集群。
当使用健康检查端点获取服务健康状态时也没有服务
我在 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"
}