Configurar Cluster Bootstrap con descubrimiento MongoDB
Esta guía te ayudará a usar MongoDB como mecanismo de descubrimiento para iniciar (bootstrap) un clúster de Akka.
Paso 0: Añadir dependencia
Debes añadir esto a pom.xml:
<dependency>
<groupId>com.iconsolutions.ipf.core.discovery</groupId>
<artifactId>akka-discovery-mongodb-plugin</artifactId>
</dependency>
Para encontrar la última versión, puedes usar esta consulta de Nexus: esta consulta de Nexus.
Paso 1: Habilitar Akka Cluster Bootstrap y usar MongoDB
Añade este fragmento a tu configuración (application.conf):
akka {
extensions = ["akka.management.cluster.bootstrap.ClusterBootstrap"]
discovery {
method = akka-mongodb
akka-mongodb.uri = ${ipf.mongodb.url} # o usa un URI real de MongoDB si no lo usas con IPF
}
management.cluster.bootstrap {
contact-point.filter-on-fallback-port=false
}
}
Paso 2: Verificar
Al iniciar tu aplicación, deberías comprobar que se crean los índices y que el servicio se registra a sí mismo.
Busca estas líneas en el log:
[INFO] [04/26/2023 20:43:55.668] Ensured indexes on Akka Discovery MongoDB ([akka-discovery-mongodb-1])
[INFO] [04/26/2023 20:43:55.663] Registered self with service name 8cc4d63b-09c8-4fca-9668-b11e6d00e75a and host:port 127.0.1.1:8558: AcknowledgedUpdateResult{matchedCount=0, modifiedCount=0, upsertedId=BsonObjectId{value=64497efb0b510545dbb89377}}
Ten en cuenta que ambas funcionalidades se pueden desactivar. Consulta más abajo.
Ahora también deberías poder navegar al servicio HTTP de Akka Management (por defecto 127.0.1.1:8558) y observar que todos los nodos del mismo tipo y que usan el mismo método de descubrimiento están en un clúster juntos.
Apéndice A: Configuración por defecto
La tabla siguiente describe la configuración por defecto que se distribuye con la librería:
| Clave de configuración | Descripción | Valor por defecto |
|---|---|---|
|
¿Se permite a los nodos de Akka formar clúster? |
|
|
El URI de MongoDB que se usará para conectar a la base de datos. Establece el valor de este campo si no usas el plugin dentro de IPF o si no pretendes usar la misma base de datos que IPF. Respeta la propiedad global |
|
|
El nombre de la colección donde guardar los datos de descubrimiento |
|
|
El nombre de la colección donde guardar la configuración de descubrimiento que puede cambiar dinámicamente |
|
|
¿Debe este nodo registrarse a sí mismo en la base de datos? |
|
|
¿Debe Desactívalo si el usuario de la base de datos no tiene concedida la acción Respeta el override global de IPF |
|
|
El commit quorum que se usará al crear el índice para Akka Discovery MongoDB. Respeta el override global de IPF |
|
|
¿Debe ejecutarse el Updater? |
|
|
Retardo inicial antes de que el Updater empiece a actualizar el valor |
30 seconds |
|
Con qué frecuencia actualizar el valor |
30 seconds |
|
El valor |
30 minutes |
|
Si se debe habilitar el soporte SSL. Ponerlo en Respeta el override global |
|
|
Tipo del keystore. Respeta el override global |
|
|
Ruta al keystore que contiene el certificado SSL (normalmente un fichero jks). Respeta el override global |
|
|
Contraseña para acceder al keystore. Respeta el override global |
|
|
Contraseña para acceder a la clave en el keystore. Respeta el override global |
|
|
Tipo del truststore. Respeta el override global |
|
|
Ruta al truststore que contiene el certificado SSL. Respeta el override global |
|
|
Contraseña para acceder al truststore. Respeta el override global |
|
Ten en cuenta que también hay configuración general de Akka Cluster Bootstrap que podrías querer ajustar. La documentación general de Akka Cluster Bootstrap se puede encontrar aquí: aquí.