Construcción de arquitectura de clúster de Redis: maestro-esclavo, centinela, clúster

El artículo anterior sobre la instalación de Redis a través del código fuente en Ubuntu presentó cómo instalar Redis. En este artículo, le enseñaremos cómo construir varias arquitecturas de alta disponibilidad de Redis: arquitectura maestro-esclavo, clúster centinela y clúster de clúster.

La versión de Redis utilizada en este artículo es 6.2.13. Las configuraciones de diferentes versiones pueden ser ligeramente diferentes, como replicaof/slaveof.

Debido al equipo limitado, solo se pueden iniciar múltiples servicios de Redis en una máquina virtual Ubuntu a través de diferentes puertos.

Aviso:

1. La ruta detrás del archivo de registro y el directorio configurados en el archivo de configuración se debe crear de antemano.

2. No copie el comando para iniciar Redis directamente, de lo contrario puede aparecer el mensaje "no existe tal archivo o directorio". El comando que usted mismo escribe se puede ejecutar normalmente (una lección dolorosa) .

Tabla de contenido

1. Construya una arquitectura maestro-esclavo

Construir nodo maestro

Copiar archivo de configuración

Modificar archivo de configuración

Iniciar el nodo maestro

Construir nodo esclavo

Copiar archivo de configuración

Modificar archivo de configuración 

Iniciar nodo esclavo

2. Construya una arquitectura de clúster centinela

Agregar un nodo esclavo

Construir un ganglio centinela

Copiar sentinel.conf

Modificar configuración

Iniciar ganglio centinela

Ver información del clúster

Probar la selección del líder Sentinel

3. Cree una arquitectura de clúster de alta disponibilidad

Crear todos los nodos

Crear un clúster

4. Expansión horizontal del clúster

Agregar nodo de clúster

Establecer como nodo esclavo

Eliminar nodo del clúster

Reestructuración de nodos


1. Construya una arquitectura maestro-esclavo

La configuración mínima del modo de clúster de Redis en la arquitectura maestro-esclavo es un maestro y un esclavo, por lo que es necesario iniciar dos servicios de Redis.

Construir nodo maestro

Copiar archivo de configuración

Cambie al directorio de instalación de Redis y copie un archivo de configuración

cp redis.conf redis_6379.conf

Como se muestra abajo:

Modificar archivo de configuración

Modifique redis_6379.conf, busque y modifique la siguiente configuración mediante Ctrl+F.

# bind 127.0.0.1 -::1

protected-mode no

# 设置启动端口号
port 6379

# 设置后台启动
daemonize yes

# 进程ID保存的文件
pidfile /var/run/redis_6379.pid

# 设置日志文件名
logfile "redis_6379.log"

Iniciar el nodo maestro

Después de modificar redis_6379.config según el paso anterior, inicie redis mediante el siguiente comando

./src/redis-server redis_6379.conf

Como se muestra en la figura, verifique el archivo de registro y vea que Redis se inició correctamente.

Construir nodo esclavo

Copiar archivo de configuración

Cambie al directorio de instalación de Redis, copie un archivo de configuración y copie directamente el archivo 6379 anterior. Soy demasiado vago para modificar algunas configuraciones repetidamente.

cp redis_6379.conf redis_6389.conf

Modificar archivo de configuración 

Modifique redis_6389.conf, busque y modifique la siguiente configuración mediante Ctrl+F.

# 设置启动端口号
port 6389

# 从节点只能处理读操作,当前版本redis默认开启的配置
replica-read-only yes

# 配置redis主节点ip地址和端口号
replicaof 192.168.254.128 6379

# 进程ID保存的文件
pidfile /var/run/redis_6389.pid

# 保存数据的文件地址
dir /usr/local/redis/6389/data

# 日志文件的文件名
logfile "/usr/local/redis/6389/logs/redis_6389.log"

Nota: Para evitar el problema de que no se encuentre el archivo, primero debe crear el directorio correspondiente en /usr/local.

/redis/6389/datos

/redis/6389/logs

Iniciar nodo esclavo

Inicie el nodo esclavo con el siguiente comando

./src/redis‐server redis_6389.conf

Como se muestra en la figura siguiente, el nodo esclavo se inició correctamente y sincronizó los datos del nodo maestro 6379.

Luego configure algunas claves en el nodo maestro y vea si se sincronizará con el nodo esclavo:

Conéctese al nodo maestro mediante el comando redis-cli (la conexión predeterminada es el nodo redis con el número de puerto 6379) y puede especificar el número de puerto mediante -p. La primera vez que use redis-cli, es posible que se le solicite que instale redis-tools. Simplemente copie el comando y presione Entrar.

Establecer un nombre

Obtener nombre del nodo

Hasta ahora, la construcción de la arquitectura maestro-esclavo de Redis se ha completado con éxito.

2. Construya una arquitectura de clúster centinela

La arquitectura del clúster centinela en realidad se basa en la arquitectura maestro-esclavo e introduce nodos centinela. El centinela no procesa las solicitudes de lectura y escritura del cliente. Solo es responsable de monitorear el nodo maestro y los nodos esclavos. Cuando se encuentra que el nodo maestro está caído, se elegirá un nuevo nodo maestro. El proceso de elección del nodo maestro se logra mediante la votación de múltiples centinelas. La elección solo se puede establecer si más de la mitad de los centinelas están de acuerdo. Por lo tanto, se debe establecer el número de centinelas. a un número impar para evitar la reelección por empate en la votación. Por lo tanto, la arquitectura del clúster centinela debe tener al menos 3 nodos centinela.

Agregar un nodo esclavo

Basado en la arquitectura maestro-esclavo de la primera sección, construya otro nodo redis 6399.

Copie un archivo de configuración del nodo 6389

cp redis_6389.conf redis_6399.conf

Luego simplemente modifique las siguientes configuraciones (Ctrl+F busca y reemplaza 6389 con 6399, si puedes ser vago, sé vago ~)

port 6399

pidfile /var/run/redis_6399.pid

logfile "/usr/local/redis/6399/logs/redis_6399.log"

dir /usr/local/redis/6399/data

Luego ingrese el comando para comenzar

./src/redis‐server redis_6399.conf

Asimismo, sincronizará datos del nodo maestro 6379.

Construir un ganglio centinela

Copiar sentinel.conf

cp sentinel.conf sentinel_6380.conf 

Modificar configuración

port 6380

daemonize yes

logfile "/usr/local/redis/6380/logs/redis_6380.log"

dir /usr/local/redis/6380/data

pidfile /var/run/redis_6380.pid

# 配置主节点ip和端口号,最后一个2表示当哨兵节点中两个通过选举结果时,才设置候选节点为master
# 一般设置成哨兵节点数/2 + 1
sentinel monitor mymaster 192.168.254.128 6379 2

Luego siga un método similar para crear dos ganglios centinela 6390 y 6400.

Copie una copia del archivo de configuración sentinel_6380.conf

cp sentinel_6380.conf sentinel_6390.conf

Reemplace 6380 con 6390 y luego cree 6400 de la misma manera

Iniciar ganglio centinela

src/redis-sentinel sentinel_6380.conf

src/redis-sentinel sentinel_6390.conf

src/redis-sentinel sentinel_6400.conf

Una vez completado el inicio, haga clic en cualquier archivo de configuración y descubra que hay un párrafo adicional al final del archivo.

Ver información del clúster

Conéctese al nodo centinela en el puerto 6400 y vea la información de todo el clúster a través del comando redis info.

redis-cli -p 6400

info

Probar la selección del líder Sentinel

Utilice el comando kill para eliminar el nodo maestro de Redis y ver si se puede completar la nueva elección maestra.

Como se muestra en la imagen de arriba, el nodo maestro ha estado fuera de línea. Conecte cualquiera de los otros dos nodos esclavos, por ejemplo, conecte 6389.

Se encontró que 6389 estaba configurado como el nodo maestro.

Hasta ahora, se ha completado la arquitectura del clúster centinela de Redis.

3. Cree una arquitectura de clúster de alta disponibilidad

Aquí se crean un total de nueve nodos y, según la proporción de 1 maestro y 2 esclavos, hay exactamente 3 grupos de pequeños clústeres.

Crear todos los nodos

Paso 1: cree un directorio de clúster en el directorio de instalación de redis y copie un archivo de configuración

cp redis.conf ./cluster/redis_6500.conf

Luego modifique redis_6500.conf

#bind 127.0.0.1 -::1

protected-mode no

port 6500

daemonize yes

pidfile /var/run/redis_6500.pid

logfile "/usr/local/redis-cluster/6500/logs/redis_6500.log"

dir /usr/local/redis-cluster/6500/data

appendonly yes

# 取消以下设置的注释,并修改对应的值
cluster-enabled yes

cluster-config-file nodes-6500.conf

cluster-node-timeout 15000

Luego, simplemente copie /cluster/6500.conf, Ctrl+F busque y reemplace 6500 con 6501, 6502, 6503, 6504, 6505, 6506, 6507, 6508 para completar la creación de los nodos restantes.

cp ./cluster/redis_6500.conf ./cluster/redis_6501.conf

cp ./cluster/redis_6500.conf ./cluster/redis_6502.conf

cp ./cluster/redis_6500.conf ./cluster/redis_6503.conf

cp ./cluster/redis_6500.conf ./cluster/redis_6504.conf

cp ./cluster/redis_6500.conf ./cluster/redis_6505.conf

cp ./cluster/redis_6500.conf ./cluster/redis_6506.conf

cp ./cluster/redis_6500.conf ./cluster/redis_6507.conf

cp ./cluster/redis_6500.conf ./cluster/redis_6508.conf

como muestra la imagen

Luego intente iniciar cualquiera de los servicios y verifique los registros en busca de errores para asegurarse de que no haya problemas con los archivos de configuración.

Luego, inicie los nodos 6501-6508 en secuencia.

Utilice el comando ps para ver que todos los nodos estén iniciados.

Crear un clúster

Agregue los 9 nodos recién iniciados a un clúster mediante comandos.

--cluster-replicas especifica el número de nodos esclavos en cada clúster pequeño. Como se mencionó al principio, el clúster se construye de acuerdo con la estructura de 3 grupos, 1 maestro y 2 esclavos, por lo que el valor especificado aquí es 2

./src/redis-cli --cluster create 192.168.254.128:6500 192.168.254.128:6501 192.168.254.128:6502 192.168.254.128:6503 192.168.254.128:6504 192.168.254.128:6505 192.168.254.128:6506 192.168.254.128:6507 192.168.254.128:6508 --cluster-replicas 2

Como se muestra en la figura, los primeros tres nodos están configurados como nodos maestros. Debido a que hay varios nodos maestro y esclavo en la misma máquina, aparece una advertencia amarilla.

Ingrese sí de acuerdo con el mensaje para comenzar a crear el clúster, como se muestra en la figura, el clúster está configurado.

Nota: El comando para conectarse al cliente Redis en modo clúster es un poco diferente.

 ./src/redis-cli -c -h 192.168.254.128 -p 6505

-c indica conexión a través del modo clúster

-h especifica la dirección IP del servidor

Para garantizar la seguridad de los datos del nodo, todos los nodos del clúster no se implementarán en la máquina local y los nodos maestro y esclavo generalmente no serán servicios de Redis en el mismo servidor, porque una vez que la máquina falla, todos los datos se fragmentan. se perderá.

Debido a que el nodo esclavo solo es responsable de hacer una copia de seguridad de los datos y no procesará solicitudes, cuando se conecta al nodo esclavo 6505 para ejecutar un comando, se redireccionará automáticamente a su nodo maestro 6501 (6500-6502 son los nodos maestros, que son los primeros). 3 especificado al crear el clúster.

Finalmente, se introducen dos comandos.

cluster info # 查看集群信息

cluster nodes # 查看集群的节点

Hasta ahora, se ha configurado el clúster de alta disponibilidad de Redis.

4. Expansión horizontal del clúster

Antes de hacer esto, cree los directorios /6509/logs y /6509/data en el directorio /user/local/redis-cluster.

Haga una copia del archivo de configuración anterior

cp ./cluster/redis_6508.conf ./cluster/redis_6509.conf

Luego Ctrl+F para reemplazar

Finalmente, Ctrl + S guarda los cambios en el contenido del archivo. Si el guardado se realiza correctamente, aparecerá un mensaje de carga exitosa en la esquina superior derecha.

Luego inicie el nodo 6509

./src/redis-server ./cluster/redis_6509.conf

Agregar nodo de clúster

Cuando se agrega un nuevo nodo al clúster, el valor predeterminado es el nodo maestro. Utilice el comando add-node para agregar el nodo. El primer número de ip:puerto indica el nodo que se agregará y el segundo número de ip:puerto es cualquier nodo en el cluster. .

Agregue el 6509 recién creado al clúster

redis-cli --cluster add-node 192.168.254.128:6509 192.168.254.128:6500

Establecer como nodo esclavo

Conectar 6509

redis-cli -c -h 192.168.254.128 -p 6509

Ver información del nodo del clúster

cluster nodes

 

 Establezca el nodo maestro del nodo 6509 en 6500

cluster replicate 节点ID

El ID del nodo es la cadena larga en el cuadro rojo en la imagen de arriba.

cluster replicate cbce6fa89b45e4406db54862fed9c1e452ddba4e

Luego verifique los nodos del clúster.

Eliminar nodo del clúster

Puede eliminar un nodo en el clúster mediante el comando del-node. El primer parámetro es la IP del nodo: número de puerto y el segundo parámetro es la ID del nodo.

redis-cli --cluster del-node 192.168.254.128:6509 25c2ccdd1bed9536475e9e1a0b9d17b001654aa1

Cuando se elimina el nodo maestro, los datos deben migrarse a otros nodos esclavos para garantizar que no se pierdan, es decir, el nodo se vuelve a fragmentar en la siguiente parte.

Reestructuración de nodos

redis-cli --cluster reshared 192.168.254.128:6509

Bien, compartiré el artículo aquí. No le des me gusta ni lo agregues a favoritos después de leerlo ~

Supongo que te gusta

Origin blog.csdn.net/heyl163_/article/details/133131912
Recomendado
Clasificación