Introduction et construction du cluster Redis-Cluster

Un, introduction du cluster

1.1 Introduction

1) Exigences de version: le cluster n'est pris en charge qu'à partir de Redis3.0;
2) Exigences de maître / sauvegarde: le cluster nécessite des nœuds pour prendre en charge le mode maître / sauvegarde (c'est-à-dire que chaque nœud maître a au moins un nœud esclave)

1.2, schéma d'architecture

1) Chaque cercle représente un nœud maître, et deux nœuds peuvent communiquer;
2) Le client peut accéder à n'importe quel nœud pour les opérations d'accès aux données;
Insérez la description de l'image ici

1.3, mécanisme de vote

1) Les nœuds maîtres du cluster Redis votent les uns avec les autres via ping-pong pour déterminer si le nœud est disponible; (par exemple, si plus de la moitié des nœuds maîtres ne répondent pas au ping d'un nœud maître, cela sera considéré down. Ensuite, il continuera. Ping son nœud esclave. S'il tombe également en panne, le cluster entier passera à l'état d'échec indisponible)
2) Dans quel état le cluster sera-t-il indisponible?
a. Tout nœud maître de cluster raccroche, et il n'y a pas d'esclave ou d'esclave indisponible, et entre en état d'échec;
b. Plus de la moitié des nœuds maîtres de cluster raccrochent (que le nœud esclave soit disponible ou non)

1.4, mécanisme de stockage

Principe
1. Redis-cluster calculera la clé de l'opération selon l'algorithme crc16;
2. ramener le reste du résultat du calcul à 16384 pour obtenir un nombre entre 0 et 16383;
3. trouver l'emplacement de hachage correspondant à travers le nombre entier value Node;
4. Effectuez ensuite des opérations d'accès aux données sur le nœud;
Insérez la description de l'image ici
par exemple:
effectuez l'opération set key hello sur Node1 (illustré dans la figure ci-dessus)
1. algorithme crc16: par exemple, obtenez crc16: key = 26384
2. Prenez le reste: 26384% 16384 = 10000
3. Nœud de l'emplacement de hachage: trouvez le nœud de l'emplacement de hachage Node2 correspondant à 10000.
4. Opération: exécutez en fait l'opération set key hello dans Node2
5. Le principe est le même lorsque get key hello.

Deux, construction de cluster

2.1. Préparation

1) Construisez le plus petit cluster redis-cluster, c'est-à-dire trois paires de maître et d'esclave (le pseudo cluster est utilisé ici)
2) Installez 6 instances redis dans la machine virtuelle et allouez les ports 8001, 8002, 8003, 8004, 8005, 8006;
3) Si Pour créer un cluster à l'aide de la version autonome utilisée, vous devez supprimer les fichiers dump.rdb et apeendonly.aof;

2.2, installation

2.2.1, installez ruby

[root@eureka1 ~]# yum install ruby
...
[root@eureka1 ~]# yum install rubygems

2.2.2, préparation de colis

Upload: rztéléchargement de la commande dans le /temprépertoire

-rw-r--r--.  1 root root  1358081 117 2020 redis-3.0.0.tar.gz

Décompressez: tar -zxvf redis-3.0.0.tar.gz

drwxrwxr-x.  6 root root     4096 41 2015 redis-3.0.0

2.2.3, trouvez redis-trib.rb

Ce fichier peut nous aider à créer redis-cluster, écrit en langage rubis

[root@eureka1 temp]# cd redis-3.0.0/src/
[root@eureka1 src]# ll *.rb
-rwxrwxr-x. 1 root root 48141 41 2015 redis-trib.rb

2.2.4, télécharger / installer redis-3.0.0.gem

Télécharger dans le /tempcatalogue

-rw-r--r--.  1 root root    57856 117 2020 redis-3.0.0.gem

installation

[root@eureka1 temp]# gem install redis-3.0.0.gem
Successfully installed redis-3.0.0
1 gem installed

2.2.5, installation autonome (préparée pour l'installation du cluster)

Compilez et entrez dans le répertoire décompressé

[root@eureka1 redis-3.0.0]# cd /root/temp/redis-3.0.0
[root@eureka1 redis-3.0.0]# make

installation

[root@eureka1 redis-3.0.0]# make install PREFIX=/usr/local/redis3

Copier redis.conf

[root@eureka1 redis3]# cp /root/temp/redis-3.0.0/redis.conf /usr/local/redis3/bin/

Remplacez daemonize no par yes pour
démarrer

[root@eureka1 bin]# ./redis-server redis.conf

Arrêtez

[root@eureka1 bin]# ./redis-cli shutdown

2.2.6, installation en mode cluster (6 instances)

1) /usr/local/Créez un redis-clusterdossier sous le répertoire

[root@eureka1 temp]# cd /usr/local/
[root@eureka1 local]# mkdir redis-cluster

2) le /redis3répertoire /binest copié dans redis-clusterle suivant, et renomméredis01

[root@eureka1 redis3]# cp -r bin ../redis-cluster/redis01
[root@eureka1 redis3]# 

3) Retirez redis01中le dump..rdble apeendonly.aofdocument de
4) modifier le redis.conffichier de configuration
Port: Le port par défaut 6379ont été modifiés pour 8001
permettre au cluster: libération de cluster-enabled yesconfiguration Remarque
5) dans 6 répétitions de l'exemple et les ports sont modifiés pour 8002,8003,8004,8005,8006

[root@eureka1 redis-cluster]# cp -r redis01/ redis02
[root@eureka1 redis-cluster]# cp -r redis01/ redis03
[root@eureka1 redis-cluster]# cp -r redis01/ redis04
[root@eureka1 redis-cluster]# cp -r redis01/ redis05
[root@eureka1 redis-cluster]# cp -r redis01/ redis06

6) Copiez le redis-trib.rbscript ruby ​​dans redis-cluster

[root@eureka1 redis-3.0.0]# cd /root/temp/redis-3.0.0/src/
[root@eureka1 src]# cp redis-trib.rb /usr/local/redis-cluster/

7) Créez un script de démarrage startall.sh

[root@eureka1 redis-cluster]# vim startall.sh 
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..

8) Autorisation de script

[root@eureka1 redis-cluster]# chmod +x startall.sh 

9) Démarrer le script

[root@eureka1 redis-cluster]# ./startall.sh 
[root@eureka1 redis-cluster]# ps aux|grep redis
root       4108  0.1  0.6  40596  5688 ?        Ssl  13:33   0:00 ./redis-server *:8001 [cluster]
root       4110  0.1  0.4  40596  3660 ?        Ssl  13:33   0:00 ./redis-server *:8002 [cluster]
root       4114  0.0  0.4  40596  3660 ?        Ssl  13:33   0:00 ./redis-server *:8003 [cluster]
root       4118  0.0  0.4  40596  3700 ?        Ssl  13:33   0:00 ./redis-server *:8004 [cluster]
root       4120  0.0  0.4  40596  3664 ?        Ssl  13:33   0:00 ./redis-server *:8005 [cluster]
root       4126  0.0  0.4  40596  3612 ?        Ssl  13:33   0:00 ./redis-server *:8006 [cluster]
root       4165  0.0  0.1  12320   964 pts/0    S+   13:33   0:00 grep --color=auto redis

10) La création d'un
rbscript de cluster attribuera automatiquement des nœuds maître et esclave, ce qui 1signifie un maître et une sauvegarde

[root@eureka1 redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.48.128:8001 192.168.48.128:8002 192.168.48.128:8003 192.168.48.128:8004 192.168.48.128:8005 192.168.48.128:8006

Le journal suivant enregistre les détails de distribution du nœud maître et du nœud esclave, ainsi que l'intervalle d'allocation des emplacements de hachage de slot de chaque nœud maître;

>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.48.128:8001
192.168.48.128:8002
192.168.48.128:8003
Adding replica 192.168.48.128:8004 to 192.168.48.128:8001
Adding replica 192.168.48.128:8005 to 192.168.48.128:8002
Adding replica 192.168.48.128:8006 to 192.168.48.128:8003
M: e85faa81e1260828dbe58118753056796715d81d 192.168.48.128:8001
   slots:0-5460 (5461 slots) master
M: 86ce0943516ebbe30e5f3cebf40b7076f46212c7 192.168.48.128:8002
   slots:5461-10922 (5462 slots) master
M: b1736ef65c852458e27288162ff82e926fc16ace 192.168.48.128:8003
   slots:10923-16383 (5461 slots) master
S: f5c3b41dc41437ab514995c2f5952b53a6eb2a14 192.168.48.128:8004
   replicates e85faa81e1260828dbe58118753056796715d81d
S: 0a2a99d9940faa104d4b0b1137f98ec7277974d6 192.168.48.128:8005
   replicates 86ce0943516ebbe30e5f3cebf40b7076f46212c7
S: e1f4a09028d9aeeedc8b125e7ba3238dde6a21a9 192.168.48.128:8006
   replicates b1736ef65c852458e27288162ff82e926fc16ace
Can I set the above configuration? (type 'yes' to accept): yes

11) Grâce au nodes.conffichier dans le nœud , vous pouvez afficher les informations de cluster dans le nœud

[root@eureka1 redis01]# cat /usr/local/redis-cluster/redis01/nodes.conf 
0a2a99d9940faa104d4b0b1137f98ec7277974d6 192.168.48.128:8005 slave 86ce0943516ebbe30e5f3cebf40b7076f46212c7 0 1599918231045 5 connected
e1f4a09028d9aeeedc8b125e7ba3238dde6a21a9 192.168.48.128:8006 slave b1736ef65c852458e27288162ff82e926fc16ace 0 1599918230327 6 connected
e85faa81e1260828dbe58118753056796715d81d 192.168.48.128:8001 myself,master - 0 0 1 connected 0-5460
b1736ef65c852458e27288162ff82e926fc16ace 192.168.48.128:8003 master - 0 1599918230021 3 connected 10923-16383
86ce0943516ebbe30e5f3cebf40b7076f46212c7 192.168.48.128:8002 master - 0 1599918227975 2 connected 5461-10922
f5c3b41dc41437ab514995c2f5952b53a6eb2a14 192.168.48.128:8004 slave e85faa81e1260828dbe58118753056796715d81d 0 1599918228998 4 connected
vars currentEpoch 6 lastVoteEpoch 0

12) Tester le cluster
N'importe quel nœud peut être connecté, mais des -cparamètres doivent être ajoutés , sinon il sera considéré comme un mode autonome et l'opération échouera

[root@eureka1 redis-cluster]# ./redis01/redis-cli -h 192.168.48.128 -p 8001 -c
192.168.48.128:8001> set name haha
-> Redirected to slot [5798] located at 192.168.48.128:8002
OK
192.168.48.128:8002> get name
"haha"

13) Arrêtez le cluster et
créez un shutdownall.shscript

[root@eureka1 redis-cluster]# vim shutdownall.sh
./redis01/redis-cli -h 192.168.48.128 -p 8001 shutdown
./redis01/redis-cli -h 192.168.48.128 -p 8002 shutdown
./redis01/redis-cli -h 192.168.48.128 -p 8003 shutdown
./redis01/redis-cli -h 192.168.48.128 -p 8004 shutdown
./redis01/redis-cli -h 192.168.48.128 -p 8005 shutdown
./redis01/redis-cli -h 192.168.48.128 -p 8006 shutdown
[root@eureka1 redis-cluster]# chmod +x shutdownall.sh 
[root@eureka1 redis-cluster]# ./shutdownall.sh 
[root@eureka1 redis-cluster]# ps aux|grep redis
root       5365  0.0  0.1  12320   968 pts/0    R+   14:02   0:00 grep --color=auto redis

Je suppose que tu aimes

Origine blog.csdn.net/shaixinxin/article/details/108544770
conseillé
Classement