领事代理。检查套接字连接失败:error="dial tcp 172.19.0.6:50044: connect: connection refused"

Consul agent. Check socket connection failed: error="dial tcp 172.19.0.6:50044: connect: connection refused"

我在 consul 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 服务定义

  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 环境变量来传递正确的主机 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

到目前为止,我的结论是领事服务器容器无法以某种方式到达代理。但我不知道为什么,我觉得我缺少领事结构的一些明显和平。请指教

我没有正确配置我的服务。 dicoveryHost 应该是 docker 网络内微服务的 IP 和端口。