Консул агент. Не удалось проверить соединение с сокетом: error = "dial tcp 172.19.0.6:50044: connect: соединение отклонено" - PullRequest
0 голосов
/ 16 июня 2020

У меня проблемы с проверками работоспособности микросервисов в моей настройке консула 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 каким-то образом не может связаться с агентами. Но я не знаю почему, и мне кажется, что мне не хватает очевидного спокойствия в структуре консула. Пожалуйста, сообщите.

1 Ответ

0 голосов
/ 29 июня 2020

Я неправильно настраивал свой сервис. DicoveryHost должен быть IP-адресом и портом микрослужбы, предоставляемой docker, а не хостом консула.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...