Construcción del clúster de Redis Cluster (entorno CentOS7, Redis 6.0.9)

Tabla de contenido

 

1. Introducción

En segundo lugar, implemente el clúster de Redis Cluster

1. Compile el archivo Redis

2. Crea 6 carpetas nuevas y prepárate

3. Copie el archivo de ejecución de redis y conf

4. Modifique el archivo redis.conf

5. Cree un archivo de inicio start_all.sh

 6. Cree un archivo de detención stop_all.sh

7, inicia el nodo

8. Crea un clúster

En tercer lugar, verifique que el clúster esté funcionando correctamente.

referencias:


1. Introducción

En la versión independiente de Redis, no hay comunicación entre cada Maestro, por lo que generalmente hacemos Pre-sharding en un cliente Jedis o un agente como Codis. Según la teoría de CAP, la versión independiente de Redis garantiza CP (consistencia y tolerancia a la partición) y sacrifica A (disponibilidad), lo que significa que Redis puede garantizar que todos los usuarios vean los mismos datos (consistencia, porque Redis no es automáticamente redundante Cuando hay un problema con los datos) y la comunicación de la red, el subsistema temporalmente aislado puede continuar funcionando (tolerancia de partición, porque no hay una relación directa entre los Maestros, no se requiere comunicación), pero no hay garantía de que todas las solicitudes sean posibles. cuando algunos nodos fallan Respondió (disponibilidad, si un nodo maestro cuelga, entonces los datos fragmentados en él serán inaccesibles). Con la función Cluster, Redis ha cambiado de una base de datos de memoria NoSQL pura a una base de datos NoSQL distribuida, y el modelo CAP también ha cambiado de CP a AP. En otras palabras, a través de la fragmentación automática y los datos redundantes, Redis tiene una capacidad verdaderamente distribuida. Si un nodo está inactivo, porque los datos están respaldados en otros nodos, otros nodos pueden continuar proporcionándolos. El servicio garantiza la disponibilidad. Sin embargo, debido a esto, Redis no puede garantizar su fuerte consistencia. Esto también lo exige la teoría CAP, y solo se pueden elegir dos de los tres.

En segundo lugar, implemente el clúster de Redis Cluster

1. Compile el archivo Redis

Consulte la publicación anterior del blog para obtener más detalles.

2. Crea 6 carpetas nuevas y prepárate

[root @ 10 redis] # mkdir redis
[root @ 10 opt] # cd redis
[root @ 10 redis] # mkdir redis0
[root @ 10 redis] # mkdir redis1
[root @ 10 redis] # mkdir redis2
[root @ 10 redis ] # mkdir redis3
[root @ 10 redis] # mkdir redis4
[root @ 10 redis] # mkdir redis5

3. Copie el archivo de ejecución de redis y conf

[root @ 10 redis0] # cp ../../redis-6.0.9/bin/*.

[root @ 10 redis0] # cp ../../redis-6.0.9/etc/*.

[root @ 10 redis0] # cd ../redis1
[root @ 10 redis1] # cp ../redis0/* 

[root @ 10 redis1] # cd ../redis2
[root @ 10 redis2] # cp ../redis0/*.
[root @ 10 redis2] # cd ../redis3
[root @ 10 redis3] # cp ../redis0/*.
[root @ 10 redis3] # cd ../redis4
[root @ 10 redis4] # cp ../redis0/*.
[root @ 10 redis4] # cd ../redis5
[root @ 10 redis5] # cp ../redis0/*.
[root @ 10 redis5] # ls
dump.rdb redis-benchmark redis-check-rdb redis.conf redis-server
mkreleasehdr.sh redis-check-aof redis-cli redis-sentinel redis-trib.rb

4. Modifique el archivo redis.conf

Modifique los siguientes cuatro elementos (parte roja)

################################## LA RED ############### ######################

# De forma predeterminada, si no se especifica una directiva de configuración "bind", Redis escucha
# las conexiones de todas las interfaces de red disponibles en la máquina host.
# Es posible escuchar solo una o varias interfaces seleccionadas usando
# la directiva de configuración "bind", seguida de una o más direcciones IP.
#
# Ejemplos:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 :: 1
#
# ~~~ ADVERTENCIA ~~~ Si la computadora que ejecuta Redis está expuesta directamente
# a Internet, la vinculación a todas las interfaces es peligrosa y expondrá la
instancia # a todos en Internet. Entonces, de forma predeterminada, descomentamos la
# siguiente directiva de enlace, que obligará a Redis a escuchar
# Dirección de interfaz de loopback IPv4 (esto significa que Redis solo podrá
# aceptar conexiones de cliente desde el mismo host en el que se está ejecutando).
#
# SI ESTÁ SEGURO DE QUE QUIERE QUE SU INSTANCIA ESCUCHE TODAS LAS INTERFACES
# SOLO COMENTE LA SIGUIENTE LÍNEA.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
enlazar 127.0.0.1
enlazar 192.168.56.101

# Acepte conexiones en el puerto especificado, el valor predeterminado es 6379 (IANA # 815344).
# Si se especifica el puerto 0, Redis no escuchará en un socket TCP.
puerto 6379

 

########################################################################################################################################################################################################################################################################################################### #####################

# De forma predeterminada, Redis no se ejecuta como un demonio. Utilice 'sí' si lo necesita.
# Tenga en cuenta que Redis escribirá un archivo pid en /var/run/redis.pid cuando sea demonizado.
demonizar

############################### REDIS CLUSTER ################ ###############

# Las instancias normales de Redis no pueden formar parte de un clúster de Redis; sólo los nodos que se
inician # como nodos de clúster pueden hacerlo. Para iniciar una instancia de Redis como un
# nodo del clúster, habilite el soporte del clúster sin comentar lo siguiente:
#
habilitado para el clúster

Nota: Los números de puerto en las 6 carpetas de la misma IP deben ser diferentes, aquí es 6379-6484, en el uso real, los números de puerto de diferentes IP se pueden configurar de la misma manera.

5. Cree un archivo de inicio start_all.sh

Para facilitar la gestión, el archivo de inicio y el archivo de terminación se colocan en la carpeta redis, y también se copia una copia del archivo redis-cli

cd redis0
./redis-server redis.conf
cd ..
cd redis1
./redis-server redis.conf
cd ..
cd redis2
./redis-server redis.conf
cd ..
cd redis3
./redis-server redis.conf
cd ..
cd redis4
./redis-server redis.conf
cd ..
cd redis5
./redis-server redis.conf
cd ..

 6. Cree un archivo de detención stop_all.sh

./redis1/redis-cli -p 6379 shutdown
./redis1/redis-cli -p 6380 shutdown
./redis1/redis-cli -p 6381 shutdown
./redis1/redis-cli -p 6382 shutdown
./redis1/redis-cli -p 6383 shutdown
./redis1/redis-cli -p 6384 shutdown

7, inicia el nodo

./start_all.sh ejecuta el archivo de inicio, después de ejecutarlo, puede verificar el estado de inicio a través de ps

[root @ 10 redis] # ./start_all.sh
[root @ 10 redis] # ps -ef | grep redis
root 14959 1 0 08:18? 00:00:07 ./redis-server 192.168.56.101:6379 [cluster]
root 14965 1 0 08:18? 00:00:07 ./redis-server 192.168.56.101:6380 [cluster]
root 14971 1 0 08:18? 00:00:07 ./redis-server 192.168.56.101:6381 [clúster]
raíz 14977 1 0 08:18? 00:00:07 ./redis-server 192.168.56.101:6382 [cluster]
root 14983 1 0 08:18? 00:00:07 ./redis-server 192.168.56.101:6383 [cluster]
root 14989 1 0 08:18? 00:00:07 ./redis-server 192.168.56.101:6384 [cluster]
root 18204 10810 0 09:18 pts / 1 00:00:00 grep --color = auto redis

8. Crea un clúster

Ejecute ./redis-cli --cluster create 192.168.56.101:6379 192.168.56.101:6380 192.168.56.101:6381 192.168.56.101:6382 192.168.56.101:6383 192.168.56.101:6384 --cluster-replicas 1 comando para crear un grupo

[root @ 10 redis] # ./redis-cli --cluster create 192.168.56.101:6379 192.168.56.101:6380 192.168.56.101:6381 192.168.56.101:6382 192.168.56.101:6383 192.168.56.101:6384 --cluster- réplicas 1
>>> Realizando la asignación de slots hash en 6 nodos ...
Master [0] -> Slots 0 - 5460
Master [1] -> Slots 5461 - 10922
Master [2] -> Slots 10923 - 16383
Añadiendo réplica 192.168.56.101 : 6383 a 192.168.56.101:6379
Adición de réplicas 192.168.56.101:6384 a 192.168.56.101:6380
Adición de réplicas 192.168.56.101:6382 a 192.168.56.101:6381
>>> Intentando optimizar la asignación de esclavos para antiafinidad
[ADVERTENCIA] Algunos los esclavos están en el mismo host que su maestro
M: 522f0dca780073ab668bc80ded5a1489e2febe3e 192.168.56.101:6379
   ranuras: [0-5460] (5461 slots) maestro
M: f65edec341cdc39ded3ecd5298c92f3192c8afcd 192.168.56.101:6380
   ranuras: [5461-10922] (5462 slots) maestro
M: 1b55615b201a68db64db210381d9a4dbaaf6b17f 192.168.56.101:6381
   ranuras: [10923-16383] (5461 ranuras ) maestro
S: 3f9ff65caf28e79864f14f1996e8b5ecd136959a 192.168.56.101:6382
   repeticiones f65edec341cdc39ded3ecd5298c92f3192c8afcd
S: 5a595b9da405a27a097f9756008b47414e2da1f7 192.168.56.101:6383
   repeticiones 1b55615b201a68db64db210381d9a4dbaaf6b17f
S: 204bc647266c4c369ebe45d4ba0755c28543494e 192.168.56.101:6384
   repeticiones 522f0dca780073ab668bc80ded5a1489e2febe3e
¿puedo establecer la configuración anterior? (escriba 'sí' para aceptar): sí
>>> Se actualizó la configuración de los nodos
>>> Asigne una época de configuración diferente a cada nodo
>>> Enviando mensajes CLUSTER MEET para unirse al clúster
Esperando a que el clúster se una
..
>>> Realizando la verificación del clúster (usando el nodo 192.168.56.101:6379 )
M: 522f0dca780073ab668bc80ded5a1489e2febe3e 192.168.56.101:6379
   ranuras: [0 a 5460] (5461 slots) maestros
   1 réplica adicional (s)
M: f65edec341cdc39ded3ecd5298c92f3192c8afcd 192.168.56.101:6380
   ranuras: [5461 a 10922] (5462 slots) maestros
   1 réplica adicional (s)
M: 1b55615b201a68db64db210381d9a4dbaaf6b17f 192.168.56.101:6381
   ranuras: [10923-16383] (5461 ranuras) master
   1 réplica (s) adicional (s)
S: 204bc647266c4c369ebe45d4ba0755c28543494e 192.168.56.101:6384
   ranuras: (0 ranuras) esclavo
   repeticiones 522f0dca780073ab668bc80ded5a1489e2febe3e
S: 3f9ff65caf28e79864f14f1996e8b5ecd136959a 192.168.56.101:6382
   ranuras: (0 ranuras) esclavo
   repeticiones f65edec341cdc39ded3ecd5298c92f3192c8afcd
S: 5a595b9da405a27a097f9756008b47414e2da1f7 192.168.56.101:6383
   ranuras: (0 ranuras) de esclavos
   repeticiones 1b55615b201a68db64db210381d9a4dbaaf6b17f
[OK] Todos los nodos están de acuerdo con la configuración de las ranuras.
>>> Compruebe si hay ranuras abiertas ...
>>> Compruebe la cobertura de las ranuras ...
[OK] Todas las 16384 ranuras cubiertas.

Nota 1: Muchos en la red usan redis-trib.rb para crear clústeres, pero después de redis5.0, se cancela el soporte del script ruby ​​redis-trib.rb (la forma de agregar clústeres mediante la línea de comando manual permanece sin cambios ), cree una colección para redis En -cli, se evita el entorno relacionado con la instalación de ruby. Utilice el parámetro redis-clit --cluster directamente en su lugar. El mensaje de error es el siguiente:

[root @ 10 redis] # ./redis-trib.rb create --replicas 1 192.168.56.101:6379 192.168.56.101:6380 192.168.56.101:6381 192.92.168.56.101: 6383 192.168.56.101:6384
ADVERTENCIA: redis- trib.rb ya no está disponible!
Debería usar redis-cli en su lugar.

Todos los comandos y funciones que pertenecen a redis-trib.rb se han movido
a redis-cli.
Para usarlos, debe llamar a redis-cli con la
opción --cluster seguida del nombre del subcomando, los argumentos y las opciones.

Utilice la siguiente sintaxis:
redis-cli --cluster SUBCOMMAND [ARGUMENTS] [OPTIONS]

Ejemplo:
redis-cli --cluster create 192.168.56.101:6379 192.168.56.101:6380 192.168.56.101:6381 192.168.56.101:6382 192.168.56.56.101: 6384 --cluster-replicas 1

Para obtener ayuda sobre todos los subcomandos, escriba:
redis-cli --cluster help

Nota 2: al crear un clúster, el error de conexión se muestra de la siguiente manera

[root @ 10 redis] # redis-cli --cluster create 192.168.56.101:6379 192.168.56.101:6380 192.168.56.101:6381 192.168.56.10.101: 6383 192.168.56.101:6384 --cluster-replicas 1
No se pudo conectar a Redis en 192.168.56.101:6379: Conexión rechazada

Solución: compruebe si el enlace del archivo Redis.conf en el paso 4 tiene una IP enlazada, aquí es 192.168.56.101

Nota 3: El archivo ejecutable copiado informa un error al crear el clúster, el mensaje de error es el siguiente:

[root @ 10 redis] # ./redis-cli --cluster create 192.168.56.101:6379 192.168.56.101:6380 192.168.56.101:6381 192.168.56.10.101: 6383 192.168.56.101:6384 --cluster-replicas 1
[ ERR] El nodo 192.168.56.101:6379 no está vacío. O el nodo ya conoce otros nodos (verifique con CLUSTER NODES) o contiene alguna clave en la base de datos 0.

Solución: elimine los archivos appendonly.aof, dump.rdb, node_xxx.conf en cada nodo, inicie sesión en cada nodo redis con redis-cli -c -h -p, ejecute el siguiente comando y luego cree un clúster.

[root @ 10 redis] # ./redis0/redis-cli -c -h 192.168.56.101 -p
6379192.168.56.101: 6379 > flushdb
OK
192.168.56.101:6379> restablecimiento del clúster
OK
192.168.56.101:6379> salir

En tercer lugar, verifique que el clúster esté funcionando correctamente.

[root @ 10 redis] # ./redis1/redis-cli -c -H 192.168.56.101 -p 6379
192.168.56.101:6379> clúster nodos
f65edec341cdc39ded3ecd5298c92f3192c8afcd 192.168.56.101:6380@16380 master - 0 1607262213000 2 conectado 5461 a 10.922
1b55615b201a68db64db210381d9a4dbaaf6b17f 192.168.56.101:6381@16381 master - 0 1607262213000 3 conectada 10.923-16383
204bc647266c4c369ebe45d4ba0755c28543494e 192.168.56.101:6384@16384 esclavo 522f0dca780073ab668bc80ded5a1489e2febe3e 0 1nnected
3f9ff65caf28e79864f14f1996e8b5ecd136959a 192.168.56.101:6382@16382 esclavo f65edec341cdc39ded3ecd5298c92f3192c8afcd 0 1nnected
5a595b9da405a27a097f9756008b47414e2da1f7 192.168.56.101:6383@16383 esclavo 1b55615b201a68db64db210381d9a4dbaaf6b17f 0 1 conectado
522f0dca780073ab668bc80ded5a1489e2febe3e 192.168.56.101:6379@16379 mí mismo, amo - 0 1607262213000 1 conectado 0-5460
192.168.56.101:6379> Información de racimo
cluster_state: ok
cluster_slots_assigned: 16384
cluster_slots_ok: 16384
cluster_slots_pfail: 0
cluster_slots_fail: 0
cluster_known_nodes: 6
CLUSTER_SIZE: 3
cluster_current_epoch: 6
cluster_my_epoch: 1
cluster_stats_messages_ping_sent: 1493
cluster_stats_messages_pong_sent: 1464
cluster_stats_messages_sent: 2957
cluster_stats_messages_ping_received: 1459
cluster_stats_messages_pong_received: 1493
cluster_stats_received_messages_received:
2993 cluster_stats_received_messages_received: 2993 cluster_stats_messages_messages
 

 

referencias:

1 、https://blog.csdn.net/truelove12358/article/details/79612954

2, https://www.cnblogs.com/zhoujinyi/p/11606935.html

3 、https://blog.csdn.net/miss1181248983/article/details/90056960

 

Supongo que te gusta

Origin blog.csdn.net/xlyrh/article/details/110776381
Recomendado
Clasificación