ClusterSingletonManager не переходит на другой ресурс

Я тестировал кластер Master/Worker со следующей настройкой:

  • 2 виртуальных сервера, на каждом сервере есть Master и Worker (отдельные jvms)
  • Мастер создается с помощью ClusterSingletonManager
  • Мастера также являются семенными узлами.

Я тестировал отказоустойчивость мастеров, вручную закрывая «активный» мастер-узел. В сценарии, когда рабочие не обрабатывают задачи, отработка отказа работает нормально. «Неактивный» мастер-узел обнаруживает другой узел как недостижимый и в конечном итоге запускает своего главного актера.

Но если воркеры заняты, то отказоустойчивость полностью не работает. «Неактивный» главный узел определяет другой как недоступный и помещает в карантин, как указано в сообщении ниже, но узел никогда не запускает главный актор.

2014-07-23 23:52:31,777 ИНФОРМАЦИЯ [JobRunner-akka.actor.default-dispatcher-17] Помещенный в карантин адрес [akka.tcp://[email protected]:40000] по-прежнему недоступен или не был перезапущен. Держим на карантине.

У кого-нибудь есть идеи, почему это происходит и есть ли решение?

Спасибо. С Уважением.


person user3784318    schedule 24.07.2014    source источник


Ответы (2)


В конце концов, размещение мастер-нод на их собственных серверах (отдельно от рабочих) сработало.

person user3784318    schedule 24.07.2014

Какую версию Акка вы используете? Недавно были внесены улучшения в приотизацию сердцебиения — обновите до 2.3.4 и проверьте.

person Konrad 'ktoso' Malawski    schedule 24.07.2014
comment
Я использую 2.3.2, попробую 2.3.4. Спасибо. - person user3784318; 24.07.2014
comment
Обновите, до перехода на 2.3.4 отказоустойчивость работала. Я оставил его включенным на ночь, выключил воркеры, и примерно через 17 часов нода решила запустить мастер-актор. Переход на версию 2.3.4 (Scala 2.10) проблему не решил. Обнаружение недоступных по-прежнему работает, как и карантин, но по какой-то причине он просто не запускает Мастер, когда рабочие заняты обработкой. Работник и сервер должны быть на разных серверах? - person user3784318; 24.07.2014
comment
Нет, они не обязательно должны находиться на разных физических серверах. На самом деле они могут быть одним и тем же jvm, но прослушиваются на разных портах. Вы видели это: hseeberger/akkamazing и эти примеры приложений: akka-sample-cluster-scala esp. этот образец: StatsSampleOneMaster.scala. Возможно, это поможет вам найти какую-то разницу? - person Konrad 'ktoso' Malawski; 25.07.2014
comment
Не видя кода, очень сложно решить эту проблему. Я думаю, что список рассылки akka-user — гораздо лучшее место для обсуждения таких вопросов, которые могут потребовать длинного кода или фрагментов журнала. - person Endre Varga; 25.07.2014
comment
Спасибо за введение, ребята. когда у меня будет больше времени покопаться в этом вопросе, я опубликую его в списке рассылки akka-user. - person user3784318; 25.07.2014