Docker сохранить имя хоста доступным, даже если контейнер не запущен - PullRequest
0 голосов
/ 30 марта 2020

У меня возникла следующая проблема при использовании Docker и Varni sh.

В моем файле docker-compose.yml определены следующие 2 контейнера

varnish:
   image: varnish
   network: test
my-app:
   image: my-app-image
   network: test

My varni sh VCL имеет следующую конфигурацию:

backend myApp {
    .host = "my-app";
    .port = "8080";
    .first_byte_timeout = 300s;
    .probe = {
        .url = "/percolate-health-check";
        .timeout = 1s;
        .interval = 4s;
        .window = 5;
        .threshold = 3;
    }
}

backend fallback { ...fallback backend settings }

Теперь возникает текущая проблема. Контейнер my-app отключается. Сетевое имя my-app также пропало. Это, в свою очередь, приводит к сбою Varni sh, поскольку мое приложение не может быть разрешено.

Есть ли способ для Docker имени хоста сохранять существование, даже если контейнер не работает?
Или как мне справиться с этим проблема с Varni sh / Docker.

Спасибо!

1 Ответ

1 голос
/ 31 марта 2020

Когда бэкэнд больше недоступен, Varni sh обычно не будет обрабатывать sh. Вместо этого будет возвращена ошибка HTTP 503.

Режим отсрочки

Если резервный контейнер отсутствует, вы можете использовать режим отсрочки, чтобы обслуживать устаревшие данные, пока сервер не работает. Посмотрите на https://varnish-cache.org/docs/6.0/users-guide/vcl-grace.html#misbehaving -серверы , чтобы увидеть пример VCL.

Директора

Если у вас есть резервный бэкэнд или просто несколько бэкэндов в целом, вы можно использовать директоров для балансировки нагрузки между бэкэндами: https://varnish-cache.org/docs/6.0/users-guide/vcl-backends.html#directors.

Существует множество типов директоров. См. https://varnish-cache.org/docs/6.0/reference/vmod_generated.html#varnish -directors-module для обзора

...