我正在尝试让Consul Connect边车特使上类,但是对边车的健康检查一直失败。
我正在使用以下版本的Consul和Nomad
Consul : 1.7.3
Nomad : 0.11.1
CNI Plugins : 0.8.6
我的设置如下。
1 Consul Server在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 VM的内部IP地址。1在客户端模式下具有Consul Agent的Nomad Server
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 VM的内部IP地址,而server_ip
是Server VM的内部IP地址。2在客户端模式下具有Consul Agent的Nomad Client
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客户端上,我在path中也可以使用
consul
二进制文件。 现在,我正在尝试从here部署示例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"
}
}
}
}
用于服务和Sidecar的Docker容器已启动并已在Consul中注册,但我无法访问任何服务。
我通过SSH连接到Nomad Client节点,可以看到容器正在运行。
我尝试做
curl $internal_ip:9002
,但是没有用。我检查了Nomad是否创建了任何新的桥接网络,因为那是我在
mode
中用作network stanza
的网络,但是没有新网络。我的设置中缺少什么吗?
最佳答案
您是否尝试过将COUNTING_SERVICE_URL = "http://${NOMAD_UPSTREAM_ADDR_count_api}"
设置为COUNTING_SERVICE_URL = "http://localhost:8080"
,因为这是特使代理将侦听以将流量转发到count-api的本地绑定(bind)端口。
可以在https://github.com/hashicorp/video-content/tree/master/nomad-connect-integration/nomad_jobs中找到有效的连接设置示例