Agrega compatibilidad con bastidores de Cassandra

En esta sección, se proporcionan lineamientos generales para el escalamiento de las operaciones de Cassandra haciendo que Cassandra en Apigee Edge para nube privada reconozca el bastidor.

Para obtener más información sobre por qué es importante que tu anillo de Cassandra tenga en cuenta el bastidor, 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 grupos lógicos. Como resultado, las operaciones se envían no solo a un nodo, sino a varios, 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 las topologías de producción.

La instalación predeterminada de Cassandra en Apigee Edge para 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 a fallas si una operación falla en uno de esos nodos.

En la siguiente imagen, se muestra la configuración predeterminada del anillo 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 en cada uno de esos bastidores.

En la siguiente imagen, se muestra un anillo de 3 nodos. En esta imagen, se muestra el orden en el 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 uno
(Figura 2) Configuración con reconocimiento de bastidor: Tres nodos, uno en cada bastidor

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

Agrega reconocimiento de bastidores (con 3 nodos)

Todas las topologías de instalación de producción de Apigee Edge para la nube privada tienen al menos tres nodos de Cassandra, a los que en esta sección se hace referencia como "IP1", "IP2" e "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 independientes para que todas las operaciones se envíen a nodos de réplica en grupos lógicos 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 silenciosa para editarlo:
    /opt/silent.conf

    Crea el archivo si no existe y asegúrate de que el usuario "apigee" sea el 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, en el que cada nodo se asigna 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 de bastidores para que el nodo 2 se asigne al bastidor 2 y el nodo 3 se asigne al bastidor 3, como se muestra en el siguiente ejemplo:
    CASS_HOSTS="IP1:1,1 IP2:1,2 IP3:1,3"

    Si 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 la 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 con el comando nodetool status, como se muestra en el siguiente ejemplo:

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

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

Los resultados deberían ser similares a los siguientes, en los que la columna Rack muestra los diferentes IDs 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 de JMX para Cassandra, también debes pasar tu nombre de usuario y contraseña a nodetool. Para obtener más información, consulta Usa nodetool para administrar nodos de clúster.

Instala un anillo de seis nodos

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

En la siguiente imagen, se muestra el orden en el 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 uno
(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 en el bastidor 1 tiene una réplica en el bastidor 2 y en 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 seis, configura los nodos de la siguiente manera en tu archivo de configuración silenciosa:

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 silenciosa antes de ejecutar la utilidad de configuración en el cuarto nodo (la segunda máquina en el orden 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 doce. Esta configuración requiere seis nodos adicionales (de IP7 a IP12).

En la siguiente imagen, se muestra el orden en el 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 uno
(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 al de instalar un anillo de tres o seis nodos: establece CASS_HOSTS en los valores dados y ejecuta el instalador en el orden especificado.

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

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 el 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).