Maison > Article > base de données > Explication détaillée des exemples de fonctionnement du cluster Redis
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.
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
/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,
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.
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
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
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
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
用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服务也已被停止
因为主节点的里面是有分配了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!