Поведение аварийного переключения Docker Swarm кажется немного подавляющим

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

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

С Swarm я успешно запускаю и запускаю приложение (со всеми тремя узлами) и позаботился о том, чтобы у меня была каждая конфигурация с резервированием, т. Е. Существует более одного экземпляра для каждого из них, они правильно настроены для HA и не все экземпляры службы расположены на одном и том же узле Swarm. Конечно, я также позаботился о том, чтобы все мои Swarm-узлы присоединились к Swarm в качестве управляющих узлов, чтобы любой из них мог стать лидером Swarm, если исходный узел-лидер выйдет из строя.

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

Так что теперь пришло время протестировать поведение при сбое... Я ожидаю, что при уничтожении одного узла Swarm (то есть принудительное отключение виртуальной машины) мое приложение будет запущено, хотя, конечно, в "ухудшенном" режиме. Увы, после завершения работы я больше не могу подключиться к ЛЮБЫМ службам через их открытые (через Ingress) порты в течение значительного времени. Некоторые из них снова становятся достижимыми и действительно успешно восстанавливаются (например, к кластеру Elasticsearch из трех узлов можно снова получить доступ, разумеется, теперь ему не хватает одного узла, но он вернулся в "зеленое" состояние). Но другие (увы, включая наш внутренний LB...) остаются недоступными через опубликованные порты.

"Docker node ls" показывает один узел как недоступный

$ docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER 
STATUS
kma44tewzpya80a58boxn9k4s *  manager1  Ready   Active        Reachable
uhz0y2xkd7fkztfuofq3uqufp    manager2  Ready   Active        Leader
x4bggf8cu371qhi0fva5ucpxo    manager3  Down    Active        Unreachable

как и ожидалось.

Что я мог сделать неправильно в отношении настроек Swarm, которые вызывают эти эффекты? Я просто жду здесь слишком многого?

0 ответов

Другие вопросы по тегам