2017-03-24 53 views
6

Patrząc na akka cluster documentation wydaje się, że musisz znać wartość portu serwera co najmniej 1 "węzeł początkowy", aby dołączyć do klastra. Przykład application.conf wyraźnie wskazuje, że deweloper musi wiedzieć „host1” i „host2” podczas zapisu pliku:Akka Cluster łączenie z równoważeniem obciążenia DNS

akka.cluster.seed-nodes = [ 
    "akka.tcp://[email protected]:2552", 
    "akka.tcp://[email protected]:2552"] 

Ale rozważyć możliwość rejestracji każdego węzła klastra z równoważenia obciążenia DNS. Na przykład: możliwe jest utworzenie 10 węzłów zarejestrowanych za pomocą modułu równoważenia obciążenia za nazwą "foobar.cluster.com", dzięki czemu moduł równoważący obciążenie wyśle ​​każde nowe połączenie do jednego z 10-węzłowych trybów round-robin.

Czy mogę następnie ustawić węzeł początkowy na "akka.tcp://[email protected]:2552"?

Innymi słowy, Czy można stosować dynamiczne równoważenie obciążenia, nazwy, aby dołączyć do klastra akka?

A priori istnieje jeden potencjalny problem: węzeł może uzyskać siebie jako węzeł początkowy za pierwszym razem. Jednym z możliwych rozwiązań tego problemu jest wprowadzenie tej samej wartości węzeł ziarno wielokrotnie w pliku conf, aby uzyskać wysokie prawdopodobieństwo ostatecznie podłączeniu do innego węzła:

akka.cluster.seed-nodes = [ 
    "akka.tcp://[email protected]:2552", 
    "akka.tcp://[email protected]:2552", 
    "akka.tcp://[email protected]:2552"] 

Ale może Akka tylko zredukować wszystkie te wartości do jedno połączenie, ponieważ wszystkie są dokładnie takie same ...

Z góry dziękujemy za rozpatrzenie i odpowiedź.

Odpowiedz

2

Jest to możliwe, ale musisz samodzielnie wykonać rozpoznawanie DNS, a następnie programowo dołączyć do klastra. Jest to nieco opisane tutaj: http://doc.akka.io/docs/akka/current/scala/cluster-usage.html#Joining_to_Seed_Nodes

Najpierw musisz mieć plik konfiguracyjny zawierający akka.cluster.seed-nodes = [], aby wyłączyć automatyczne dołączanie.

Wtedy trzeba by rozwiązać foobar.cluster.com aby uzyskać listę rzeczywistych węzłów tj 01.foobar.cluster.com, 02.foobar.cluster.com ...

byłoby użyć tych, do przyłączenia się do klastra: Cluster(system).joinSeedNodes(_list_of_nodes_with_port).

Wreszcie, pamiętaj, że gdy the hostname and port pair that Akka binds to will be different than the "logical" host name and port pair that is used to connect to the system from the outside. This requires special configuration