DÍA 68 redis replicación maestro-esclavo de alta disponibilidad, centinela, clúster clúster

Alta disponibilidad de Redis

¿Qué es la alta disponibilidad?

En los servidores web, la alta disponibilidad se refiere al tiempo en el que se puede acceder normalmente al servidor, y la medida es cuánto tiempo se pueden prestar los servicios normales (99,9%, 99,99%, 99,999%, etc.).

Sin embargo, en el contexto de Redis, el significado de alta disponibilidad parece ser más amplio: además de garantizar la prestación de servicios normales (como separación maestro-esclavo, tecnología de recuperación rápida ante desastres), también es necesario considerar la expansión de capacidad de datos y seguridad de datos sin pérdida, etc.

Tecnología de alta disponibilidad de Redis

En Redis, las tecnologías para lograr alta disponibilidad incluyen principalmente persistencia, replicación maestro-esclavo, centinela y clústeres de clúster, a continuación se describen sus funciones y qué problemas resuelven.

  • Persistencia: La persistencia es el método de alta disponibilidad más simple (a veces ni siquiera se clasifica como un método de alta disponibilidad). Su función principal es la copia de seguridad de datos, es decir, almacenar datos en el disco duro para garantizar que los datos no se perderán debido al proceso. salida.

  • Replicación maestro-esclavo: la replicación maestro-esclavo es la base de Redis de alta disponibilidad. Los centinelas y los clústeres se basan en la replicación maestro-esclavo para lograr una alta disponibilidad. La replicación maestro-esclavo realiza principalmente copias de seguridad (y sincronización) de datos en varias máquinas, así como equilibrio de carga y recuperación simple de fallas para operaciones de lectura.

    • Defectos: la recuperación de fallas no se puede automatizar; las operaciones de escritura no se pueden equilibrar en la carga; la capacidad de almacenamiento está limitada por una sola máquina.
  • Sentinel: basado en la replicación maestro-esclavo, Sentinel implementa la recuperación automática de fallas. (El maestro está inactivo, encuentre un esclavo para convertirse en el nuevo maestro y el nodo centinela lo monitoreará)

    • Defectos: las operaciones de escritura no se pueden equilibrar en la carga; la capacidad de almacenamiento está limitada por una sola máquina.
  • Clúster de clústeres: a través de la agrupación en clústeres, Redis resuelve el problema de que las operaciones de escritura no pueden equilibrarse con la carga y la capacidad de almacenamiento está limitada por una sola máquina, y realiza una solución de alta disponibilidad relativamente completa. (6 juegos de inicio, en parejas, 3 maestros y 3 esclavos)

Replicación maestro-esclavo de Redis

La replicación maestro-esclavo se refiere a copiar los datos de un servidor Redis a otros servidores Redis. El primero se denomina nodo maestro (Master), y el segundo se denomina nodo esclavo (slave); la replicación de datos es unidireccional, solo del nodo maestro al nodo esclavo.

De forma predeterminada, cada servidor Redis es un nodo maestro y un nodo maestro puede tener varios nodos esclavos (o ningún nodo esclavo), pero un nodo esclavo solo puede tener un nodo maestro.

El papel de la replicación maestro-esclavo

  • Redundancia de datos: la replicación maestro-esclavo implementa la copia de seguridad activa de los datos, que es un método de redundancia de datos distinto de la persistencia.
  • Recuperación de fallas: cuando hay un problema con el nodo maestro, el nodo esclavo puede proporcionar servicios para lograr una rápida recuperación de fallas; en realidad, es un tipo de redundancia de servicio.
  • Equilibrio de carga: sobre la base de la replicación maestro-esclavo, combinada con la separación de lectura y escritura, el nodo maestro puede proporcionar servicios de escritura y los nodos esclavos pueden proporcionar servicios de lectura (es decir, la aplicación se conecta al nodo maestro al escribir datos de Redis , y la aplicación se conecta al nodo esclavo cuando lee datos de Redis), para compartir la carga del servidor; especialmente en el escenario de escribir menos y leer más, compartir la carga de lectura a través de múltiples nodos esclavos puede aumentar considerablemente la concurrencia del servidor Redis.
  • La piedra angular de la alta disponibilidad: además de las funciones anteriores, la replicación maestro-esclavo también es la base para la implementación de centinelas y clústeres, por lo que la replicación maestro-esclavo es la base para la alta disponibilidad de Redis.

 Proceso de replicación maestro-esclavo

(1) Si se inicia un proceso de máquina esclava, enviará un comando de comando de sincronización a la máquina maestra para solicitar una conexión sincrónica.

(2) Ya sea la primera conexión o la reconexión, la máquina Maestra iniciará un proceso en segundo plano para guardar la instantánea de datos en el archivo de datos (ejecutar la operación rdb), y la Maestra también registrará todos los comandos para modificar los datos y la memoria caché. en el medio del archivo de datos.

(3) Después de que el proceso en segundo plano complete la operación de caché, la máquina maestra enviará el archivo de datos a la máquina esclava, la máquina esclava guardará el archivo de datos en el disco duro y luego lo cargará en la memoria, y luego la máquina maestra máquina modificará todos los archivos de datos La operación también se envía a la máquina esclava. Si el esclavo falla y provoca un tiempo de inactividad, se volverá a conectar automáticamente después de volver a la normalidad.

(4) Después de que la máquina maestra recibe la conexión de la máquina esclava, envía su archivo de datos completo a la máquina esclava. Si la máquina maestra recibe solicitudes de sincronización de varios esclavos al mismo tiempo, la maestra iniciará un proceso en segundo plano para guarde el archivo de datos y luego envíelo a todas las máquinas esclavas para asegurarse de que todas las máquinas esclavas sean normales

Cree la replicación maestro-esclavo de Redis

entorno de laboratorio:

Maestro-esclavo máquina virtual dirección IP
maestro centos7-1 192.168.137.10
esclavo1 centos7-2 192.168.137.20

Procedimiento experimental

Instalar Redis en todos los nodos

#关闭防火墙
systemctl stop firewalld
setenforce 0
#安装环境依赖包,下载编译工具
yum install -y gcc gcc-c++ make
​
#上传软件包并解压
cd /opt/
tar zxvf redis-5.0.7.tar.gz -C /opt/
cd /opt/redis-5.0.7/
#开2核编译安装,指定安装路径为/usr/local/redis
make -j2 && make PREFIX=/usr/local/redis install
#由于Redis源码包中直接提供了Makefile 文件,所以在解压完软件包后,不用先执行./configure 进行配置,可直接执行make与make install命令进行安装。
​
#执行软件包提供的install_server.sh 脚本文件,设置Redis服务所需要的相关配置文件
cd /opt/redis-5.0.7/utils
./install_server.sh
.......#一直回车
Please select the redis executable path [] /usr/local/redis/bin/redis-server
#这里默认为/usr/local/bin/redis-server,需要手动修改为/usr/local/redis/bin/redis-server,注意要一次性正确输入
​
 ---------------------- 虚线内是注释 ----------------------------------------------------
 Selected config:
 Port: 6379                                      #默认侦听端口为6379
 Config file: /etc/redis/6379.conf               #配置文件路径
 Log file: /var/log/redis_6379.log               #日志文件路径
 Data dir : /var/lib/redis/6379                  #数据文件路径
 Executable: /usr/local/redis/bin/redis-server   #可执行文件路径
 Cli Executable : /usr/local/bin/redis-cli       #客户端命令工具
 -----------------------------------------------------------------------------------
​
#当install_server.sh 脚本运行完毕,Redis 服务就已经启动,默认监听端口为6379
netstat -natp | grep redis
​
#把redis的可执行程序文件放入路径环境变量的目录中,便于系统识别
ln -s /usr/local/redis/bin/* /usr/local/bin/
​
#Redis服务控制
/etc/init.d/redis_6379 stop     #停止
/etc/init.d/redis_6379 start    #启动
/etc/init.d/redis_6379 restart  #重启
/etc/init.d/redis_6379 status   #查看状态

 Modificar el archivo de configuración del nodo maestro

vim /etc/redis/6379.conf 
 bind 0.0.0.0                      #70行,修改监听地址为0.0.0.0(生产环境中需要填写物理网卡的IP)
 daemonize yes                     #137行,开启守护进程,后台启动 
 logfile /var/log/redis_6379.log   #172行,指定日志文件存放目录
 dir /var/lib/redis/6379           #264行,指定工作目录
 appendonly yes                    #700行,开启AOF持久化功能
​
/etc/init.d/redis_6379 restart     #重启redis服务

 Modificar el archivo de configuración del nodo esclavo

#修改slave1的配置文件
vim /etc/redis/6379.conf 
 bind 0.0.0.0                        #70行,修改监听地址为0.0.0.0(生产环境中需要填写物理网卡的IP)
 daemonize yes                       #137行,开启守护进程,后台启动
 logfile /var/log/redis_6379.log     #172行,指定日志文件目录
 dir /var/lib/redis/6379             #264行,指定工作目录
 replicaof 192.168.137.10 6379       #288行,指定要同步的Master节点的IP和端口
 appendonly yes                      #700行,修改为yes,开启AOF持久化功能

​
/etc/init.d/redis_6379 restart  #重启redis
netstat -natp | grep redis      #查看主从服务器是否已建立连接

  Verificar el efecto maestro-esclavo

El nodo maestro verifica el registro e inserta un dato

[root@192 utils]# tail /var/log/redis_6379.log 
8339:M 28 May 2023 16:50:13.198 * Reading RDB base file on AOF loading...
8339:M 28 May 2023 16:50:13.198 * Loading RDB produced by version 7.0.9
8339:M 28 May 2023 16:50:13.198 * RDB age 32 seconds
8339:M 28 May 2023 16:50:13.198 * RDB memory usage when created 0.82 Mb
8339:M 28 May 2023 16:50:13.198 * RDB is base AOF
8339:M 28 May 2023 16:50:13.198 * Done loading RDB, keys loaded: 0, keys expired: 0.
8339:M 28 May 2023 16:50:13.198 * DB loaded from base file appendonly.aof.1.base.rdb: 0.000 seconds
8339:M 28 May 2023 16:50:13.198 * DB loaded from append only file: 0.000 seconds
8339:M 28 May 2023 16:50:13.198 * Opening AOF incr file appendonly.aof.1.incr.aof on server start
8339:M 28 May 2023 16:50:13.198 * Ready to accept connections
[root@192 utils]# redis-cli
127.0.0.1:6379> set name cxk
OK
127.0.0.1:6379> kes *
(error) ERR unknown command 'kes', with args beginning with: '*' 
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> get name
"cxk"

 vista desde el nodo

 Redis modo centinela

El método de la tecnología de conmutación maestro-esclavo es: cuando el servidor está inactivo, es necesario cambiar manualmente una máquina esclava a la máquina maestra, lo que requiere una intervención manual, que no solo requiere mucho tiempo y es laboriosa, sino que también hace que el servicio no estar disponible por un período de tiempo. Para resolver las deficiencias de la replicación maestro-esclavo, existe un mecanismo centinela.

Función principal de Sentinel: basado en la replicación maestro-esclavo, Sentinel introduce la conmutación por error automática del nodo maestro

El papel del modo centinela

  • Monitoreo: Sentry verifica constantemente que los nodos maestro y esclavo funcionen correctamente.

  • Conmutación por error automática: cuando el nodo maestro no funciona con normalidad, Sentinel iniciará una operación de conmutación por error automática. Actualizará uno de los nodos esclavos del nodo maestro fallido a un nuevo nodo maestro y permitirá que otros nodos esclavos copien el nuevo nodo maestro en su lugar. .

  • Notificaciones (recordatorios): Sentinels puede enviar resultados de conmutación por error a los clientes

 estructura centinela

Nodo centinela:   el sistema centinela consta de uno o más nodos centinela, que son nodos redis especiales que no almacenan datos .

Nodos de datos:   tanto los nodos maestros como los esclavos son nodos de datos

Mecanismo de conmutación por error 1. Monitoreo regular por parte del nodo centinela para averiguar si el nodo maestro ha fallado

Cada nodo centinela le pedirá al nodo maestro, al nodo esclavo y a otros nodos centinela que envíen un comando ping cada segundo para una verificación del corazón. Si el nodo maestro no responde dentro de un cierto período de tiempo o responde con un mensaje de error, el centinela considerará que el nodo maestro está fuera de línea subjetivamente (unilateralmente). Cuando más de la mitad de los nodos centinela piensan que el nodo maestro está desconectado subjetivamente, objetivamente está desconectado.

2. Cuando el nodo maestro falle, el nodo centinela implementará el mecanismo de elección a través del algoritmo Raft (algoritmo de elección) para elegir conjuntamente un nodo centinela como líder que se encargará de manejar la conmutación por error y la notificación del nodo maestro. Por lo tanto, la cantidad de clústeres que ejecutan Sentinels no debe ser inferior a 3 nodos.

3. El nodo centinela líder realiza la conmutación por error, el proceso es el siguiente:

  • Actualice un nodo esclavo a un nuevo nodo maestro y deje que otros nodos esclavos apunten al nuevo nodo maestro;
  • Si el nodo maestro original se recupera, se convierte en un nodo esclavo y apunta al nuevo nodo maestro;
  • Notifique al cliente que se reemplazó el nodo principal.

Es importante tener en cuenta que el objetivo fuera de línea es un concepto exclusivo del nodo maestro; si el nodo esclavo y el nodo centinela fallan, después de que el centinela los desconecte subjetivamente, no habrá operaciones objetivas fuera de línea y de conmutación por error posteriores.

Elección de Masternode

1. Filtre los nodos esclavos en mal estado (fuera de línea) que no hayan respondido a la respuesta del ping centinela.

2. Seleccione el nodo esclavo con la configuración de mayor prioridad en el archivo de configuración. (prioridad de réplica, el valor predeterminado es 100)

3. Seleccione el nodo esclavo con el desplazamiento de replicación más grande, es decir, la replicación más completa.

El inicio de centinela depende del modo maestro-esclavo, por lo que el modo maestro-esclavo debe instalarse antes de hacer el modo centinela

Construir el modo centinela de Redis

entorno de laboratorio:

nodo máquina virtual dirección IP
maestro centos7-1 192.168.137.10
esclavo1 centos7-2 192.168.137.15
esclavo2 centos7-3 192.168.137.20
Centinela-1 centos7-4 192.168.137.30
centinela-2 centos7-5 192.168.137.40
Centinela-3 centos7-6 192.168.137.50

En el entorno de producción, los servidores con el número correspondiente de nodos se utilizan como nodos centinela. En el entorno experimental, si el rendimiento de la computadora no es suficiente, el centinela se puede construir en la máquina virtual original.

Procedimiento experimental

Instalar Redis en todos los nodos

El maestro y el esclavo implementan la replicación maestro-esclavo de Redis

Modifique el archivo de configuración de Sentinel-1 y luego scp a los otros dos nodos centinela

vim /opt/redis-5.0.7/sentinel.conf
......
protected-mode no                #17行,取消注释,关闭保护模式
port 26379                       #21行,Redis哨兵默认的监听端口
daemonize yes                    #26行,指定sentinel为后台启动
logfile "/var/log/sentinel.log"  #36行,指定日志文件存放路径
dir "/var/lib/redis/6379"        #65行,指定数据库存放路径
sentinel monitor mymaster 192.168.137.10 6379 2  #84行,修改
#指定该哨兵节点监控192.168.121.10:6379这个主节点,该主节点的名称是mymaster。
#最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
​
sentinel down-after-milliseconds mymaster 3000  #113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel failover-timeout mymaster 180000  #146行,同一个sentinel对同一个master两次failover之间的间隔时间(180秒)
​
#传给两外2个哨兵节点
scp /opt/redis-5.0.7/sentinel.conf  192.168.137.40:/opt/redis-5.0.7/
scp /opt/redis-5.0.7/sentinel.conf  192.168.137.50:/opt/redis-5.0.7/

Iniciar el modo centinela (todas las operaciones del nodo centinela)

#启动三台哨兵
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &

Ver información centinela

#在哨兵节点查看
[root@localhost ~]# redis-cli -p 26379 info Sentinel
# Sentinel
sentinel_masters:1     #一台主节点
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.137.10:6379,slaves=2,sentinels=3
#可以看到主节点地址,2台从节点,3台哨兵

simular falla


#在Master 上查看redis-server进程号:
[root@localhost ~]# ps -ef | grep redis
root      71245      1  0 6月19 ?       00:00:05 /usr/local/redis/bin/redis-server 0.0.0.0:6379
root      71983  66681  0 00:59 pts/1    00:00:00 grep --color=auto redis
​
#杀死 Master 节点上redis-server的进程号
[root@localhost ~]# kill -9 71245        #Master节点上redis-server的进程号
[root@localhost ~]# netstat -natp | grep redis
​
#在哨兵上查看日志,验证master是否切换至从服务器
[root@localhost redis-5.0.7]# tail -f /var/log/sentinel.log
7084:X 20 Jun 2022 00:46:58.869 * +sentinel sentinel ce975c271f86d8f6e0b80162529752b754ecfc69 192.168.137.40 26379 @ mymaster 192.168.137.10 6379
7084:X 20 Jun 2022 00:47:56.595 * +sentinel sentinel d59ba9daf957b704715feeee3c53bd1bf8b3a5d8 192.168.137.50 26379 @ mymaster 192.168.137.10 6379
7084:X 20 Jun 2022 01:01:33.484 # +sdown master mymaster 192.168.137.10 6379
7084:X 20 Jun 2022 01:01:33.561 # +new-epoch 1
7084:X 20 Jun 2022 01:01:33.561 # +vote-for-leader ce975c271f86d8f6e0b80162529752b754ecfc69 1
7084:X 20 Jun 2022 01:01:34.476 # +config-update-from sentinel ce975c271f86d8f6e0b80162529752b754ecfc69 192.168.137.40 26379 @ mymaster 192.168.137.10 6379
7084:X 20 Jun 2022 01:01:34.476 # +switch-master mymaster 192.168.137.10 6379 192.168.121.30 6379
7084:X 20 Jun 2022 01:01:34.477 * +slave slave 192.168.137.15:6379 192.168.137.15 6379 @ mymaster 192.168.121.30 6379
7084:X 20 Jun 2022 01:01:34.477 * +slave slave 192.168.137.10:6379 192.168.137.10 6379 @ mymaster 192.168.121.30 6379
7084:X 20 Jun 2022 01:02:04.493 # +sdown slave 192.168.137.10:6379 192.168.137.10 6379 @ mymaster 192.168.137.20 6379
​
​
#在哨兵上查看主节点是否切换成功
[root@localhost ~]# redis-cli -p 26379 info Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.137.20:6379,slaves=2,sentinels=3

Modo de clúster de Redis

Cluster, a saber, Redis Cluster, es una solución de almacenamiento distribuido introducida por Redis3.0.

El clúster consta de varios nodos (nodos) y los datos de Redis se distribuyen entre estos nodos. Los nodos del clúster se dividen en nodos maestros y nodos esclavos: solo el nodo maestro es responsable del mantenimiento de las solicitudes de lectura y escritura y de la información del clúster; los nodos esclavos solo replican los datos y la información de estado del nodo maestro.

 El papel del clúster

(1) Particionamiento de datos: el particionamiento de datos (o fragmentación de datos) es la función central del clúster.

  • El clúster distribuye datos a múltiples nodos. Por un lado, supera la limitación del tamaño de la memoria de una sola máquina de Redis y la capacidad de almacenamiento aumenta considerablemente; por otro lado, cada nodo maestro puede proporcionar servicios externos de lectura y escritura, lo que mejora en gran medida la capacidad de respuesta del clúster.
  • El tamaño de la memoria independiente de Redis es limitado, lo cual se mencionó en la introducción de la persistencia y la replicación maestro-esclavo; como resultado, el nodo esclavo no puede proporcionar servicios durante mucho tiempo y el búfer de replicación del nodo maestro puede desbordarse durante el fase de replicación completa.

(2) Alta disponibilidad: el clúster admite la replicación maestro-esclavo y la conmutación por error automática del nodo principal (similar a Sentinel); cuando falla algún nodo, el clúster aún puede proporcionar servicios externos.

A través de la agrupación en clústeres, Redis resuelve el problema de que las operaciones de escritura no pueden equilibrarse con la carga y la capacidad de almacenamiento está limitada por una sola máquina, y ofrece una solución de alta disponibilidad relativamente completa.

Fragmentación de datos del clúster de Redis

Redis Cluster presenta el concepto de ranuras hash.

Redis Cluster tiene 16384 ranuras hash (numeradas 0-16383).

Cada nodo del clúster es responsable de una parte de las ranuras hash.

Después de que cada clave pase la verificación CRC16, tome el resto de 16384 para determinar qué ranura hash colocar. A través de este valor, encuentre el nodo correspondiente a la ranura correspondiente y luego salte directa y automáticamente al nodo correspondiente para las operaciones de acceso.

Modelo de replicación maestro-esclavo en modo clúster

  • Hay tres nodos en el clúster A, B y C. Si el nodo B falla, todo el clúster no estará disponible debido a la falta de ranuras en el rango de 5461-10922.
  • Agregue un nodo esclavo A1, B1 y C1 a cada nodo, y el clúster completo constará de tres nodos maestros y tres nodos esclavos. Después de que falla el nodo B, el clúster elige a B1 como el nodo maestro para continuar sirviendo. Cuando fallan tanto B como B1, el clúster no estará disponible

Crear un clúster de Redis

Pasos experimentales:

Instalar Redis en todos los nodos

Habilitar la función de clúster

cd /opt/redis-5.0.7/
vim redis.conf
......
bind 192.168.137.10                       #69行,修改为监听自己的物理网卡IP
protected-mode no                         #88行,修改为no,关闭保护模式
port 6379                                 #92行,redis默认监听端口
daemonize yes                             #136行,开启守护进程,以独立进程启动
appendonly yes                            #700行,修改为yes,开启AOF持久化
cluster-enabled yes                       #832行,取消注释,开启群集功能
cluster-config-file nodes-6379.conf       #840行,取消注释,群集名称文件设置
cluster-node-timeout 15000                #846行,取消注释,群集超时时间设置
​
​
#将文件传给另外5个节点,之后每个节点要修改监听地址为自己的IP
[root@localhost redis-5.0.7]# scp redis.conf 192.168.137.15:`pwd`
[root@localhost redis-5.0.7]# scp redis.conf 192.168.137.20:`pwd`
[root@localhost redis-5.0.7]# scp redis.conf 192.168.137.30:`pwd`
[root@localhost redis-5.0.7]# scp redis.conf 192.168.137.40:`pwd`
[root@localhost redis-5.0.7]# scp redis.conf 192.168.137.50:`pwd`

Todos los nodos inician el servicio redis.

cd /opt/redis-5.0.7/
redis-server redis.conf   #启动redis节点


 Inicie el clúster

Simplemente inicie el clúster en cualquier nodo.

redis-cli --cluster create 192.168.137.10:6379 192.168.137.15:6379 192.168.137.20:6379 192.168.137.30:6379 192.168.137.40:6379 192.168.137.50:6379 --cluster-replicas 1
#六个主机分为三组,三主三从,前面的做主节点后面的做从节点下免交互的时候需要输入yes才可以创建 "-replicas 1"表示每个主节点有一个从节点
#前三台为Master,后三台为Slave


grupo de prueba

#加-c参数,节点之间就可以互相跳转  
redis-cli -h 192.168.137.10 -p 6379 -c 
#查看节点的哈希槽编号范围
cluster slots    
#赋值
set name yuji
#查看键的哈希槽编号  
cluster keyslot 键名
​
​
[root@mas ~]# redis-cli -h 192.168.137.10 -p 6379 -c
192.168.121.10:6379> cluster slots      #查看节点的哈希槽编号范围
1) 1) (integer) 10923         #第一对主从的哈希槽编号范围
   2) (integer) 16383
   3) 1) "192.168.137.15"     #主节点
      2) (integer) 6379
      3) "5f117a3e204d1d6f6dc924ad8b39034a8e9f3261"
   4) 1) "192.168.137.30"     #从节点
      2) (integer) 6379
      3) "4a05a086eec06fa4da58b15512d1c81184bc5ee5"
2) 1) (integer) 5461          #第二对主从的哈希槽编号范围
   2) (integer) 10922
   3) 1) "192.168.121.20"     #主节点
      2) (integer) 6379
      3) "3008bba29dfbf342bc448ba3062b0a331c8d009e"
   4) 1) "192.168.137.50"     #从节点
      2) (integer) 6379
      3) "ee61a4709d6420bb540b2c28218fdd2dfe358b7a"
3) 1) (integer) 0             #第三对主从的哈希槽编号范围
   2) (integer) 5460
   3) 1) "192.168.137.10"     #主节点
      2) (integer) 6379
      3) "d1ddb554b3edaebefa6672b2f1f8171393e1f7f3"
   4) 1) "192.168.137.40"     #从节点 
      2) (integer) 6379
      3) "71e1f705ce01ca31ab16fa3cf07d7e6cbfab5978"
192.168.121.10:6379>
​
​
#在10节点新建name键,会自动跳转到20节点进行存放     
192.168.121.10:6379> set name yuji  
-> Redirected to slot [5798] located at 192.168.137.15:6379
OK
192.168.121.20:6379> cluster keyslot name    #查看name键的哈希槽编号
(integer) 5798
192.168.121.20:6379> quit       #退出数据库
[root@mas ~]# redis-cli -h 192.168.137.10 -p 6379 -c     #重新登录10节点
192.168.121.10:6379> keys *     #10节点中没有name键
(empty list or set)
192.168.121.10:6379> get name    #查看name键的值,会根据键的哈希槽编号自动跳转到20节点进行获取
-> Redirected to slot [5798] located at 192.168.137.15:6379
"yuji"
192.168.121.20:6379>            #已跳转到20节点
​


Supongo que te gusta

Origin blog.csdn.net/weixin_57560240/article/details/130914258
Recomendado
Clasificación