...
Однако при необходимости разнесения кластера WNAM на несколько центров обработки данных возникает следующая проблемакартина. В случае выхода из строя одного из ЦОД, либо пропадания каналов связи между ними, кластерная конфигурация кластерный сценарий MongoDB приводит к тому, что в каждом из ЦОД остается половина, или менее, узлов кластера. Механизм выбора PRRIMARY-узла кластера не может сделать свой выборнайти решения, и вся база данных оказывается в режиме STANDBY, т.е. доступна только для чтения. Это делает всю систему WNAM, активно использующую БД в режиме записи, фактически неработоспособной.
Конфигурация с двумя или более узлами в разных ЦОД, каждый из которых должен иметь возможность временной изолированной работы, востребована в сценариях корпоративной авторизации 802.1х. В связи с этим в середине 2023 года в WNAM был добавлен альтернативный механизм формирования кластера, в котором. В нём:
- В каждом узле (ЦОД) кластера работает независимая (standalone) или реплицируемая локально (кластерная, из трех серверов) СУБД MongoDB
- В каждом узле кластера сервер (сервера) WNAM работает только с локальной СУБД MongoDB
- В каждом узле кластера на сервер (серверасерверах) WNAM работает брокер обмена сообщений Kafka
- Все узлы кластера, и все кластера между собой, связаны через брокер Kafka, который является единственным средством синхронизации данных.
...
Если вы установили WNAM из готового образа (OVF), то брокер Kafka уже установлен в /opt/kafka, и предварительно частично настроен. Остаётся только настроить IP-адреса узлов.
Если вы устанавливаете WNAM вручную на свой сервер, тогда вам необходимо установить Kafka, пользуясь следующей инструкций: https://kifarunix.com/install-apache-kafka-on-debian/ . Установку ведите в каталог /opt/kafka
Теперь вам необходимо настроить конфигурационный файл, определив в нем роль текущего сервера, и указав адреса остальных серверов кластера. Настраиваем все конфигурационные файлы на каждом сервере. В данном примере таковых будет три:
...
netams:
wnam:
cluster:
# optional, default false. Использовать kafka
kafka_enabled: true
# optional default false, отвечает за синхронизацию данных, между разными кластерами wnam, если true синхронизируются все коллекции, если false только конфигурационные параметры
full_sync: true
# optional, default 1 количество реплик (серверов) в кластере kafka
replicas: 3
# optional, default true. Пытаться выбрать лидера в kafka при падении брокеров kafka
unclean_election: true
# optional, default empty. Если master, то все задачи выполняются на этом сервере,.
role: master
# optional, default 'true'. Использовать локальный кэш. Может быть true или false, отключать кэш следует только в конфигурации когда нет кафки и больше одного сервера wnam
use_cache: true
spring:
# применяется если kafka_enabled = true
kafka:
bootstrap-servers: 172.16.135.10:9092,10.241.200.123:9092,10.241.200.124:9092
...