Introducción a los tres modos de clúster del clúster de Redis

Uno, modo maestro-esclavo

A través de la función de persistencia, Redis garantiza que no se perderán datos (o una pequeña cantidad de pérdida) incluso cuando el servidor se reinicie, porque la persistencia guardará los datos en la memoria en el disco duro y el reinicio cargará los datos del disco duro. .
Pero debido a que los datos se almacenan en un servidor, si este servidor tiene problemas, como una falla en el disco duro, también causará la pérdida de datos. Para evitar un solo punto de falla, la práctica habitual es replicar múltiples copias de la base de datos para implementarlas en diferentes servidores, de modo que incluso si un servidor falla, otros servidores pueden continuar brindando servicios. Con este fin, Redis proporciona una función de replicación, que puede sincronizar automáticamente los datos actualizados con otras bases de datos cuando se actualizan los datos de una base de datos .

En el concepto de replicación, las bases de datos se dividen en dos categorías, una es la base de datos maestra (maestra) y la otra es la base de datos esclava (esclava). La base de datos maestra puede realizar operaciones de lectura y escritura, y cuando la operación de escritura causa cambios en los datos, sincronizará automáticamente los datos con la base de datos esclava. La base de datos esclava es generalmente de solo lectura y acepta datos sincronizados desde la base de datos maestra . Una base de datos maestra puede tener varias bases de datos esclavas y una base de datos esclava solo puede tener una base de datos maestra.

Configuración de la base de datos maestro-esclavo

No es necesario configurar la base de datos maestra. La información de la base de datos esclava se puede cargar desde el archivo conf de redis. También puede usar redis-server --port 6380 --slaveof 127.0.0.1 6379 al inicio. La
base de datos esclava es generalmente es de solo lectura y se puede cambiar a Escritura, pero los datos escritos se pierden fácilmente con la sincronización principal, por lo que solo es necesario leerlos.
También puede usar el comando slaveof ip port en tiempo de ejecución para detener el maestro original y cambiar al maestro esclavo de nadie que acaba de configurar, lo que se convertirá en el maestro.

Principio de copia

Al comenzar desde la base de datos, enviará el comando de sincronización a la base de datos principal. Después de recibir la sincronización, la base de datos principal comenzará a guardar la instantánea rdb en segundo plano . Los comandos recibidos durante el guardado de la instantánea se almacenan en caché. La instantánea se completa, la base de datos principal tomará la instantánea y la caché El comando se envía al esclavo **. Finaliza la inicialización de la copia.
Después de eso, cada vez que el maestro reciba un comando, se enviará al esclavo de forma sincrónica.
Cuando ocurre una desconexión y reconexión, la versión posterior a 2.8 transmitirá los comandos durante la desconexión a la nueva base de datos. Copia incremental

La replicación maestro-esclavo es una replicación optimista. Cuando el cliente envía una ejecución de escritura al maestro, el resultado se devuelve al cliente inmediatamente después de la ejecución del maestro y el comando se envía al esclavo de forma asíncrona, de modo que el rendimiento no se ve afectado. También es posible establecer al menos cuántos maestros esclavos pueden escribir simultáneamente.
Copiar sin disco duro: si la eficiencia del disco duro es baja, el rendimiento de la copia se verá afectado. Después de 2.8, puede configurar la copia sin disco duro, repl-diskless-sync sí

Segundo, el centinela

Cuando la base de datos maestra encuentra una interrupción anormal del servicio, el desarrollador puede seleccionar manualmente una base de datos esclava para actualizarla a la base de datos maestra para que el sistema pueda continuar brindando servicios. Sin embargo, todo el proceso es relativamente engorroso y requiere intervención manual, lo que dificulta la automatización . Por esta razón, se proporciona una herramienta centinela en Redis 2.8 para realizar funciones automatizadas de monitoreo del sistema y recuperación de fallas.
El rol del centinela es monitorear si las bases de datos maestra y esclava de redis están funcionando normalmente, y la maestra convertirá automáticamente la base de datos esclava en la base de datos maestra cuando la maestra falle .
Ejemplo:
1 maestro, 2 esclavos, 1 centinela

 

redis-server --port 6379 
redis-server --port 6380 --slaveof 192.168.0.167 6379 
redis-server --port 6381 --slaveof 192.168.0.167 6379
哨兵配置文件 sentinel.conf 
 sentinel monitor mymaster 192.168.0.167 6379  1
这里的1代表1个哨兵

Nota: Al
configurar Sentinel para monitorear un sistema, solo necesita configurar su base de datos maestra de monitoreo , y Sentinel detectará automáticamente todas las bases de datos esclavas que replican la base de datos maestra.

De esta manera, el centinela puede monitorear al maestro 6379 y los esclavos 6380 y 6381. Una vez que el 6379 cuelga, el centinela elegirá uno de los dos como maestro, en función de la prioridad. id menor . Cuando el 6379 se levante de nuevo, actuará como el maestro .

Tres, clúster (habilitado para clúster)

Para usar un clúster, solo necesita activar la configuración habilitada para clústeres de cada nodo de la base de datos. Se requieren al menos tres bases de datos primarias en cada clúster para funcionar correctamente.

Incluso si se utilizan centinelas, cada instancia de redis se almacena en su totalidad, y el contenido almacenado en cada redis son datos completos, lo que desperdicia memoria y tiene un efecto de barril. Para maximizar el uso de la memoria, se pueden utilizar clústeres, que es almacenamiento distribuido. Es decir, cada redis almacena contenido diferente.
El clúster requiere al menos 3 maestros y 3 esclavos, y cada instancia usa un archivo de configuración diferente. No es necesario configurar el maestro y el esclavo, y el clúster elegirá por sí mismo.
Modifique el archivo de configuración de cada instancia:

 

 cluster-enabled yes  --开启集群
 cluster-config-file nodes-6382.conf --集群配置文件名,
每个实例配置的要不同,redis会根据文件名自动新建

Operación de clúster

 

redis安装目录的src执行./redis-trib.rb create --replicas 1 
127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 
127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385

La elección maestra aquí es similar a la del cuidador del zoológico.


 

Supongo que te gusta

Origin blog.csdn.net/qq_27828675/article/details/109489204
Recomendado
Clasificación