Agrega compatibilidad con bastidores de Cassandra

En esta sección, se proporciona una guía general para escalar operaciones de Cassandra haciendo que Cassandra en Apigee Edge para la nube privada reconozca los bastidores.

Para obtener más información sobre por qué es importante que el bastidor de llamadas Cassandra sea importante, consulta los siguientes recursos:

¿Qué es un bastidor?

Un bastidor de Cassandra es una agrupación lógica de nodos de Cassandra dentro del anillo. Cassandra usa bastidores para garantizar que las réplicas se distribuyan entre diferentes agrupaciones lógicas. Como resultado, las operaciones se envían no solo a un nodo, sino a varios nodos, cada uno en un bastidor independiente, lo que proporciona una mayor tolerancia a errores y disponibilidad.

En los ejemplos de esta sección, se usan tres bastidores de Cassandra, que es la cantidad de bastidores que admite Apigee en topologías de producción.

La instalación predeterminada de Cassandra en Apigee Edge para la nube privada supone un solo bastidor lógico y coloca todos los nodos en un centro de datos dentro de él. Aunque esta configuración es fácil de instalar y administrar, es susceptible de fallas si falla una operación en uno de esos nodos.

En la siguiente imagen, se muestra la configuración predeterminada de la rueda de Cassandra:

1 bastidor con 3 nodos
(Figura 1) Configuración predeterminada: Todos los nodos en un solo bastidor

En una configuración más sólida, cada nodo se asignaría a un bastidor independiente, y las operaciones también se ejecutarían en réplicas de cada uno de esos bastidores.

En la siguiente imagen, se muestra un anillo de 3 nodos. En esta imagen, se muestra el orden en que se replican las operaciones en el anillo (en el sentido de las manecillas del reloj) y se destaca el hecho de que no hay dos nodos en el mismo bastidor:

3 bastidores, con 1 nodo en cada bastidor
(Figura 2) Configuración adaptada al bastidor: tres nodos, uno en cada bastidor

En esta configuración, las operaciones se envían a un nodo, pero también a réplicas de ese nodo en otros bastidores (en el sentido de las manecillas del reloj).

Agrega reconocimiento de bastidor (con 3 nodos)

Todas las topologías de instalación de producción de Apigee Edge para nube privada tienen al menos tres nodos de Cassandra, a los que se hace referencia en esta sección como “IP1”, “IP2” y “IP3”. De forma predeterminada, cada uno de estos nodos se encuentra en el mismo bastidor, “ra-1”.

En esta sección, se describe cómo asignar los nodos de Cassandra a bastidores separados para que todas las operaciones se envíen a los nodos de réplica en agrupaciones lógicas independientes dentro del anillo.

Para asignar nodos de Cassandra a diferentes bastidores durante la instalación, sigue estos pasos:

  1. Antes de ejecutar el instalador, accede al nodo de Cassandra y abre el siguiente archivo de configuración silencioso para editarlo:
    /opt/silent.conf

    Crea el archivo si no existe y asegúrate de que el usuario de “apigee” sea propietario.

  2. Edita la propiedad CASS_HOSTS, una lista de direcciones IP separadas por espacios (no entradas de DNS ni de nombre de host) que usa la siguiente sintaxis:
    CASS_HOSTS="IP_address:data_center_number,rack_number [...]"

    El valor predeterminado es un anillo de Cassandra de tres nodos, con cada nodo asignado al bastidor 1 y al centro de datos 1, como se muestra en el siguiente ejemplo:

    CASS_HOSTS="IP1:1,1 IP2:1,1 IP3:1,1"
  3. Cambia las asignaciones del bastidor para que el nodo 2 se asigne al bastidor 2 y el nodo 3, al bastidor 3, como se muestra en el siguiente ejemplo:
    CASS_HOSTS="IP1:1,1 IP2:1,2 IP3:1,3"

    Cuando cambias las asignaciones de bastidores, le indicas a Cassandra que cree dos agrupaciones lógicas adicionales (bastidores), que luego proporcionan réplicas que reciben todas las operaciones que recibe el primer nodo.

    Para obtener más información sobre el uso de la propiedad de configuración CASS_HOSTS, consulta Referencia del archivo de configuración de Edge.

  4. Guarda los cambios en el archivo de configuración y ejecuta el siguiente comando para instalar Cassandra con la configuración actualizada:
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f path/to/silent/config

    Por ejemplo:

    /opt/apigee/apigee-setup/bin/setup.sh -p c -f /opt/silent.conf
  5. Repite este procedimiento para cada nodo de Cassandra en el anillo, en el orden en que se asignan los nodos en la propiedad CASS_HOSTS. En este caso, debes instalar Cassandra en el siguiente orden:
    1. Nodo 1 (IP1)
    2. Nodo 2 (IP2)
    3. Nodo 3 (IP3)

Después de la instalación, debes verificar la configuración de Cassandra.

Verifica la configuración de Cassandra

Después de instalar una configuración de Cassandra con reconocimiento de bastidores, puedes verificar que los nodos estén asignados a los diferentes bastidores mediante el comando nodetool status, como se muestra en el siguiente ejemplo:

/opt/apigee/apigee-cassandra/bin/nodetool status

(Ejecutas este comando en uno de los nodos de Cassandra).

Los resultados deberían ser similares a los siguientes, en el que la columna Rack muestra los diferentes ID de bastidor para cada nodo:

Datacenter: dc-1
========================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens  Owns    Host ID                             Rack
UN  IP1   737 MB  256     ?     554d4498-e683-4a53-b0a5-e37a9731bc5c     ra-1
UN  IP2   744 MB  256     ?     cf8b7abf-5c5c-4361-9c2f-59e988d52da3     ra-2
UN  IP3   723 MB  256     ?     48e0384d-738f-4589-aa3a-08dc5bd5a736     ra-3

Si habilitaste la autenticación JMX para Cassandra, también debes pasar tu nombre de usuario y contraseña a nodetool. Si deseas obtener más información, consulta Usa nodetool para administrar los nodos del clúster.

Instala un anillo de seis nodos

Para obtener redundancia adicional, puedes expandir el anillo de Cassandra a seis nodos. En este caso, asignarás dos nodos a cada uno de los tres bastidores. Esta configuración requiere tres nodos adicionales: Nodo 4 (IP4), Nodo 5 (IP5) y Nodo 6 (IP6).

En la siguiente imagen, se muestra el orden en que se replican las operaciones en el anillo (en el sentido de las manecillas del reloj) y se destaca el hecho de que durante la replicación no hay dos nodos adyacentes en el mismo bastidor:

3 bastidores, con 2 nodos en cada bastidor
(Figura 3) Anillo de Cassandra de 6 nodos: Dos nodos en cada uno de los tres bastidores

En esta configuración, cada nodo tiene dos réplicas más: una en cada uno de los otros dos bastidores. Por ejemplo, el nodo 1 del bastidor 1 tiene una réplica en el bastidor 2 y el bastidor 3. Las operaciones enviadas al nodo 1 también se envían a las réplicas de los otros bastidores, en el sentido de las manecillas del reloj.

Para expandir un anillo de Cassandra de tres nodos a uno de Cassandra de seis nodos, configura los nodos de la siguiente manera en tu archivo de configuración silencioso:

CASS_HOSTS="IP1:1,1 IP4:1,3 IP2:1,2 IP5:1,1 IP3:1,3 IP6:1,2"

Al igual que con un anillo de tres nodos, debes instalar Cassandra en el mismo orden en el que aparecen los nodos en la propiedad CASS_HOSTS:

  1. Nodo 1 (IP1)
  2. Nodo 4 (IP4)*
  3. Nodo 2 (IP2)
  4. Nodo 5 (IP5)
  5. Nodo 3 (IP3)
  6. Nodo 6 (IP6)

* Realiza los cambios en el archivo de configuración silencioso antes de ejecutar la utilidad de configuración en el cuarto nodo (la segunda máquina del pedido de instalación de Cassandra).

Expandir a 12 nodos

Para aumentar aún más la tolerancia a errores y la disponibilidad, puedes aumentar la cantidad de nodos de Cassandra en el anillo de seis a 12. Esta configuración requiere seis nodos adicionales (de IP7 a IP12).

En la siguiente imagen, se muestra el orden en que se replican las operaciones en el anillo (en el sentido de las manecillas del reloj) y se destaca el hecho de que durante la replicación no hay dos nodos adyacentes en el mismo bastidor:

3 bastidores, con 4 nodos en cada bastidor
(Figura 4) Anillo de Cassandra de 12 nodos: Cuatro nodos en cada uno de los tres bastidores

El procedimiento para instalar un anillo de 12 nodos es similar a instalar un anillo de tres o seis nodos: configura CASS_HOSTS en los valores dados y ejecuta el instalador en el orden especificado.

Para expandirte a un anillo de Cassandra de 12 nodos, configura los nodos de la siguiente manera en tu archivo de configuración silencioso:

CASS_HOSTS="IP1:1,1 IP7:1,2 IP4:1,3 IP8:1,1 IP2:1,2 IP9:1,3 IP5:1,1 IP10:1,2 IP3:1,3 IP11:1,1 IP6:1,2 IP12:1,3"

Al igual que con los anillos de tres y seis nodos, debes ejecutar el instalador en los nodos en el orden en que aparecen en el archivo de configuración:

  1. Nodo 1 (IP1)
  2. Nodo 7 (IP7)*
  3. Nodo 4 (IP4)
  4. Nodo 8 (IP8)
  5. Nodo 2 (IP2)
  6. Nodo 9 (IP9)
  7. Nodo 5 (IP5)
  8. Nodo 10 (IP10)
  9. Nodo 3 (IP3)
  10. Nodo 11 (IP11)
  11. Nodo 6 (IP6)
  12. Nodo 12 (IP12)

* Debes realizar estos cambios antes de instalar Apigee Edge para la nube privada en el séptimo nodo (la segunda máquina en el orden de instalación de Cassandra).