Múltiples aplicaciones, una base de datos
Es probable que tengas que desplegar múltiples aplicaciones IPF que todas usen la misma base de datos MongoDB. Esto implica
que todas las aplicaciones tendrán el mismo serviceName a pesar de que no deberían estar en el mismo clúster. Esto resultará en la formación de un mega-clúster, probablemente no sea lo que quieres.
Para distinguir entre tipos de aplicaciones IPF que deben unirse a un mismo clúster, usa la propiedad de configuración service-name.
El problema
IPF usa la misma plataforma base para todas las aplicaciones en tiempo de ejecución, que se inicializan de la misma forma:
-
Mismo
ActorSystemllamadoipf-flow -
Mismo Spring
ApplicationContext -
La misma jerarquía de overrides de configuración
Cuando se ejecutan múltiples aplicaciones en el mismo entorno, todas usando Akka Cluster Bootstrap con MongoDB como mecanismo de
service discovery, todas terminarán formando un único mega-clúster porque no tienen service name, y por lo tanto
usarán el nombre por defecto del servicio, que es el nombre del ActorSystem, que en este caso será ipf-flow universalmente:
En la imagen anterior, todos los nodos de todas las apps se han unido al mismo mega-clúster, lo que no es el comportamiento deseado. Lo que queremos es que cada app cree su propio clúster sin este cruce.
Un service name es la forma en que Akka Cluster Bootstrap resuelve este problema, donde hay múltiples nodos que pertenecen a clústeres diferentes y, sin embargo, comparten el mismo backend de descubrimiento.
Para especificar un service name, establece esta configuración con el mismo valor en todos los nodos de un tipo específico. La clave de configuración
es akka.management.cluster.bootstrap.contact-point-discovery.service-name.
Así, en todos los nodos de la App 1 podríamos especificar:
akka.management.cluster.bootstrap.contact-point-discovery.service-name = app-1
Y en la App 2 especificaríamos:
akka.management.cluster.bootstrap.contact-point-discovery.service-name = app-2
Lo que resultará en esta topología:
Verifícalo yendo a la URL /cluster/members de Akka Management Cluster HTTP Management para observar la configuración correcta
de los clústeres.