Как смоделировать временный netsplit в кластере erlang с локальных узлов? - PullRequest
0 голосов
/ 19 октября 2018

У меня есть несколько узлов на локальной машине, подключенных к кластеру.На каждом узле работает мое приложение с зависимостью от gproc.Мне нужно проверить, как будет работать мое приложение, если произойдет временный нетсплит.Как я могу имитировать временный netsplit?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Обычно netsplit (или сбой сети в целом) ведет себя иначе, чем «правильное отключение».Вот почему я бы предложил смоделировать такие сбои, изменив базовый сетевой стек.

Вы можете использовать iptables и tc для этой цели.

Существуют библиотеки, которые помогут вам с такой настройкой, используя docker - если это вариант, вы можете взглянуть на https://github.com/worstcase/blockade. После настройки вы можете легко представитьмного общих сетевых сбоев, с которыми вам приходится сталкиваться при работе в распределенных системах ( заявление об отказе : я недавно внес вклад в эту библиотеку).

0 голосов
/ 19 октября 2018

Вы можете установить для cookie для определенного узла неправильное значение, а затем вручную отключить его.Два узла не смогут восстановить соединение, поскольку файлы cookie не совпадают.

erlang:set_cookie(myothernode@localhost, invalid_cookie),
erlang:disconnect_node(myothernode@localhost)

Для повторного подключения снова установите правильный файл cookie и выполните команду ping для узла:

erlang:set_cookie(myothernode@localhost, erlang:get_cookie()),
pong = net_adm:ping(myothernode@localhost)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...