Проявление сплита:
В системе возникают следующие предупреждения:
Inconsistent database with node <NODE_NAME> - данное предупреждение генерируется в случае, если база данных mnesia перешла в неконсистентное состояние.
Node <NODE_NAME> of "<CLUSTER_NAME>" cluster is down - данное предупреждение генерируется в случае, если определенная нода пропала из кластера.
Запрос списка нод в консоли управления выдает разные результаты от команды к команде.
Команда на изменение конфигурации выполняется, но при просмотре настроек на разных нодах конфигурация отличается.
Вызов на один и тот же номер может как проходить, так и не проходить без дополнительных внешних воздействий (предупреждение о недоступности нод должны присутствовать).
Пример
Предупреждения во время сплита на сети:
>>>>>>
Решение:
1. Необходимо убедиться, что это действительно сплит. Для этого нужно подключиться к командной консоли CLI и выполнить команду /node/nodes-info nodes:
/node/nodes-info nodes
-----------------------------------------------------------------------------
Node |
Erlang |
Mnesia |
--------------------------------------------------------------------- |
||
core1@ecss1 |
core1 |
core1 |
core1@ecss2 |
core1 |
core1 |
ds@ecss1 |
ds |
ds |
ds@ecss2 |
ds |
ds |
md1@ecss1 |
md1 |
md1 |
md1@ecss2 |
md1 |
md1 |
megaco1@ecss1 |
megaco1 |
megaco1 |
megaco1@ecss2 |
megaco1 |
megaco1 |
mycelium1@ecss1 |
mycelium1 |
not running |
mycelium1@ecss2 |
mycelium1 |
not running |
sip1@ecss1 |
sip1 |
sip1 |
sip1@ecss2 |
sip1 |
sip1 |
-----------------------------------------------------------------------------
В приведенной таблице отображается полная информация о состоянии нод:
количество нод, запущенных в системе;
"видят" ли ноды кластера друг друга (Erlang);
есть ли сплит базы данных (Mnesia).
В этом примере сплита нет. Все ноды "видят" друг друга. Сплита БД нет.
Примечание. Mycelium не хранит в БД никакой информации, поэтому его статус - "not running".
Пример сплита:
/node/nodes-info nodes
-------------------------------------------------------------
Node |
Erlang |
Mnesia |
----------------------------------------------------- |
||
core1@ecss1 |
core1@ecss1 |
core1@ecss1 |
ds@ecss1 |
ds@ecss1 |
ds@ecss1 |
md1@ecss1 |
md1@ecss1 |
md1@ecss1 |
megaco1@ecss1 |
megaco1@ecss1 |
megaco1@ecss1 |
mycelium1@ecss1 |
mycelium1@ecss1 |
not running |
sip1@ecss1 |
sip1 |
sip1 |
-------------------------------------------------------------
Все ноды, кроме SIP-адаптера, находятся в сплите и "не видят" соседних нод.
2. Нужно перезапустить ноды.Для того чтобы перезапустить ноды необходимо в консоли Linux выполнить команду sudo systemctl restart <RELEASE_NAME> для каждой ноды, где <RELEASE_NAME> - имя останавливаемой подсистемы.
Пример перезапуска подсистемы mycelium:
sudo systemctl restart ecss-mycelium.service
Для упрощения этого процесса можно перезапустить все подсистемы одной командой sudo systemctl restart ecss.service.
3. Необходимо убедится, что сплит отсутствует. Для этого нужно подключиться к командной консоли CLI и выполнить команду /node/nodes-info nodes.