Mirando la documentación del clúster de akka , parece que debe conocer los valores del servidor y del puerto de al menos 1 "nodo inicial" para unirse al clúster. El ejemplo application.conf indica claramente que el desarrollador necesita saber "host1" y "host2" al escribir el archivo:
akka.cluster.seed-nodes = [ "akka.tcp://ClusterSystem@host1:2552", "akka.tcp://ClusterSystem@host2:2552"]Pero considere la posibilidad de registrar cada nodo del clúster con un balanceador de carga de DNS. Por ejemplo: es posible instanciar 10 nodos que están todos registrados con un balanceador de carga detrás del nombre "foobar.cluster.com" de modo que el balanceador de carga enviará cada nueva conexión a uno de los 10 nodos al estilo round-robin.
¿Podría entonces configurar el nodo semilla en "akka.tcp://ClusterSystem@foobar.cluster.com:2552" ?
En otras palabras, ¿es posible usar nombres dinámicos de equilibrio de carga para unirse a un clúster akka?
A priori, existe un problema potencial: un nodo puede convertirse en el nodo semilla en el primer intento. Una posible solución a este problema es poner el mismo valor de nodo de inicialización varias veces en el archivo conf para tener una alta probabilidad de que finalmente se conecte a un nodo diferente:
akka.cluster.seed-nodes = [ "akka.tcp://ClusterSystem@foobar.cluster.com:2552", "akka.tcp://ClusterSystem@foobar.cluster.com:2552", "akka.tcp://ClusterSystem@foobar.cluster.com:2552"]Pero akka puede reducir todos esos valores a una sola llamada, ya que todos son exactamente iguales...
Gracias de antemano por su consideración y respuesta.
Es posible, pero debe hacer la resolución de DNS usted mismo y luego unirse al clúster mediante programación. Esto se describe un poco aquí: http://doc.akka.io/docs/akka/current/scala/cluster-usage.html#Joining_to_Seed_Nodes
Entonces, primero necesitaría que su archivo de configuración contenga akka.cluster.seed-nodes = [] para deshabilitar la unión automática.
Luego, deberá resolver foobar.cluster.com para obtener una lista de nodos reales, es decir, 01.foobar.cluster.com , 02.foobar.cluster.com , ...
Los usaría para unirse al clúster: Cluster(system).joinSeedNodes(_list_of_nodes_with_port) .
Finalmente, recuerde que cuando el par de nombre de host y puerto al que se une Akka será diferente del par de nombre de host y puerto "lógico" que se usa para conectarse al sistema desde el exterior. Esto requiere una configuración especial