Высокая доступность Docker для управляемых приложений между географически удалёнными дата-центрами

Вопрос или проблема

Какое решение FOSS обеспечивает высокую доступность для состоящих приложений Docker между географически распределенными дата-центрами?

  • ОС: CentOS 7
  • FOSS: без контракта на поддержку
  • Специфические требования: HA/резервирование состоящих контейнеров Docker (mongodb/postgres) между дата-центрами.

Для баз данных это зависит от базы данных/случая использования:

Postgres: Postgres BDR с HAProxy

MongoDB: Резервные наборы и измените URI API на mongodb://db1.example.net:27017,db2.example.net:2500/?replicaSet=test

Хотя MongoDB можно использовать с HAProxy, внутреннюю систему резервирования MongoDB нужно отключить, и, вероятно, будет проще просто изменить URI, как указано выше.

Нативную функциональность репликации/резервирования необходимо использовать для базы данных и иногда проксировать для нее.

Для других постоянных томов Docker, вероятно, будет достаточно DRBD.

Ответ или решение

Для обеспечения высокой доступности (HA) состояний приложений на базе Docker между географически удаленными дата-центрами можно использовать ряд свободно распространяемых программных решений (FOSS), специально адаптированных для работы с различными базами данных, такими как PostgreSQL и MongoDB. Ниже приведены рекомендации по каждому из сценариев.

PostgreSQL

  1. Postgres BDR (Bi-Directional Replication):
    • BDR — это решение для репликации, позволяющее организовать высокую доступность и синхронизацию данных между несколькими экземплярами PostgreSQL в разных дата-центрах. Оно поддерживает двустороннюю репликацию, что позволяет записывать данные на любом из конечных узлов и синхронизировать изменения.
    • Установите HAProxy перед BDR для распределения нагрузки и предоставления балансировки между экземплярами баз данных. HAProxy будет управлять запросами и перенаправлять их на доступные узлы в случае сбоя одного из них.

MongoDB

  1. Replica Sets:
    • MongoDB обеспечивает встроенные механизмы репликации и высокой доступности через Replica Sets. Вам необходимо создать Replica Set, состоящий из нескольких членов (узлов), распределенных по разным дата-центрам. Один из узлов будет являться основным, остальные — вторичными.
    • Для обеспечения работы с репликацией через несколько узлов используйте модифицированный URI для подключения, например:
      mongodb://db1.example.net:27017,db2.example.net:27017/?replicaSet=myReplicaSet
    • Обратите внимание, что если вы решите использовать HAProxy с MongoDB, то нужно будет отключить внутреннюю систему аварийного переключения MongoDB, что может внести дополнительные сложности в конфигурацию.

Обработка постоянных Docker-объемов

  1. DRBD (Distributed Replicated Block Device):
    • Для других постоянных Docker-объемов может быть использован DRBD. Это решение создает зеркала уровень блоков и поддерживает репликацию данных между узлами. Настройка DRBD обеспечит автоматическое переключение на резервное копирование в случае сбоя основного узла.
    • Рассмотрите использование DRBD как часть уровня хранения для обеспечения надежности и доступности дисковых ресурсов, используемых вашими приложениями.

Заключение

При проектировании решения для высокой доступности между удалёнными дата-центрами важно учитывать характеристики конкретного приложения и его требования к устойчивости. Настройка BDR для PostgreSQL и Replica Sets для MongoDB в сочетании с использованием HAProxy и DRBD создаст надежный и устойчивый кластер для поддержки ваших stateful Docker-приложений. Не забывайте также о регулярном мониторинге и тестировании механизма переключения, чтобы гарантировать безотказную работу вашей инфраструктуры.

Оцените материал
Добавить комментарий

Капча загружается...