Рой докеров высокой доступности

У меня есть кластер Docker Swarm, работающий на нескольких серверах (узлах). Docker Swarm использует циклический перебор для обслуживания запросов к моим службам, и это работает хорошо, независимо от того, какой сервер получает запрос.

Теперь мне интересно, как направить URL-адрес в эту настройку, чтобы обеспечить высокую доступность.

Я использую Euro DNS (eurodns.com) и установите A-запись домена на несколько IP-адресов (серверы кластера роя).

В общем, это нормально, поскольку DNS обслуживает его в циклическом порядке и даже когда кэшируется, узел, который был поражен, будет обслуживать его циклически из-за Docker Swarm.

Но что, если узел / сервер полностью выйдет из строя? Будет ли у меня по-прежнему высокая доступность?

Даже если бы я использовал другой балансировщик нагрузки HAProxy или что-то подобное, кажется, всегда существует проблема, связанная с тем, что DNS будет обслуживать какой-то IP-адрес? То есть, если сервер HAProxy полностью выйдет из строя, ситуация будет такой же?

0
задан 7 August 2019 в 17:54
1 ответ

Циклический перебор DNS должен работать для большинства сценариев, хотя будет задержка, когда запросы на один тайм-аут IP и клиент в конечном итоге попытается повторить следующий IP в списке. Что это не поможет, так это частичный сбой, когда хост отвечает на сетевые запросы, но приложение (например, докер) не отвечает или дает плохие ответы.

Балансировщик нагрузки улучшает это несколькими способами. Во-первых, он может опрашивать приложение на предмет его работоспособности с помощью настраиваемого зонда и отправлять запросы только работоспособным экземплярам. Это позволяет избежать сценария частичного отказа. Во-вторых, несколько балансировщиков нагрузки могут быть настроены с виртуальным IP-адресом, что позволяет резервному балансировщику нагрузки принимать запросы, не дожидаясь тайм-аутов DNS на стороне клиента.

1
ответ дан 4 December 2019 в 15:38

Теги

Похожие вопросы