Dieser Artikel vermittelt Ihnen relevantes Wissen überRedis, in dem hauptsächlich Probleme im Zusammenhang mit Clustervorgängen organisiert werden, einschließlich des Hinzufügens von Redis-Instanzen, der Konfiguration von 8007 als Masterknoten, der Konfiguration von 8008 als Slave-Knoten von 8007 usw. Werfen wir einen Blick darauf Gemeinsam hoffe ich, dass es für alle hilfreich sein wird.
Empfohlenes Lernen:Redis-Video-Tutorial
Basierend auf der vorhandenen Grundlage ist hier eine Basisversion mit drei Mastern und drei Slaves. Die Struktur ist wie folgt:
/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
Sehen Sie sich den Clusterstatus an: Clusterknoten
Wie aus dem obigen Bild ersichtlich ist, läuft der gesamte Cluster normal, mit drei Masterknoten und drei Slaveknoten,
Diese drei Masterknoten speichern alle Hash-Slots und bilden die Speicherslots des Redis-Clusters. Der Slave-Punkt ist der Backup-Slave-Knoten jedes Masterknotens, und die Speicherslots werden nicht angezeigt.
Wir fügen einen weiteren Master (8007) und einen Slave (8008) basierend auf dem ursprünglichen Cluster hinzu, wie in der folgenden Abbildung dargestellt Dotted Boxen
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 8007 als Masterknoten
/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster add‐node 192.168.0.61:8007 192.168.0.61:8001
Sehen Sie sich den Clusterstatus
/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
wie unten gezeigt an:
Hinweis: Wenn der Knoten erfolgreich hinzugefügt wurde, hat der neu hinzugefügte Knoten keinen Daten, da ihnen kein Slot (Hash-Slot) zugewiesen wurde. Wir müssen Hash-Slots für den neuen Knoten manuell zuweisen.
Verwenden Sie den Befehl redis-cli, um einen Hash-Slot für 8007 zuzuweisen 2.3. Konfigurieren Sie 8008 als Slave-Knoten von 8007. Fügen Sie den Slave-Knoten 8008 zum Cluster hinzu und überprüfen Sie den Cluster-Status
wie folgt:/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster reshard 192.168.0.61:8001Nach dem Login kopieren
Grund: Wir müssen den Replikationsbefehl ausführen, um die Master-Knoten-ID des aktuellen Knotens (Slave-Knotens) anzugeben. Zuerst müssen wir den Client des neu hinzugefügten 8008-Knotens verbinden und dann den Cluster-Befehl verwenden Um den aktuellen 8008 zu betreiben und zu ersetzen, wird der (Slave-)Knoten einem Masterknoten zugewiesen (hier wird der zuvor erstellte 8007-Masterknoten verwendet). wurde erfolgreich als Slave-Knoten des 8007-Knotens hinzugefügt
用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视频教程
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Beispiele für Redis-Cluster-Operationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!