У меня проблемы с проверками работоспособности микросервисов в моей настройке консула docker, что, я считаю, является признаком сбоя в обнаружении сервисов, поскольку у меня только один сервер в моем реестре.
Ниже приведен список консулов элементов из контейнера docker.
/ # consul members
Node Address Status Type Build Protocol DC Segment
7b1edb14a647 172.19.0.6:8301 alive server 1.7.4 2 dc1 <all>
/ #
Журналы контейнеров Consul повторяют одну и ту же ошибку ниже для всех микросервисов:
consul | 2020-06-16T12:19:11.087Z [WARN] agent: Check socket connection failed: check=service:ffa44b66c4869601c04abdbea6dc5be5 error="dial tcp 172.19.0.6:50044: connect: connection refused"
Я использую docker -compose v.3.2 для создания сети для контейнеров.
Это определение службы консула.
consul:
container_name: consul
ports:
- '8400:8400'
- '8500:8500'
- '8600:53/udp'
image: consul
command: ['agent', '-server', '-bootstrap', '-ui', '-client', '0.0.0.0']
Определение микросервиса
service-notification:
build:
context: .
dockerfile: apps/service-notification/Dockerfile
args:
NODE_ENV: development
depends_on:
- consul
image: 'service-notification:latest'
restart: always
environment:
- CONSUL_HOST=consul
ports:
- '50044:50044'
Я использую переменную CONSUL_HOST
env для передачи правильного URL-адреса хоста.
Конфигурация Consul для микросервиса
consul:
host: ${{CONSUL_HOST}}
port: 8500
service:
discoveryHost: ${{CONSUL_HOST}}
healthCheck:
timeout: 1s
interval: 10s
tcp: ${{ service.discoveryHost }}:${{ service.port }}
maxRetry: 5
retryInterval: 5000
tags: ["v1.0.0", "microservice"]
name: io.ultimatebackend.srv.notification
port: 50044
Я пришел к выводу, что контейнер сервера consul каким-то образом не может связаться с агентами. Но я не знаю почему, и мне кажется, что мне не хватает очевидного спокойствия в структуре консула. Пожалуйста, сообщите.