Подходят ли сервисы с собственными механизмами кластеризации для роя?

Я только недавно начал изучать рой. И у меня есть несколько вопросов о сценарии использования роя.

Если у меня есть простой веб-сервер, который отвечает на некоторые спокойные HTTP-запросы, роем кажется хорошим выбором, потому что, если мне нужно расширить свой веб-сервер по горизонтали, мне просто нужно использовать docker service scale и рой будет выполнять балансировку нагрузки для меня.

Но как насчет сервисов, которые имеют собственный механизм кластеризации (Redis, эластичный поиск?)? Я не могу просто расширить емкость через шкалу обслуживания докеров`.

Например, у меня есть служба Redis, если я docker service scale redis=2 , генерируются две отдельные службы Redis. Это явно не то, что мне нужно.

Подходят ли эти сервисы для режима роя? Если да, то как настроить эти сервисы в режиме роя? И как его расширить?

Всего 1 ответ


Службы с состоянием (например, Redis, RabbitMQ и т. Д.) Соответствуют режиму роя.

Однако вы несете ответственность за настройку кластера вручную, с помощью сценария beforeploy / postdeploy или в точке входа изображений.

Такая реконфигурация должна выполняться также после перезапуска каждой реплики независимо от причины: сбои одной реплики и последующие перезапуски, перезапуск всех служебных реплик, масштабирование новых реплик.

Содержание таких сценариев / шагов может отличаться в зависимости от кластерных решений, и следует обратиться к соответствующей документации каждого решения. Это может быть так же просто, как поместить виртуальные ips реплик в файл конфигурации или сложные упорядоченные шаги.

Общие варианты использования, которые подходят для всех решений: сначала настроить кластер внутри служебных реплик, подключить одну реплику обратно к кластеру после сбоя, перезапустить все реплики после сбоя / допустимого перезапуска.

Некоторые проекты GitHub пытаются автоматизировать процесс. Например мариадб-кластер


Есть идеи?

10000