Назад | Перейти на главную страницу

Контейнеры Marathon с балансировкой нагрузки с помощью Haproxy и консула возвращают случайные 503 запроса

В настоящее время архитектура устроена так:

Каждая машина следующей конфигурации:

Проблема, с которой я столкнулся в настоящее время, заключается в том, что когда я запускаю контейнер докеров со службой в мостовом режиме, адрес разрешается DNS, как и должно быть (если у вас есть luigi.service.consul, это будет сделано без проблем) , но когда я пытаюсь CURL -L http://luigi.service.consul/, у меня случайный 503 error codes, иногда адрес разрешен, а иногда нет.

Есть идеи, как это исследовать?

я проверил /etc/resolv.conf и время от времени я могу видеть, что адрес DNS изменяется на старый IP-адрес DNS (8.8.8.8), следует ли использовать IP-адрес хоста в качестве IP-адреса DNS или мне нужно использовать адрес руководителя консула?

Я попытался отладить tcpflow, когда ответ 503, это похоже на ожидание некоторое время, как будто он не может разрешить службу.

Требуется некоторое время, чтобы получить образ Docker, запустить контейнер и, наконец, начать обслуживание запросов. В идеале вы должны перезагрузить HAProxy к тому моменту, когда ваш новый экземпляр будет готов. Но могут быть все еще активные подключения к вашему старому экземпляру. Когда вы начинаете исследовать эту проблему, оказывается, что решение уже существует, оно называется сине-зеленое развертывание как описано М. Фаулером.

Если вы стремитесь к нулевому времени простоя, тривиального решения не будет. Инженеры Yelp описывают, как перезагрузить HAProxy с помощью истинное нулевое время простоя добавив дополнительные правила в iptables.

В последнее время сине-зеленая схема развертывания был объединен в марафон-фунт (включая трюк с iptables от Yelp). я так думаю consul-mesos в настоящее время не поддерживает это.