Zookeeper требует как минимум 3 сервера из-за того, как он выбирает нового мастера Activemq. Zookeeper требует большинства (n/2+1) для избрания нового хозяина. Если у него нет этого большинства, мастер не будет выбран, и система выйдет из строя. По той же причине вы используете нечетное количество серверов Zookeepers. (Например, 3 сервера дают ту же частоту отказов, что и 4, из-за большинства, все равно можно потерять только 1 сервер.)
Для Activemq необходимость как минимум 3 серверов определяется тем, как синхронизируются сообщения, и тем фактом, что при выборе нового мастера требуется как минимум кворум узлов (N/2+1), чтобы иметь возможность идентифицировать сервер. последние обновления. ActiveMQ будет синхронизировать сообщения с 1 ведомым устройством, а затем ответит OK. Затем он будет асинхронно синхронизироваться со всеми остальными ведомыми устройствами. Если кворум отсутствует при сбое узла, то Zookeeper не сможет определить, какой узел обновляется чаще всего. Вот что происходит, когда у вас изначально всего 2 узла, поэтому рекомендуется как минимум 3.
С сайта ActiveMQ в разделе "Как это работает":
Все операции обмена сообщениями, для которых требуется синхронизация с диском, перед завершением будут ожидать репликации обновления на кворум узлов. Поэтому, если вы настроите хранилище с репликами = 3, размер кворума будет (3/2 + 1) = 2. Мастер сохранит обновление локально и подождет, пока 1 другой ведомый сохранит обновление, прежде чем сообщить об успешном завершении. Другой способ думать об этом состоит в том, что хранилище будет выполнять синхронную репликацию к кворуму узлов репликации и репликацию асинхронной репликации к любым дополнительным узлам.
Когда избирается новый мастер, вам также нужен как минимум кворум узлов в сети, чтобы иметь возможность найти узел с последними обновлениями. Узел с последними обновлениями станет новым мастером. Поэтому рекомендуется запускать как минимум 3 узла реплики, чтобы можно было отключить один из них, не страдая от перебоев в работе службы.
person
czobrisky
schedule
02.12.2014