Use o docker para construir rapidamente o cluster redis

Preparação ambiental

Nome do nó endereço de 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 docker

levemente

Instale o cluster redis

O cluster mínimo precisa conter pelo menos três nós mestres. Aqui, um cluster de seis nós com três nós mestres e três nós escravos é iniciado. Existem apenas três máquinas aqui para compartilharmos.

configuração do nó mestre

Crie diretórios (nó1, nó2, nó3)

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 

Gravar arquivo de configuração

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

O conteúdo é o seguinte

#保护模式
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 

configuração do nó salve

Crie diretórios (node4, node5, node6)

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 

Grave o arquivo de configuração para definir a senha

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 os nós

node1

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

node4

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

node2

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

node5

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

node3

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

node6

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

Crie um cluster

Entre eles, as réplicas de cluster 1 significa que há vários escravos atrás de um mestre, 1 significa 1 nó escravo, os nós 1 ~ 3 são nós mestres 4 ~ 6 são escravos e a ordem de ip + porta não pode ser desordenada

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

Se você quiser acessar a rede externa, você não pode usar o ip da rede 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

Em seguida, modifique o ip da intranet em node1, node2, node3 / root / redis-cluster / xxxx / data / nodes-6379.conf e reinicie node1, node2, node3

Informação de saída

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

Verifique o cluster

Insira o node1

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

Os dados são alocados automaticamente para o nó 2 e a conexão também é transferida para o nó 2

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"

Verifique o interruptor mestre-escravo

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

Você pode ver o nó 1,
você pode ver o nó 6, do escravo ao mestre

Reinicie o node1 e, em seguida, verifique se o status do cluster node1 se tornou escravo

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

referência

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

Acho que você gosta

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