Administración de Clústeres Redis

RedisRedisBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo administrar un clúster de Redis. El laboratorio se centra en tareas esenciales de administración de clústeres, incluyendo la inicialización de un clúster, la adición de nodos, la verificación del estado del clúster y el refragmentación (resharding) de slots.

Comenzaremos inicializando un clúster de Redis utilizando el comando redis-cli --cluster, que automatiza la configuración inicial. Luego, aprenderá a agregar un nuevo nodo utilizando CLUSTER MEET. A continuación, verificará el estado del clúster con CLUSTER INFO. Finalmente, refragmentará slots entre nodos utilizando CLUSTER SETSLOT para equilibrar el clúster.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL redis(("Redis")) -.-> redis/RedisGroup(["Redis"]) redis/RedisGroup -.-> redis/setup_redis("Install Redis") redis/RedisGroup -.-> redis/launch_server("Start Redis Server") redis/RedisGroup -.-> redis/access_cli("Connect Using CLI") subgraph Lab Skills redis/setup_redis -.-> lab-552095{{"Administración de Clústeres Redis"}} redis/launch_server -.-> lab-552095{{"Administración de Clústeres Redis"}} redis/access_cli -.-> lab-552095{{"Administración de Clústeres Redis"}} end

Inicializar el Clúster de Redis

En este paso, inicializará un clúster de Redis utilizando el comando redis-cli --cluster create. Este comando simplifica el proceso de configuración de un clúster de Redis funcional.

¿Qué es un Clúster de Redis?

Un clúster de Redis es una configuración distribuida que divide automáticamente los datos entre múltiples nodos de Redis. Esto le permite escalar su implementación de Redis horizontalmente y administrar conjuntos de datos más grandes de lo que una sola instancia de Redis puede manejar.

¿Por qué usar redis-cli --cluster create?

El comando redis-cli --cluster create proporciona una forma sencilla de crear, administrar e interactuar con un clúster de Redis. Automatiza la configuración inicial y el descubrimiento de nodos, lo que facilita la creación del clúster.

Pasos:

  1. Iniciar Instancias de Redis:

    Primero, necesita configurar e iniciar múltiples instancias de Redis. Para este laboratorio, utilizaremos seis instancias que se ejecutan en los puertos 7000 a 7005. Cada instancia debe configurarse con cluster-enabled yes.

    Para hacer esto, puede usar los siguientes comandos para crear archivos de configuración e iniciar las instancias de Redis. Tenga en cuenta que estos comandos son solo para fines de demostración. El script de configuración ya ha configurado e iniciado estas instancias por usted.

    REDIS_CONF="/etc/redis/redis.conf"
    for port in 7000 7001 7002 7003 7004 7005; do
      CONF_FILE="/etc/redis/redis-${port}.conf"
      sudo cp "$REDIS_CONF" "$CONF_FILE"
      sudo sed -i "s/^port 6379/port ${port}/g" "$CONF_FILE"
      sudo sed -i "s/^#cluster-enabled yes/cluster-enabled yes/g" "$CONF_FILE"
      sudo sed -i "s/^#cluster-config-file nodes.conf/cluster-config-file nodes-${port}.conf/g" "$CONF_FILE"
      sudo sed -i "s/^#cluster-node-timeout 15000/cluster-node-timeout 15000/g" "$CONF_FILE"
      sudo sed -i "s/^#appendonly no/appendonly yes/g" "$CONF_FILE"
      sudo redis-server "$CONF_FILE" &
    done
    sleep 5
  2. Crear el Clúster:

    Ahora, use el comando redis-cli --cluster create para crear el clúster. Este comando requiere las direcciones IP y los puertos de los nodos iniciales.

    Abra su terminal y ejecute el siguiente comando:

    redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1
    • redis-cli --cluster create: Inicia el proceso de creación del clúster.
    • 127.0.0.1:7000 127.0.0.1:7001 ... 127.0.0.1:7005: Las direcciones y los puertos de las instancias de Redis.
    • --cluster-replicas 1: Especifica que cada nodo maestro (master node) debe tener una réplica.
  3. Confirmar la Creación del Clúster:

    La herramienta redis-cli le pedirá que confirme la creación del clúster. Escriba yes y presione Enter.

    >>> Creating cluster
    >>> Performing hash slots allocation on 6 nodes...
    >>> Master[0] -> Slots 0 - 5460
    >>> Master[1] -> Slots 5461 - 10922
    >>> Master[2] -> Slots 10923 - 16383
    >>> Adding replica node to Master[0]
    >>> Adding replica node to Master[1]
    >>> Adding replica node to Master[2]
    >>> M: 49a4928719291928192819281928192819281928 127.0.0.1:7000
       slots:[0-5460] (5461 slots) master
    >>> M: 9281928192819281928192819281928192819281 127.0.0.1:7001
       slots:[5461-10922] (5462 slots) master
    >>> M: 19281928192819281928192819281928192819281 127.0.0.1:7002
       slots:[10923-16383] (5461 slots) master
    >>> S: 81928192819281928192819281928192819281928 127.0.0.1:7003
       replicates 49a4928719291928192819281928192819281928
    >>> S: 28192819281928192819281928192819281928192 127.0.0.1:7004
       replicates 9281928192819281928192819281928192819281
    >>> S: 928192819281928192819281928192819281928192 127.0.0.1:7005
       replicates 19281928192819281928192819281928192819281
    >>> Can I set the above configuration? (type 'yes' to accept): yes
    >>> Slots 0-5460 assigned to node 49a4928719291928192819281928192819281928
    >>> Slots 5461-10922 assigned to node 9281928192819281928192819281928192819281
    >>> Slots 10923-16383 assigned to node 19281928192819281928192819281928192819281
    >>> Adding replica 81928192819281928192819281928192819281928 to 49a4928719291928192819281928192819281928
    >>> Adding replica 28192819281928192819281928192819281928192 to 9281928192819281928192819281928192819281
    >>> Adding replica 928192819281928192819281928192819281928192 to 19281928192819281928192819281928192819281
    >>> [OK] All nodes agree about the cluster configuration.
    >>> >>> Check cluster info
    >>> >>> Nodes
    >>> M: 49a4928719291928192819281928192819281928 127.0.0.1:7000
       slots:[0-5460] (5461 slots) master
       1 additional replica(s)
    >>> M: 9281928192819281928192819281928192819281 127.0.0.1:7001
       slots:[5461-10922] (5462 slots) master
       1 additional replica(s)
    >>> M: 19281928192819281928192819281928192819281 127.0.0.1:7002
       slots:[10923-16383] (5461 slots) master
       1 additional replica(s)
    >>> S: 81928192819281928192819281928192819281928 127.0.0.1:7003
       replicates 49a4928719291928192819281928192819281928
    >>> S: 28192819281928192819281928192819281928192 127.0.0.1:7004
       replicates 9281928192819281928192819281928192819281
    >>> S: 928192819281928192819281928192819281928192 127.0.0.1:7005
       replicates 19281928192819281928192819281928192819281
    >>> [OK] All nodes agree about the cluster configuration.
    >>> All 16384 slots covered.

    Esta salida muestra la asignación de slots a cada nodo maestro y la asignación de réplicas.

  4. Conectarse al Clúster:

    Conéctese al clúster de Redis utilizando redis-cli. Esto le permite ejecutar comandos contra el clúster.

    redis-cli -h 127.0.0.1 -p 7000
  5. Salir de redis-cli:

    Salga de la sesión de redis-cli para asegurarse de que el comando se registre.

    exit

Ahora ha inicializado con éxito un clúster de Redis. En los siguientes pasos, exploraremos cómo agregar nodos, verificar el estado del clúster y refragmentar slots.

Agregar un Nuevo Nodo al Clúster

En este paso, aprenderá cómo agregar un nuevo nodo a un clúster de Redis existente utilizando el comando CLUSTER MEET. Este comando es esencial para expandir la capacidad de su clúster y garantizar una alta disponibilidad.

Entendiendo CLUSTER MEET

El comando CLUSTER MEET introduce un nuevo nodo de Redis al clúster. Cuando un nodo recibe este comando, intenta conectarse al nodo especificado e inicia el proceso de handshake (apretón de manos) para formar parte del clúster.

Prerrequisitos:

  • Un clúster de Redis inicializado como se describe en el paso anterior.
  • Una nueva instancia de Redis en ejecución y configurada para ser parte del clúster, pero aún no conectada. Para este laboratorio, asumiremos que tiene una nueva instancia ejecutándose en el puerto 7006. Esta instancia debe iniciarse con la opción de configuración cluster-enabled yes. El script de configuración ya ha configurado e iniciado esta instancia por usted.

Pasos:

  1. Conectarse a un Nodo Existente:

    Conéctese a uno de los nodos existentes en el clúster utilizando redis-cli. No importa a qué nodo se conecte, ya que el comando CLUSTER MEET propagará la información por todo el clúster.

    redis-cli -h 127.0.0.1 -p 7000
  2. Usar el Comando CLUSTER MEET:

    Ahora que está conectado a un nodo en el clúster, use el comando CLUSTER MEET para introducir el nuevo nodo (puerto 7006).

    CLUSTER MEET 127.0.0.1 7006
    • CLUSTER MEET: El comando para agregar un nuevo nodo.
    • 127.0.0.1: La dirección IP del nuevo nodo.
    • 7006: El número de puerto del nuevo nodo.

    Debería ver la siguiente salida:

    OK

    Esto indica que el comando se envió correctamente.

  3. Salir de redis-cli:

    Salga de la sesión de redis-cli para asegurarse de que el comando se registre.

    exit

Ha agregado con éxito un nuevo nodo al clúster de Redis. En el siguiente paso, verificaremos el estado del clúster.

Verificar el Estado del Clúster

En este paso, aprenderá cómo verificar el estado (health) y la situación (status) de su clúster de Redis utilizando el comando CLUSTER INFO. Este comando proporciona información valiosa sobre el estado general del clúster.

Entendiendo CLUSTER INFO

El comando CLUSTER INFO devuelve información sobre el clúster de Redis, que se puede utilizar para monitorear su estado y diagnosticar problemas.

Prerrequisitos:

  • Un clúster de Redis inicializado y con un nuevo nodo agregado como se describe en los pasos anteriores.

Pasos:

  1. Conectarse a un Nodo del Clúster:

    Conéctese a cualquiera de los nodos del clúster utilizando redis-cli.

    redis-cli -h 127.0.0.1 -p 7000
  2. Ejecutar el Comando CLUSTER INFO:

    Utilice el comando CLUSTER INFO para recuperar información del clúster.

    CLUSTER INFO

    Debería ver una salida similar a la siguiente:

    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:7
    cluster_size:3
    cluster_current_epoch:7
    cluster_my_epoch:7
    ...
  3. Interpretando la Salida:

    Aquí hay un desglose de algunas métricas clave:

    • cluster_state:ok: El clúster está en un estado saludable (healthy).
    • cluster_slots_assigned:16384: El número de slots asignados a los nodos.
    • cluster_slots_ok:16384: El número de slots que funcionan correctamente.
    • cluster_slots_pfail:0: El número de slots en un estado "potencialmente fallido" (potentially failing).
    • cluster_slots_fail:0: El número de slots en un estado "fallido" (failing).
    • cluster_known_nodes:7: El número total de nodos que el nodo actual conoce.
    • cluster_size:3: El número de nodos maestros (master nodes) en el clúster.
  4. Salir de redis-cli:

    Salga de la sesión de redis-cli para asegurarse de que el comando se registre.

    exit

Ha verificado con éxito el estado de su clúster de Redis utilizando el comando CLUSTER INFO.

Reasignar (Reshard) Slots al Nuevo Nodo

En este paso, aprenderá cómo reasignar (reshard) slots en un clúster de Redis utilizando el comando redis-cli --cluster reshard. Esto es importante para distribuir los datos de manera uniforme, especialmente después de agregar nuevos nodos.

Entendiendo los Slots de Redis y la Reasignación (Resharding)

Un clúster de Redis divide el espacio de claves (keyspace) en 16384 slots. Cada nodo maestro (master node) es responsable de un subconjunto de estos slots. Cuando agrega un nuevo nodo, inicialmente no posee ningún slot. La reasignación (resharding) mueve slots de los nodos existentes al nuevo nodo, equilibrando los datos y la carga de trabajo.

Pasos:

  1. Conectarse al Clúster usando redis-cli --cluster:

    Para realizar la operación de reasignación (resharding), utilizará el comando redis-cli --cluster reshard. Este comando proporciona una forma interactiva de redistribuir los slots en todo el clúster.

    Abra su terminal y ejecute el siguiente comando:

    redis-cli --cluster reshard 127.0.0.1:7000

    Este comando se conecta al clúster de Redis a través del nodo en 127.0.0.1:7000 e inicia el proceso de reasignación (resharding).

  2. Especificar el Número de Slots a Mover:

    La herramienta redis-cli le pedirá que ingrese el número de slots que desea mover. Para este ejemplo, movamos 101 slots al nuevo nodo.

    How many slots do you want to move? (default: all)

    Ingrese 101 y presione Enter.

  3. Ingrese el ID del Nodo de Destino:

    A continuación, la herramienta le pedirá que ingrese el ID del nodo de destino, que es el nuevo nodo que agregó en el paso anterior (puerto 7006). Para encontrar el ID del nodo, puede usar el comando CLUSTER NODES como se muestra en los pasos anteriores, o puede usar el siguiente comando para obtener el ID del nodo directamente:

    redis-cli -h 127.0.0.1 -p 7006 cluster nodes | grep myself | awk '{print $1}'

    Copie el ID del nodo de la salida. La herramienta redis-cli le preguntará:

    What is the receiving node ID?

    Pegue el ID del nodo y presione Enter.

  4. Especificar los Nodos de Origen:

    La herramienta le pedirá que especifique los nodos de origen desde los cuales tomar los slots. Puede ingresar all para redistribuir los slots de todos los nodos maestros (master nodes) existentes.

    Please enter all the source node IDs.
      Type 'all' to use all the nodes as source nodes for the hash slots.
      Type 'done' to stop entering IDs.

    Ingrese all y presione Enter.

  5. Confirmar el Plan de Reasignación (Resharding):

    La herramienta redis-cli mostrará el plan de reasignación (resharding) y le pedirá que confirme.

    Do you want to proceed with the reshard plan? (type 'yes' to accept):

    Escriba yes y presione Enter para iniciar el proceso de reasignación (resharding).

  6. Esperar a que se Complete la Reasignación (Resharding):

    La herramienta redis-cli ahora moverá los slots de los nodos de origen al nodo de destino. Este proceso puede llevar algún tiempo, dependiendo de la cantidad de datos en el clúster. Verá mensajes de progreso a medida que se mueven los slots.

  7. Salir de redis-cli:

Una vez que se complete la reasignación (resharding), salga de la sesión de redis-cli.

```redis
exit
```

Ahora ha reasignado (re-sharded) con éxito los slots en su clúster de Redis utilizando el comando redis-cli --cluster reshard. Esto asegura que los datos estén distribuidos de manera más uniforme en todo el clúster, incluido el nuevo nodo.

Resumen

En este laboratorio, aprendió cómo administrar un clúster de Redis. Comenzó inicializando un clúster utilizando redis-cli --cluster create, luego agregó un nuevo nodo con CLUSTER MEET. Verificó el estado del clúster utilizando CLUSTER INFO y finalmente reasignó (re-sharded) slots con redis-cli --cluster reshard para equilibrar el clúster. Estas son tareas esenciales para administrar un clúster de Redis y garantizar su escalabilidad y alta disponibilidad.