Documentation for a newer release is available. View Latest

Configurar Akka Lease MongoDB

Esta guía le ayudará a usar MongoDB como un mecanismo de descubrimiento para el arranque (bootstrap) de un clúster de Akka.

Paso 0: Añadir dependencia

Debe añadir esto a pom.xml:

<dependency>
    <groupId>com.iconsolutions.ipf.core.discovery</groupId>
    <artifactId>akka-lease-mongodb-plugin</artifactId>
    <version>${akka-lease-mongodb-plugin.version}</version>
</dependency>

Para encontrar la última versión, puede usar esta consulta en Nexus.

Paso 1: Usar el Lease

Crear un Lease programáticamente

Vea la documentación oficial de Akka para más detalles.

LeaseProvider provider = LeaseProvider.get(system);
Lease lease =  provider.getLease("<name of the lease>",
            "akka.coordination.lease.mongodb",
            "<owner name>");

CompletionStage<Boolean> acquired = lease.acquire();
boolean stillAcquired = lease.checkLease();
CompletionStage<Boolean> released = lease.release();

Usar el lease con Akka Split Brain Resolver

Para usar el lease de MongoDB con el Split Brain Resolver, simplemente añada el siguiente fragmento a su archivo de configuración (application.conf).

Para más información, vea la documentación oficial de Akka.

akka {
  cluster {
    downing-provider-class = "akka.cluster.sbr.SplitBrainResolverProvider"
    split-brain-resolver {
      active-strategy = "lease-majority"
      lease-majority {
        lease-implementation = "akka.coordination.lease.mongodb"
      }
    }
  }
}

Usar el Lease con Akka Cluster Singleton

Para usar el lease de MongoDB con Akka Cluster Singleton, simplemente añada el siguiente fragmento a su archivo de configuración (application.conf).

Para más información, vea la documentación oficial de Akka.

akka.cluster.singleton.use-lease = "akka.coordination.lease.mongodb"

Usar el Lease con Akka Cluster Sharding

Para usar el lease de MongoDB con Akka Cluster Sharding, simplemente añada el siguiente fragmento a su archivo de configuración (application.conf).

Para más información, vea la documentación oficial de Akka.

akka.cluster.sharding.use-lease = "akka.coordination.lease.mongodb"

Apéndice A: Configuración predeterminada

La siguiente tabla describe la configuración predeterminada incluida con la biblioteca:

Clave de configuración Descripción Valor predeterminado

akka.coordination.lease.mongodb.url

La URI de MongoDB que se usará para conectar con la base de datos.

Establezca el valor de este campo si no usa el plugin dentro de IPF o si no pretende usar la misma base de datos que IPF.

Respeta la propiedad global ipf.mongodb.url.

ipf.mongodb.url si se usa dentro de IPF, mongodb://localhost:27017/ipf` en caso contrario

akka.coordination.lease.mongodb.collection

El nombre de la colección que contendrá los datos del lease.

akka-lease-mongodb

akka.coordination.lease.mongodb.create-indexes

¿Debe akka-lease-mongodb crear sus propios índices?

Desactive esto si el usuario de la base de datos no tiene concedida la acción createIndex.

Respeta la anulación global de IPF ipf.mongodb.create-indexes.

ipf.mongodb.create-indexes si se establece, true en caso contrario

akka.coordination.lease.mongodb.commit-quorum

El commit quorum que se usará al crear el índice para Akka Lease MongoDB.

Respeta la anulación global de IPF ipf.mongodb.commit-quorum.

ipf.mongodb.commit-quorum si se establece, votingMembers en caso contrario

akka.coordination.lease.mongodb.heartbeat-timeout

La duración de gracia permitida a los leases adquiridos antes de que otro propietario pueda adquirirlos.

30s

akka.coordination.lease.mongodb.heartbeat-interval

El intervalo que un propietario de lease usará para renovar la propiedad del lease.

3s

akka.coordination.lease.mongodb.operation-timeout

La duración tras la cual una operación de lease (acquire, release) se considera como tiempo de espera agotado.

5s

akka.coordination.lease.mongodb.set-ssl-context

Si se habilita el soporte SSL.

Establecer esto en true requerirá configurar algunos de los ajustes de ssl-context de abajo.

Respeta la anulación global ipf.mongodb.set-ssl-context.

ipf.mongodb.set-ssl-context si se establece

akka.coordination.lease.mongodb.ssl-context.key-store-type

Tipo del almacén de claves.

Respeta la anulación global ipf.mongodb.ssl-context.key-store-type.

ipf.mongodb.ssl-context.key-store-type si se establece

akka.coordination.lease.mongodb.ssl-context.key-store-location

Ruta al almacén de claves que contiene el certificado SSL (normalmente un archivo jks).

Respeta la anulación global ipf.mongodb.ssl-context.key-store-location.

ipf.mongodb.ssl-context.key-store-location si se establece

akka.coordination.lease.mongodb.ssl-context.key-store-password

Contraseña usada para acceder al almacén de claves.

Respeta la anulación global ipf.mongodb.ssl-context.key-store-password.

ipf.mongodb.ssl-context.key-store-password si se establece

akka.coordination.lease.mongodb.ssl-context.key-password

Contraseña usada para acceder a la clave en el almacén de claves.

Respeta la anulación global ipf.mongodb.ssl-context.key-password.

ipf.mongodb.ssl-context.key-password si se establece

akka.coordination.lease.mongodb.ssl-context.trust-store-type

Tipo del almacén de confianza.

Respeta la anulación global ipf.mongodb.ssl-context.trust-store-type.

ipf.mongodb.ssl-context.trust-store-type si se establece

akka.coordination.lease.mongodb.ssl-context.trust-store-location

Ruta al almacén de confianza que contiene el certificado SSL.

Respeta la anulación global ipf.mongodb.ssl-context.trust-store-location.

ipf.mongodb.ssl-context.trust-store-location si se establece

akka.coordination.lease.mongodb.ssl-context.trust-store-password

Contraseña usada para acceder al almacén de confianza.

Respeta la anulación global ipf.mongodb.ssl-context.trust-store-password.

ipf.mongodb.ssl-context.trust-store-password si se establece