IP-конфигурация кластера приложение к серверу базы данных

Мне нужно настроить IP-адрес кластера серверов приложений для подключения к кластеру серверов баз данных. От 1 к 1 довольно просто сопоставить сервер приложений с сервером базы данных, но когда дело касается кластерной среды, Интересно, как мне настроить / настроить IP-адрес на серверах приложений для подключения к более чем одному серверу баз данных, особенно при активной / пассивной настройке. Я запутался, поскольку не уверен, как мне настроить IP, где сервер приложений знает, с каким активным сервером базы данных он должен взаимодействовать, и когда связываться с другим сервером базы данных, когда главный сервер базы данных не работает. Может ли кто-нибудь указать мне направление, в котором мне следует двигаться?

Это конфигурация для настройки кластера / высокой доступности:

  • У меня есть коммутатор уровня 2, подключенный к маршрутизатору центра обработки данных.
  • У меня есть 2 сервера приложений. и 2 сервера баз данных.
  • И серверы приложений, и серверы баз данных являются собственными Я запутался, поскольку не уверен, как мне настроить IP, где сервер приложений знает, с каким активным сервером базы данных он должен взаимодействовать, и когда связываться с другим сервером базы данных, когда главный сервер базы данных не работает. Может ли кто-нибудь указать мне направление, в котором мне следует двигаться?

    Это конфигурация для настройки кластера / высокой доступности:

    • У меня есть коммутатор уровня 2, подключенный к маршрутизатору центра обработки данных.
    • У меня есть 2 сервера приложений. и 2 сервера баз данных.
    • И серверы приложений, и серверы баз данных являются собственными Я запутался, поскольку не уверен, как мне настроить IP, где сервер приложений знает, с каким активным сервером базы данных он должен взаимодействовать, и когда связываться с другим сервером базы данных, когда главный сервер базы данных не работает. Может ли кто-нибудь указать мне направление, в котором мне следует двигаться?

      Это конфигурация для настройки кластера / высокой доступности:

      • У меня есть коммутатор уровня 2, подключенный к маршрутизатору центра обработки данных.
      • У меня есть 2 сервера приложений. и 2 сервера баз данных.
      • И серверы приложений, и серверы баз данных являются собственными кластер с использованием ОС Debian с настройкой Corosync, Pacemaker и DRBD.
      • И серверы приложений, и кластер серверов баз данных подключен непосредственно к коммутатору.
      • Между сервером приложения / базы данных я использовал выделенный сетевой адаптер для corosync для отслеживания пульса.
      • Приложение, работающее на моем сервере приложений, - это просто кодированные API с помощью воспламенителя кода.
      • Моя база данных содержит postgesSQL и MongoDB.

      Network Infrastructure Design

-2
задан 19 November 2015 в 09:52
1 ответ

Могу говорить только о PostgreSQL , так как мне не хватает знаний о MongoDB :

  • Я бы не стал использовать DRBD для PostgreSQL .
  • Вместо этого я настоятельно рекомендую использовать агент ресурсов pgsql ocf.
  • Это позволяет вам настроить активный / пассивный кластер с использованием ] PostgreSQL синхронная потоковая репликация, которая реализована с версии 9.1.
  • Добавьте виртуальный / плавающий IP-адрес в кластер и, используя ограничения размещения, принудительно запускайте его на узле, который в настоящее время имеет PostgreSQL назначена главная роль.
  • Направьте серверы приложений на этот виртуальный / плавающий IP-адрес.
  • Однако у этого подхода есть и обратная сторона: после отработки отказа вам, возможно, придется скопировать данные из «теперь-главного» в «now-slave» (чтобы вернуть кластер в полностью рабочее состояние). Это не такая уж большая проблема, потому что переключение при отказе

    • происходит не так часто (обычно),
    • вы можете использовать для этого удобный инструмент ( pg_basebackup ),
    • в зависимости от того, как долго репликация между обоими узлами не работала и сколько данных было записано / удалено в / из базы данных за это время, PostgreSQL обработает это автоматически, после того как отказавший узел был возвращен в
  • Если вы реализуете этот подход, я бы рекомендовал (автоматически) отслеживать состояние репликации и некоторые детали, например, через postgres -c "psql -c \" SELECT application_name, client_addr, client_hostname, sync_state, state, sync_priority, replay_location FROM pg_stat_replication; \ "" , что дает нечто подобное

     application_name |  client_addr |  client_hostname |  sync_state |  состояние |  sync_priority |  replay_location
     -------------------- + ------------- + ---------------  - + ------------ + ----------- + --------------- + ------  -----------
    node2.example.com |  10.0.15.21 |  |  синхронизация |  потоковое |  0 |  0 / 40000C8
     

    , чтобы вы были проинформированы, если что-то пойдет не так.

  • Раскрытие: Я использую это в производстве уже ~ два года.



Изменить: Хотя этот учебник использует Fedora 19, это может быть интересно и вам полезно.

0
ответ дан 5 December 2019 в 21:42

Теги

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