Maison >base de données >Redis >Explication détaillée des exemples de fonctionnement du cluster Redis

Explication détaillée des exemples de fonctionnement du cluster Redis

WBOY
WBOYavant
2022-06-23 12:24:122288parcourir

Cet article vous apporte des connaissances pertinentes sur Redis, qui organise principalement les problèmes liés aux opérations de cluster, notamment l'ajout d'instances Redis, la configuration de 8007 comme nœud maître, la configuration de 8008 comme nœud esclave de 8007, etc. ensemble, j'espère que cela sera utile à tout le monde.

Explication détaillée des exemples de fonctionnement du cluster Redis

Apprentissage recommandé : Tutoriel vidéo Redis

Basé sur la fondation existante, voici une version de base avec trois maîtres et trois esclaves. La structure est la suivante

1. . Démarrez le cluster

/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8001/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8002/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8003/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8004/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8005/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8006/redis.conf

Affichez l'état du cluster : nœuds du cluster

Comme le montre l'image ci-dessus, l'ensemble du cluster fonctionne normalement, avec trois nœuds maîtres et trois nœuds esclaves,

  • Le nœud d'instance du port 8001 stocke 0 à 5460 ces emplacements de hachage,
  • Le nœud d'instance de port 8002 stocke 5461 à 10922 ces emplacements de hachage,
  • Le nœud d'instance de port 8003 stocke 10923 à 16383 ces emplacements de hachage,

ces trois nœuds maîtres stockent Tous les emplacements de hachage constituent les emplacements de stockage du cluster redis. Le point esclave est le nœud esclave de sauvegarde de chaque nœud maître, et les emplacements de stockage ne sont pas affichés.

2. Fonctionnement du cluster

Nous ajoutons un maître (8007) et un esclave supplémentaires (8008) basés sur le cluster d'origine. Le cluster après l'ajout de nœuds est illustré dans la figure ci-dessous. cases en pointillés

2.1. Ajoutez une instance redis

Créez les dossiers 8007 et 8008 sous /usr/local/redis-cluster et copiez le fichier redis.conf dans le dossier 8001 vers 8007. et 8008 Sous les deux dossiers

mkdir 8007 8008 
cd 8001
cp redis.conf /usr/local/redis‐cluster/8007/ 
cp redis.conf /usr/local/redis‐cluster/8008/
 
# 修改8007文件夹下的redis.conf配置文件
vim /usr/local/redis‐cluster/8007/redis.conf 
# 修改如下内容:
port:8007 
dir /usr/local/redis‐cluster/8007/
cluster‐config‐file nodes‐8007.conf 

# 修改8008文件夹下的redis.conf配置文件
vim /usr/local/redis‐cluster/8008/redis.conf
# 修改内容如下:
port:8008
dir /usr/local/redis‐cluster/8008/
cluster‐config‐file nodes‐8008.conf

# 启动8007和8008俩个服务并查看服务状态
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8007/redis.conf
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8008/redis.conf

ps ‐el | grep redis

2.2, configurez 8007 comme nœud maître

Utilisez la commande add-node pour ajouter un nouveau nœud maître 8007 (maître). Le premier ip:port est le nouveau. nœud, et l'ip:port suivant est le nouveau nœud. ip:port est un nœud existant connu. Lorsque vous voyez l'invite « [OK] Nouveau nœud ajouté correctement » à la fin du journal, cela signifie que le nouveau nœud a. a été ajouté avec succès

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster add‐node 192.168.0.61:8007 192.168.0.61:8001

Affichez l'état du cluster

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐c ‐h 192.168.0.61 ‐p 8001

192.168.0.61:8001> cluster nodes

comme indiqué ci-dessous :

Remarque : Lorsque le nœud est ajouté avec succès, le nœud nouvellement ajouté n'en aura aucun. données, car aucun emplacement (emplacement de hachage) ne lui a été attribué, nous devons allouer manuellement des emplacements de hachage pour le nouveau nœud

Utilisez la commande redis-cli pour allouer un emplacement de hachage à 8007, recherchez n'importe quel nœud maître dans le cluster et repartagez-le

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster reshard 192.168.0.61:8001

2.3. Configurez 8008 comme nœud esclave de 8007

Ajoutez le nœud esclave 8008 au cluster et vérifiez l'état du cluster

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster add‐node 192.168.0.61:8008 192.168.0.61:8001

comme suit :

Comme le montre l'image, il s'agit toujours d'un nœud maître et aucun emplacement de hachage ne lui a été attribué.

Raison : Nous devons exécuter la commande répliquer pour spécifier l'ID du nœud maître du nœud actuel (nœud esclave). Tout d'abord, nous devons connecter le client du nœud 8008 nouvellement ajouté, puis utiliser la commande cluster. pour faire fonctionner et remplacer le nœud 8008 actuel. Le nœud (esclave) est affecté à un nœud maître (le nœud maître 8007 créé auparavant est utilisé ici)

Exécuter la commande

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐c ‐h 192.168.0.61 ‐p 8008 

192.168.0.61:8008> cluster replicate 2728a594a0498e98e4b83a537e19f9a0a3790f38 #后面这串id为8007的节点id

Voir l'état du cluster, le nœud 8008 a été ajouté avec succès en tant que nœud esclave du nœud 8007

 2.4、删除8080从节点[不删除四主四从]

用del-node删除从节点8008,指定删除节点ip和端口,以及节点id(红色为8008节点id)

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster del‐node 192.168.0.61:8008 a1cfe35722d151cf70585cee212755653 93c0956

再次查看集群状态,如下图所示,8008这个slave节点已经移除,并且该节点的redis服务也已被停止

 2.5、删除8007主节点[不删除四主四从]

因为主节点的里面是有分配了hash槽的,所以我们这里必须先把8007里的hash槽放入到其他的可用主节点中去,然后再进行移除节点操作,不然会出现数据丢失问题(目前只能把master的数据迁移到一个节点上,暂时做不了平均分配功能),执行命令如下:

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster reshard 192.168.0.61:8007

迁移验证:会发现8007下面已经没有任何hash槽了,证明迁移成功!

 用del-node命令删除8007主节点即可

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster del‐node 192.168.0.61:8007 2728a594a0498e98e4b83a537e19f9a0a 3790f38

查看最终集群状态,发现一切恢复如初,至此水平扩展结束

推荐学习:Redis视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer