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
Copiar archivo de configuración
Modificar archivo de configuración
Copiar archivo de configuración
Modificar archivo de configuración
2. Construya una arquitectura de clúster centinela
Construir un ganglio centinela
Probar la selección del líder Sentinel
3. Cree una arquitectura de clúster de alta disponibilidad
4. Expansión horizontal del clúster
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 ~