Construcción del clúster Centos7.x Redis6.2.5
Requisitos previos:
Redis Cluster no utiliza hash consistente, sino una forma diferente de división. Conceptualmente, cada clave es parte de lo que llamamos una ranura hash.
El clúster de Redis tiene 16384 ranuras hash, al calcular el valor hash solo necesitamos tomar el CRC16 de la clave módulo 16384. Por ejemplo, es posible que tenga un clúster de 3 nodos, donde:
El nodo A contiene ranuras hash de 0 a 5500.
El nodo B contiene ranuras hash de 5501 a 11000.
El nodo C contiene ranuras hash del 11001 al 16383.
La agrupación en clústeres no está habilitada si el error ERR cluster support está deshabilitado para esta instancia.
Este ejemplo es un experimento realizado en un solo servidor. Solo se crearon seis directorios y se iniciaron seis servidores Redis.
Cree un archivo redis.conf en cada directorio 7000 a 7005. Como plantilla para el archivo de configuración, simplemente use el pequeño ejemplo anterior, pero asegúrese de cambiar el número de puerto 7000 según el nombre del directorio para usar el número de puerto correcto.
Utilice ps aux|grep redis para comprobar el estado de inicio de redis.
Si no desea pasar por la configuración manual anterior y la ejecución de una sola instancia para crear un clúster de Redis, existe un sistema más simple (pero no conocerá tantos detalles operativos).
Consulte el directorio utils/create-clusterRedis en su distribución. Hay un script llamado create-cluster (el mismo nombre que el directorio en el que se encuentra), que es un script bash simple. Para iniciar un clúster de 6 nodos que consta de 3 nodos maestros y 3 nodos esclavos, simplemente ingrese el siguiente comando:
Cuando la utilidad redis-cli le solicite que acepte el diseño del clúster, en el paso 2 responda sí.
Ahora puedes interactuar con el clúster y el primer nodo se iniciará en el puerto 30001 de forma predeterminada. Una vez completado, detenga el clúster usando el siguiente comando:
Lea el archivo README en este directorio para obtener más información sobre cómo ejecutar el script.
create-cluster.sh
Información del clúster
Nodo del clúster
En el ejemplo anterior podemos ver que las claves de contraseña establecidas son asignados a diferentes instancias.
Muchos SDK ahora son compatibles con dispositivos móviles, como: phpredis.
Echemos un vistazo a la situación actual de los clústeres.
Actualmente, 7000, 7001 y 7002 son roles de maestro, y 7003, 7004 y 7005 son roles de esclavo.
Luego, matamos el servicio redis en el puerto 7001.
7004.log registrará que 7001 está suspendido y luego se promociona a maestro.
Consulte el estado actual del clúster de la siguiente manera:
Podemos ver que 7004 ha sido ascendido a maestro, mientras que 7001 está en un estado fallido.
Inicie el servicio redis en 7001.
Podemos ver en 7001.log que se ha convertido en un nodo esclavo.
En este punto, echemos un vistazo al clúster:
Actualmente, 7000, 7002 y 7004 están en el rol maestro, mientras que 7001, 7003 y 7005 están en el rol esclavo. , este último fallo se producirá automáticamente.
Si se configura requirepass, se debe configurar masterauth; de lo contrario, la función maestro-esclavo no se puede cambiar automáticamente.
Modifique el valor del parámetro habilitado para clúster en el archivo de configuración redis.conf a sí, elimine el # antes del parámetro y luego reinicie el servidor Redis.
Agrega 2>/dev/null al final del comando.
Continuamos creando el directorio 7006 en el directorio de prueba del clúster, excepto el puerto y la ruta del registro, el método de configuración es el mismo que antes y luego iniciamos el servicio.
Ver el estado más reciente del clúster
Agregar un nodo esclavo 7006.
Cree el directorio 7007 en el directorio de prueba del clúster, excepto el puerto y la ruta del registro, otras configuraciones son las mismas que antes y luego inicie el servicio.
Ver la situación del clúster más reciente
A partir de la situación del clúster anterior, podemos ver el problema. Aunque los 7006 y 7007 recién agregados se han unido al clúster, no están asignados a las ranuras.
Situación del clúster después de la asignación
Antes de reducirlo:
La ranura 7006 se asigna a 7000.
Después de reducir:
Clústeres después de eliminar 7006 y 7007