Подходят ли сервисы с собственными механизмами кластеризации для роя? - PullRequest
1 голос
/ 13 февраля 2020

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

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

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

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

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

1 Ответ

1 голос
/ 13 февраля 2020

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

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

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

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

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

Некоторые проекты github пытаются автоматизировать процесс. Например mariadb-cluster

...