2015-11-25 5 views
0

Я получил слушателя событий кластера, работающего на каждом узле, который отправить по электронной почте, чтобы уведомить меня, когда узлы недостижимы отчетности, и я заметил две странные вещи:Akka кластера дают ложную тревогу в узел недостижимый

  1. большую часть времени , недостижимое событие следует события достижимых снова
  2. , когда происходит событие недостижимо, я запрос состояние кластера, это показывает, что все еще узел UP

Вот мой конф:

akka { 

    loglevel = INFO 

    loggers = ["akka.event.slf4j.Slf4jLogger"] 

    jvm-exit-on-fatal-error = on 

    actor { 
    provider = "akka.cluster.ClusterActorRefProvider" 
    } 
    remote { 
    //will be overwrite on runtime 
    log-remote-lifecycle-events = off 
    netty.tcp { 
     hostname = "127.0.0.1" 
     port = 9989 
    } 
    } 

    cluster { 
    failure-detector { 
     threshold = 12.0 
     acceptable-heartbeat-pause = 10 s 

    } 

    use-dispatcher = cluster-dispatcher 

    } 

} 

//relieve unreachable report rate 
cluster-dispatcher { 
    type = "Dispatcher" 
    executor = "fork-join-executor" 
    fork-join-executor { 
    parallelism-min = 4 
    parallelism-max = 8 
    } 
} 

ответ

1

Пожалуйста, ознакомьтесь с жизненным циклом раздел членства кластера в документации: http://doc.akka.io/docs/akka/2.4.0/common/cluster.html#Membership_Lifecycle

недоступности носит временный характер, и указывает на то, что не было сердцебиения на некоторое время от удаленного узла. Это может быть отменено, как только сердечные приступы появятся снова. Это полезно для перенаправления данных с перегруженных узлов на другие или для компенсации небольших, прерывистых сетевых проблем. Обратите внимание, что член кластера не переходит в DOWN из недоступного автоматически, если не сконфигурирован так: http://doc.akka.io/docs/akka/2.4.0/scala/cluster-usage.html#Automatic_vs__Manual_Downing

Причина, по которой DOWNing ручная, а не автоматическая по умолчанию, связана с риском сценариев с разделением мозгов и их последствиями, например, когда Используются кластерные синглтоны (которые не будут синглонами после того, как кластер попадет на две части из-за сломанного сетевого кабеля). Для получения дополнительных опций для автоматического разрешения таких случаев в коммерческой версии Akka находится SBR (Split Brain Resolver): http://doc.akka.io/docs/akka/rp-15v09p01/scala/split-brain-resolver.html

Кроме того, DOWN-ing является постоянным, узел, однажды отмеченный как DOWN, навсегда изгнан из выживших часть кластера, т. е. даже если он окажется в живых в будущем, он не будет возвращен обратно (см. раздел «Ограждение» и «STONITH» для объяснения: https://en.wikipedia.org/wiki/STONITH или http://advogato.org/person/lmb/diary/105.html).