2014-11-26 2 views
0

В чем же причина, по которой требуется как минимум 3 экземпляра ActiveMQ, и 3 сервера ZooKeeper для запуска установки master/slave с реплицированным хранилищем LevelDB? Если требование наложено на использование ZooKeeper, для которого требуется не менее 3 серверов, в чем причина того, что ZooKeeper потребует как минимум 3 сервера для обеспечения надежности?минимальный размер кластера activemq с реплицированным хранилищем leveldb

  • ли это для обеспечения согласованности в случаях сетевых разделов (жертвуя наличие на меньшем меньшего раздела), как в 2-узловой конфигурации первичной резервной копии невозможно отличить неисправные узлы или обоего узлов, находящихся в другой сети перегородки?
  • Это для обеспечения толерантности к византийским отказам, когда вам нужно 2f + 1 узла, чтобы выжить f неисправных узлов (учитывая, что только сбой при сбое требует только f + 1 узлов, чтобы выжить f неисправностей)?

Есть ли другая причина?

Спасибо!

ответ

0

Для Zookeeper требуется не менее 3 серверов из-за того, как он выбирает новый мастер Activemq. Zookeeper требует, чтобы большинство (n/2 + 1) выбирали нового мастера. Если у него нет этого большинства, мастер не будет выбран, и система не сработает. Это та же причина, почему вы используете нечетное число серверов Zookeepers. (Серверы EG. 3 дают вам ту же частоту отказа, что и 4 из-за большинства, все равно могут потерять только один сервер.)

Для Activemq требуется, по меньшей мере, 3 сервера, из того, как синхронизируются сообщения, и факт, что, когда избран новый мастер, он требует, чтобы кворум узлов (N/2 + 1) мог идентифицировать последние обновления. ActiveMQ будет синхронизировать сообщения с одним ведомым, а затем ответить OK. Затем он будет синхронизироваться асинхронно со всеми другими ведомыми устройствами. Если кворум отсутствует, когда узел терпит неудачу, Zookeeper не имеет возможности отличить, какой узел является самым последним обновленным. Это то, что происходит, когда у вас только 2 узла изначально, поэтому рекомендуется по крайней мере 3.

From ActiveMQ site под Как это работает:

Все операции по передаче сообщений, которые требуют синхронизации на диск будет ждать обновления, чтобы быть воспроизведен в кворуме узлов до завершения. Поэтому, если вы настроите хранилище с репликами = «3», тогда размер кворума будет (3/2 + 1) = 2. Мастер сохранит обновление локально и дождитесь, пока еще один ведомый будет хранить обновление до сообщения об успешном завершении. Еще один способ подумать о том, что хранилище будет выполнять синхронную репликацию к кворуму узлов репликации и репликации асинхронной репликации на любые дополнительные узлы.

При выборе нового мастера вам также потребуется, по крайней мере, кворум узлов в Интернете, чтобы найти узел с последними обновлениями. Узел с последними обновлениями станет новым мастером. Поэтому рекомендуется, чтобы вы запускали, по крайней мере, 3 реплики, чтобы вы могли взять один из них без потери обслуживания.

+0

Спасибо - однако это не отвечает на мой вопрос: – sun

+0

Спасибо - однако это не отвечает на мой вопрос относительно того, почему, например, разработчики activemq решили синхронизировать сообщения с кворумом узлов? Является ли это гарантией согласованности в случае сетевых разделов или просто потому, что уже есть zookeeper, требующий 3 сервера? При наличии надежной сети можно было бы реализовать кластеры master/slave, которые могут пережить f сбоев при условии, что у вас есть процессы f + 1, что явно намного меньше, чем требует 2f + 1 процессов для выживания f сбоев. – sun

+0

Это для согласованности.Хотя я согласен, что в некоторых случаях не имеет смысла, их алгоритм по умолчанию для выбора нового мастера требует наличия n/2 + 1 узлов. Часть этого решения обусловлена ​​их механизмом синхронизации и тем фактом, что вам нужно как минимум 2 узла для идентификации, которые имеют самые обновленные сообщения. Я думаю, что было бы более разумно, если бы они требовали хотя бы 2 узла вверх, так что вам следовало бы потерпеть неудачу, в основном n-2 узлы могут быть потеряны. Я уверен, что у них была причина для этого. – czobrisky

Смежные вопросы