1

我正试图让 Consul Connect 边车特使工作,但边车的健康检查一直失败。

我正在使用以下版本的 Consul 和 Nomad

Consul : 1.7.3
Nomad : 0.11.1
CNI Plugins : 0.8.6

我的设置如下所示。

1 Consul 服务器在 docker 容器中运行 consul。

docker run -d --net=host --name=server -v /var/consul/:/consul/config consul:1.7 agent -server -ui -node=server-1 -bind=$internal_ip -ui -bootstrap-expect=1 -client=0.0.0.0

internal_ip是我的 GCP 虚拟机的内部 IP 地址。

1 台带有 Consul Agent 客户端模式的 Nomad 服务器

nohup nomad agent -config=/etc/nomad.d/server.hcl &

docker run -d --name=consul-client --net=host -v ${volume_path}:/consul/config/ consul:1.7 agent -node=$node_name -bind=$internal_ip -join=${server_ip} -client=0.0.0.0

interal_ip是 GCP VMserver_ip的内部 IP 地址,是 Server VM 的内部 IP 地址。

2 Nomad Client 与 Consul Agent 在客户端模式下

nohup nomad agent -config=/etc/nomad.d/client.hcl &

 docker run -d --name=consul-client --net=host -v ${volume_path}:/consul/config/ consul:1.7 agent -node=$node_name -bind=$internal_ip -join=${server_ip} -client=0.0.0.0

在 Nomad 客户端上,我consul在路径中也有可用的二进制文件。

现在我正在尝试从这里部署示例 Nomad 和 Consul Connect 作业

    job "countdash" {
      datacenters = ["dc1"]

      group "api" {
        network {
          mode = "bridge"
        }

        service {
          name = "count-api"
          port = "9001"

          connect {
            sidecar_service {}
          }
        }

        task "web" {
          driver = "docker"

          config {
            image = "hashicorpnomad/counter-api:v1"
          }
        }
      }

      group "dashboard" {
        network {
          mode = "bridge"

          port "http" {
            static = 9002
            to     = 9002
          }
        }

        service {
          name = "count-dashboard"
          port = "9002"

          connect {
            sidecar_service {
              proxy {
                upstreams {
                  destination_name = "count-api"
                  local_bind_port  = 8080
                }
              }
            }
          }
        }

        task "dashboard" {
          driver = "docker"

          env {
            COUNTING_SERVICE_URL = "http://${NOMAD_UPSTREAM_ADDR_count_api}"
          }

          config {
            image = "hashicorpnomad/counter-dashboard:v1"
          }
        }
      }
    }

服务和边车的 docker 容器启动并在 Consul 中注册,但我无法访问任何服务。

在此处输入图像描述

我通过 SSH 连接到 Nomad Client 节点,可以看到容器正在运行。

在此处输入图像描述

  1. 我注意到奇怪的是我看不到转发到主机的端口
  2. 我无法通过主机的 curl 访问它。

我试过做curl $internal_ip:9002,但没有奏效。

我检查了 Nomad 是否创建了任何新的桥接网络,因为这是我使用mode的,network stanza但没有新的网络。

在此处输入图像描述

我的设置中有什么遗漏吗?

4

1 回答 1

0

您是否尝试设置COUNTING_SERVICE_URL = "http://${NOMAD_UPSTREAM_ADDR_count_api}"COUNTING_SERVICE_URL = "http://localhost:8080",因为这是特使代理将侦听以将流量转发到 count-api 的本地绑定端口。

可以在https://github.com/hashicorp/video-content/tree/master/nomad-connect-integration/nomad_jobs找到工作连接设置的示例

于 2020-07-23T06:26:42.100 回答