2014-10-14 3 views
0

У меня есть кластерная установка кролика на HA. Я использую «точно» политику, аналогичную:Как определить, какие узлы в моем кластере rabbitmq являются HA?

rabbitmqctl set_policy ha-two "^two\." \'{"ha-mode":"exactly","ha-params":10,"ha-sync-mode":"automatic"}' 

У меня есть 30 машин, работающих, из которых 10 являются HA узлы с очередями тиражируемых. Когда мой брокер идет вниз (случайным образом назначается первым узлом HA), мне нужны мои работники сельдерея, чтобы указать на новый узел HA (один из 9 левых). У меня есть сценарий, который автоматизирует это. Проблема заключается в следующем: я не знаю, как различать обычный узел кластера и узел HA. Когда я выдаю команду:

rabbitmqctl cluster_status 

Категории, которые я получаю, это «бегущие узлы», «диск» и «ram». но здесь нет способа определить, является ли узел HA.

Любые идеи?

ответ

0

В кластере каждый узел обменивается всем с другим, поэтому вам не нужно различать узлы в своем приложении, чтобы получить доступ ко всем объектам.

В вашем случае, когда один из узлов HA опускается (их число доходит до 9), очереди HA будут реплицированы на первый доступный узел (не имеет значения, диск или ram).

+0

Да, но мои не-HA-узлы в кластере не имеют реплицированных очередей. Вы говорите, что, даже если это так, мои не-HA-узлы могут выступать в роли брокеров? – jeffrey

+0

Я не думаю, что мои работники сельдерея не смогут получить доступ к очереди, поскольку узел кластера не-HA не имеет копии очереди – jeffrey

+0

Что вы подразумеваете под «узлами HA»? HA, установленный в очереди, в вашем случае очередь должна быть реплицирована ровно на 10 узлов. Таким образом, вы должны потерять в то же время все 10 узлов, где очередь находится, чтобы попасть в беду. – pinepain