Utilice Docker para crear rápidamente un clúster de redis

Preparación ambiental

Nombre del nodo dirección IP
redis-node1 192.168.130.20
redis-node2 192.168.130.19
redis-node3 192.168.130.21
redis-node4 192.168.130.20
redis-node5 192.168.130.19
redis-node6 192.168.130.21

Instalar ventana acoplable

levemente

Instalar el clúster de redis

El clúster mínimo debe contener al menos tres nodos maestros. Aquí, se inicia un clúster de seis nodos con tres nodos maestros y tres nodos esclavos. Aquí solo hay tres máquinas para compartir.

configuración del nodo maestro

Crear directorios (nodo1, nodo2, nodo3)

mkdir -p /root/redis-cluster/6379/data
mkdir -p /root/redis-cluster/6379/config
mkdir -p /root/redis-cluster/6379/log
touch /root/redis-cluster/6379/log/redis.log  && chmod 777 /root/redis-cluster/6379/log/redis.log 

Escribir archivo de configuración

cd /root/redis-cluster/6379/config
vi redis.conf

El contenido es el siguiente

#保护模式
protected-mode no

requirepass rs1234

masterauth rs1234

#端口
port 6379

#需要修改为 reids_{port}.pid 的形式
pidfile /var/run/redis_6379.pid 

## 数据目录
dir "/data"

 #开启AOF日志 指定持久化方式
appendonly yes

 #开启集群
cluster-enabled yes

#配置redis自动生成的集群配置文件名。确保同一集群中运行的各redis实例该配置文件不要重名。
cluster-config-file nodes-6379.conf 

#超时时间
cluster-node-timeout 5000 

configuración del nodo salve

Crear directorios (nodo4, nodo5, nodo6)

mkdir -p /root/redis-cluster/6380/data
mkdir -p /root/redis-cluster/6380/config
mkdir -p /root/redis-cluster/6380/log
touch /root/redis-cluster/6380/log/redis.log && chmod 777 /root/redis-cluster/6380/log/redis.log 

Escriba el archivo de configuración para establecer la contraseña

cd /root/redis-cluster/6380/config
vi redis.conf
#保护模式
protected-mode no

requirepass rs1234

masterauth rs1234

#端口
port 6380

#需要修改为 reids_{port}.pid 的形式
pidfile /var/run/redis_6380.pid 


## 数据目录
dir "/data"

 #开启AOF日志 指定持久化方式
appendonly yes

 #开启集群
cluster-enabled yes

#配置redis自动生成的集群配置文件名。确保同一集群中运行的各redis实例该配置文件不要重名。
cluster-config-file nodes-6380.conf 

#超时时间
cluster-node-timeout 5000 

Iniciar todos los nodos

nodo1

docker rm -f redis-node1

docker run -d --net=host --privileged=true --name redis-node1 \
-v /root/redis-cluster/6379/config/redis.conf:/etc/redis.conf   \
-v /root/redis-cluster/6379/data:/data   \
redis:5.0.4 /etc/redis.conf

nodo4

docker rm -f redis-node4

docker run -d --net=host --privileged=true --name redis-node4 \
-v /root/redis-cluster/6380/config/redis.conf:/etc/redis.conf   \
-v /root/redis-cluster/6380/data:/data   \
redis:5.0.4 /etc/redis.conf

nodo2

docker rm -f redis-node2

docker run -d --net=host --privileged=true --name redis-node2 \
-v /root/redis-cluster/6379/config/redis.conf:/etc/redis.conf   \
-v /root/redis-cluster/6379/data:/data   \
redis:5.0.4 /etc/redis.conf

nodo5

docker rm -f redis-node5

docker run -d --net=host --privileged=true --name redis-node5 \
-v /root/redis-cluster/6380/config/redis.conf:/etc/redis.conf   \
-v /root/redis-cluster/6380/data:/data   \
redis:5.0.4 /etc/redis.conf

nodo3

docker rm -f redis-node3

docker run -d --net=host --privileged=true --name redis-node3 \
-v /root/redis-cluster/6379/config/redis.conf:/etc/redis.conf   \
-v /root/redis-cluster/6379/data:/data   \
redis:5.0.4 /etc/redis.conf

nodo6

docker rm -f redis-node6

docker run -d --net=host --privileged=true --name redis-node6 \
-v /root/redis-cluster/6380/config/redis.conf:/etc/redis.conf   \
-v /root/redis-cluster/6380/data:/data   \
redis:5.0.4 /etc/redis.conf

Crea un clúster

Entre ellos, cluster-réplicas 1 significa que hay varios esclavos detrás de un maestro, 1 significa 1 nodo esclavo, el nodo 1 ~ 3 son nodos maestros 4 ~ 6 son esclavos, y el orden de ip + puerto no se puede alterar

docker exec -it redis-node1 sh
redis-cli -a rs1234 --cluster create 192.168.130.20:6379 192.168.130.20:6380 192.168.130.19:6379 192.168.130.19:6380  192.168.130.21:6379 192.168.130.21:6380 --cluster-replicas 1

Si desea acceder a la red externa, no puede usar la ip de la red interna

docker exec -it redis-node1 redis-cli  -a rs1234 --cluster create 47.242.209.116:6379 47.242.209.116:6380 47.242.140.195:6379 47.242.140.195:6380  8.210.133.161:6379 8.210.133.161:6380 --cluster-replicas 1

Luego modifique la ip de la intranet en node1, node2, node3 / root / redis-cluster / xxxx / data / nodes-6379.conf, y luego reinicie node1, node2, node3

Información de salida

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.130.19:6380 to 192.168.130.20:6379
Adding replica 192.168.130.21:6380 to 192.168.130.19:6379
Adding replica 192.168.130.20:6380 to 192.168.130.21:6379
M: 50c6ee00e873c8c60d6bdb03b26d132984a1e967 192.168.130.20:6379
   slots:[0-5460] (5461 slots) master
S: 23c0582497bc3b65be14912d46b0a65d364a8c50 192.168.130.20:6380
   replicates 87b956229fb8a24afc35c1d3c382848a7fa33f35
M: af6cbd0b67ce0ceeec22746de8f533015b13798b 192.168.130.19:6379
   slots:[5461-10922] (5462 slots) master
S: 7ad25bc5ce312e38e18ec8b2bdb09f2fb7e482ef 192.168.130.19:6380
   replicates 50c6ee00e873c8c60d6bdb03b26d132984a1e967
M: 87b956229fb8a24afc35c1d3c382848a7fa33f35 192.168.130.21:6379
   slots:[10923-16383] (5461 slots) master
S: 0636fac961529a907b816b0bc0d9bfaaa22c52c0 192.168.130.21:6380
   replicates af6cbd0b67ce0ceeec22746de8f533015b13798b
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
..
>>> Performing Cluster Check (using node 192.168.130.20:6379)
M: 50c6ee00e873c8c60d6bdb03b26d132984a1e967 192.168.130.20:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 0636fac961529a907b816b0bc0d9bfaaa22c52c0 192.168.130.21:6380
   slots: (0 slots) slave
   replicates af6cbd0b67ce0ceeec22746de8f533015b13798b
S: 7ad25bc5ce312e38e18ec8b2bdb09f2fb7e482ef 192.168.130.19:6380
   slots: (0 slots) slave
   replicates 50c6ee00e873c8c60d6bdb03b26d132984a1e967
M: 87b956229fb8a24afc35c1d3c382848a7fa33f35 192.168.130.21:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: af6cbd0b67ce0ceeec22746de8f533015b13798b 192.168.130.19:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 23c0582497bc3b65be14912d46b0a65d364a8c50 192.168.130.20:6380
   slots: (0 slots) slave
   replicates 87b956229fb8a24afc35c1d3c382848a7fa33f35
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered

Verificar el clúster

Ingrese el nodo1

docker exec -it redis-node1 /bin/bash
redis-cli -c -a rs1234
127.0.0.1:6379> cluster nodes
0636fac961529a907b816b0bc0d9bfaaa22c52c0 192.168.130.21:6380@16380 slave af6cbd0b67ce0ceeec22746de8f533015b13798b 0 1608289060160 6 connected
7ad25bc5ce312e38e18ec8b2bdb09f2fb7e482ef 192.168.130.19:6380@16380 slave 50c6ee00e873c8c60d6bdb03b26d132984a1e967 0 1608289059661 4 connected
87b956229fb8a24afc35c1d3c382848a7fa33f35 192.168.130.21:6379@16379 master - 0 1608289059159 5 connected 10923-16383
af6cbd0b67ce0ceeec22746de8f533015b13798b 192.168.130.19:6379@16379 master - 0 1608289059000 3 connected 5461-10922
50c6ee00e873c8c60d6bdb03b26d132984a1e967 192.168.130.20:6379@16379 myself,master - 0 1608289059000 1 connected 0-5460
23c0582497bc3b65be14912d46b0a65d364a8c50 192.168.130.20:6380@16380 slave 87b956229fb8a24afc35c1d3c382848a7fa33f35 0 1608289060662 5 connected

Los datos se asignan automáticamente al nodo2 y la conexión también se transfiere al nodo2.

127.0.0.1:6379> set name kk
-> Redirected to slot [5798] located at 192.168.130.19:6379
OK
192.168.130.19:6379> get name
"kk"

Verificar el interruptor maestro-esclavo

docker stop redis-node1
docker exec -it redis-node4 /bin/bash
root@kont001ecs:/data# redis-cli -c -a rs1234 -p 6380
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6380> clustrer nodes
(error) ERR unknown command `clustrer`, with args beginning with: `nodes`,
127.0.0.1:6380> cluster nodes
0636fac961529a907b816b0bc0d9bfaaa22c52c0 192.168.130.21:6380@16380 slave af6cbd0b67ce0ceeec22746de8f533015b13798b 0 1608291356000 6 connected
7ad25bc5ce312e38e18ec8b2bdb09f2fb7e482ef 192.168.130.19:6380@16380 master - 0 1608291355000 7 connected 0-5460
87b956229fb8a24afc35c1d3c382848a7fa33f35 192.168.130.21:6379@16379 master - 0 1608291356848 5 connected 10923-16383
af6cbd0b67ce0ceeec22746de8f533015b13798b 192.168.130.19:6379@16379 master - 0 1608291355844 3 connected 5461-10922
50c6ee00e873c8c60d6bdb03b26d132984a1e967 192.168.130.20:6379@16379 master,fail - 1608291323928 1608291322000 1 disconnected
23c0582497bc3b65be14912d46b0a65d364a8c50 192.168.130.20:6380@16380 myself,slave 87b956229fb8a24afc35c1d3c382848a7fa33f35 0 1608291355000 2 connected

Puede ver el nodo1, fallar
, puede ver el nodo6, de esclavo a maestro

Reinicie el nodo1 y luego verifique que el estado del clúster nodo1 se haya convertido en esclavo

docker start redis-node1
docker exec -it redis-node4 /bin/bash
root@kont001ecs:/data# redis-cli -c -a rs1234 -p 6380
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6380> cluster nodes
0636fac961529a907b816b0bc0d9bfaaa22c52c0 192.168.130.21:6380@16380 slave af6cbd0b67ce0ceeec22746de8f533015b13798b 0 1608291658836 6 connected
7ad25bc5ce312e38e18ec8b2bdb09f2fb7e482ef 192.168.130.19:6380@16380 master - 0 1608291658335 7 connected 0-5460
87b956229fb8a24afc35c1d3c382848a7fa33f35 192.168.130.21:6379@16379 master - 0 1608291658536 5 connected 10923-16383
af6cbd0b67ce0ceeec22746de8f533015b13798b 192.168.130.19:6379@16379 master - 0 1608291659538 3 connected 5461-10922
50c6ee00e873c8c60d6bdb03b26d132984a1e967 192.168.130.20:6379@16379 slave 7ad25bc5ce312e38e18ec8b2bdb09f2fb7e482ef 0 1608291659839 7 connected
23c0582497bc3b65be14912d46b0a65d364a8c50 192.168.130.20:6380@16380 myself,slave 87b956229fb8a24afc35c1d3c382848a7fa33f35 0 1608291659000 2 connected

referencia

https://redis.io/topics/cluster-tutorial

Supongo que te gusta

Origin blog.csdn.net/kk3909/article/details/111937760
Recomendado
Clasificación