Я запускаю сервис докеров, содержащий файл .jar с моим сервисом. Эта услуга автоматически регистрируется в консуле (v0.7.5), включая проверку здоровья. Эта проверка установлена на «критической», но отображается как проходящая в «мониторе консула»
Я полностью удалил службу --health-cmd --health-interval и --health-start-period, предполагаяон заблокировал бы соединение при запуске, но не помог.
Иногда после большого количества перезапусков служба регистрируется, проверка работоспособности становится зеленой и возвращает ожидаемый результат.
Иногдаслужба даже не регистрируется.
Конфигурация:
В свойствах .jar
spring.cloud.consul.host=https://myconsul:8500
spring.cloud.consul.discovery.instanceId = ${spring.application.name}:${vcap.application.instance_id:${spring.application.instance_id:${random.value}}}
spring.cloud.consul.enabled = true
spring.cloud.consul.discovery.register = true
spring.cloud.consul.discovery.health-check-critical-timeout=5m
spring.cloud.consul.discovery.healthCheckUrl=http://${service.dockerContainerId}/health_check
Результаты:
При запуске .jar:
...
INFO 1 --- [main] o.s.c.c.s.ConsulServiceRegistry: Registering service with consul:
NewService{
id='myservice-f4f993da9d3abfdba964ca7bf2d26791',
name='myservice',
tags=[secure=false],
address='myservice',
port=80,
enableTagOverride=null,
check=Check{
script='null',
interval='10s',
ttl='null',
http='http://2a90f75d46aa/health_check',
tcp='null',
timeout='null',
deregisterCriticalServiceAfter='5m',
tlsSkipVerify=null,
status='null'
},
checks=null
}
...
https://myconsul:8500/v1/health/service/myservice
...
"Checks": [
{
"Node": "0452c11e1b52",
"CheckID": "serfHealth",
"Name": "Serf Health Status",
"Status": "passing",
"Notes": "",
"Output": "Agent alive and reachable",
"ServiceID": "",
"ServiceName": "",
"CreateIndex": 1267574,
"ModifyIndex": 1267574
},
{
"Node": "0452c11e1b52",
"CheckID": "service:myservice-f4f993da9d3abfdba964ca7bf2d26791",
"Name": "Service 'myservice' check",
"Status": "critical",
"Notes": "",
"Output": "",
"ServiceID": "myservice-f4f993da9d3abfdba964ca7bf2d26791",
"ServiceName": "myservice",
"CreateIndex": 1314956,
"ModifyIndex": 1314956
}
]
НО:
монитор монитора -log-level = отладка:
[DEBUG] agent: Check 'service:myservice-f4f993da9d3abfdba964ca7bf2d26791' is passing
И:
Вызов службы из контейнера консула:
curl http://2a90f75d46aa/health_check -v
* Trying 10.0.0.110...
* TCP_NODELAY set
* Connected to 2a90f75d46aa (10.0.0.110) port 80 (#0)
> GET /health_check HTTP/1.1
> Host: 2a90f75d46aa
> User-Agent: curl/7.59.0
> Accept: */*
>
< HTTP/1.1 200
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< X-Frame-Options: DENY
< Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
< Vary: Accept-Encoding
< Date: Mon, 14 Oct 2019 13:34:21 GMT
<
* Connection #0 to host 2a90f75d46aa left intact
{"meta":{"name":"myservice","type":"Service","version":"3.9.191014.01","containerid":"2a90f75d46aa","responseCode":"200","responseType":"JSON","responseTime":0,"request":"null"},"payload":{"dependency":[]}}
Проверка работоспособности консула должна быть зеленой и возвращать тот же результат, что и запрос на ручное скручивание.
Любой испытал поведениевот так и знает как это исправить?