【发布时间】:2018-06-17 16:16:50
【问题描述】:
我的机器上有 nomad 和 consul 的设置。
我用游牧工作启动了一项服务,并成功注册了它。
我的问题是关于 IP 解析:
- 在 Nomad UI 中,我可以看到 IP 10.0.75.1
- 在 Consul UI 中,在服务发现中,我可以看到 IP 10.0.75.1
- 在 consul healthcheck 中,使用的 IP 是不同的 172.31.194.209
两个 IP 都是很好的主机 IP,但我的问题是服务只回答 10.0.75.1。
我的意思并不是真的试图让该服务正常工作,因为我可以通过在 171.31.194.209 上设置不同的配置来解决该问题。
我想了解的是 consul 健康检查如何解析其主机 IP,在我的情况下,它与 Nomad/Consul-UI 不同。还有一种方法可以强制解决这个问题。
请注意,健康检查是由 Nomad 使用 network_mode = host
设置的一些配置:
CONSUL
{
"ui": true,
"data_dir": "C:\\Users\\foo\\consul\\data",
"client_addr": "10.0.75.1",
"node_name": "foonode",
"server": true,
"bind_addr": "10.0.75.1",
"ports": {
"http": 8500
},
"bootstrap": true,
"bootstrap_expect": 1,
"datacenter": "local",
"node_meta": {
"user": "foo"
}
}
游牧民族
name = "foonode"
bind_addr = "10.0.75.1"
datacenter = "local"
data_dir = "C:\\Users\\foo\\nomad\\data"
server {
enabled = true
bootstrap_expect = 1
}
client {
enabled = true
options {
"driver.raw_exec.enable" = "1"
}
meta {
user = "foo"
}
}
consul {
address = "http://10.0.75.1:8500"
}
【问题讨论】:
-
Consul 使用 Docker 分配给该容器的 IP 地址,您可以在运行容器的环境中的
NOMAD_IP_foo变量中找到它,其中foo是您分配给任务的端口。