Проверка работоспособности задания redis помечена как критическая в Nomad
При развертывании задания Redis в Nomad (0.6) мне не удается сохранить его работоспособным в Консуле.
Я запускаю Консул в контейнере и делаю порт 8500 доступным на локальном хосте.
$ docker container run --name consul -d -p 8500:8500 consul
Когда я запускаю кочевник, он корректно подключается к Консулу, как мы видим в логах.
$ nomad agent -dev
No configuration files loaded
==> Starting Nomad agent...
==> Nomad agent configuration:
Client: true
Log Level: DEBUG
Region: global (DC: dc1)
Server: true
Version: 0.6.0
==> Nomad agent started! Log data will stream in below:
...
2017/08/18 15:45:28.373766 [DEBUG] client.consul: bootstrap contacting following Consul DCs: ["dc1"]
2017/08/18 15:45:28.377703 [INFO] client.consul: discovered following Servers: 127.0.0.1:4647
2017/08/18 15:45:28.378851 [INFO] client: node registration complete
2017/08/18 15:45:28.378895 [DEBUG] client: periodically checking for node changes at duration 5s
2017/08/18 15:45:28.379232 [DEBUG] consul.sync: registered 1 services, 1 checks; deregistered 0 services, 0 checks
...
Затем я запускаю задание redis со следующим файлом конфигурации
job "nomad-redis" {
datacenters = ["dc1"]
type = "service"
group "cache" {
task "redis" {
driver = "docker"
config {
image = "redis:3.2"
port_map {
db = 6379
}
}
resources {
cpu = 500 # 500 MHz
memory = 256 # 256MB
network {
mbits = 10
port "db" {}
}
}
service {
name = "redis"
port = "db"
check {
name = "alive"
type = "tcp"
interval = "10s"
timeout = "2s"
}
}
}
}
}
Сервис Redis добавлен в консул, но выглядит как критический. Кажется, проверка здоровья не может быть сделано. Из того, что я понимаю, проверки выполняются в рамках задачи. Я что-то упускаю?
2 ответа
Запуск Консула на локальном хосте или в контейнере, подключенном к сети хоста (--net=host), исправил эту проблему.
Также вы можете найти опцию, позволяющую консулу прослушивать интерфейс 0.0.0.0 вместо 127.0.0.1, это также должно решить проблему.