Heim > Datenbank > Redis > Hauptteil

So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves

WBOY
Freigeben: 2023-05-26 09:47:58
nach vorne
1082 Leute haben es durchsucht

1 Erstellen Sie Redis-Bilder und Container

1.1 Download Redis6.0.8

docker pull redis:6.0.8
Nach dem Login kopieren

1.2 Vorbereiten Sie 6 Server-Konfigurationsdateien

# redis出场配置放在文章最后
mkdir -p /usr/local/repository/redis/redis-node-1
# 配置参考文章最后
vim /usr/local/repository/redis/redis-node-1/redis.conf 
cd /usr/local/repository/redis
# 依次复制其他5份
cp -r redis-node-1/ ./redis-node-2
Nach dem Login kopieren

1.3 Erstellen Sie 6 Redis Container

docker run -d --name redis-node-1 --net host --privileged=true -v /usr/local/repository/redis/redis-node-1/redis.conf:/etc/redis/redis.conf -v /usr/local/repository/redis/redis-node-1/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
 
docker run -d --name redis-node-2 --net host --privileged=true -v /usr/local/repository/redis/redis-node-2/redis.conf:/etc/redis/redis.conf -v /usr/local/repository/redis/redis-node-2/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382

docker run -d --name redis-node-3 --net host --privileged=true -v /usr/local/repository/redis/redis-node-3/redis.conf:/etc/redis/redis.conf -v /usr/local/repository/redis/redis-node-3/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383

docker run -d --name redis-node-4 --net host --privileged=true -v /usr/local/repository/redis/redis-node-4/redis.conf:/etc/redis/redis.conf -v /usr/local/repository/redis/redis-node-4/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384

docker run -d --name redis-node-5 --net host --privileged=true -v /usr/local/repository/redis/redis-node-5/redis.conf:/etc/redis/redis.conf -v /usr/local/repository/redis/redis-node-5/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385

docker run -d --name redis-node-6 --net host --privileged=true -v /usr/local/repository/redis/redis-node-6/redis.conf:/etc/redis/redis.conf -v /usr/local/repository/redis/redis-node-6/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386
Nach dem Login kopieren

2 erstellen Master-Slave-Cluster-Beziehung

2.1 Geben Sie einen beliebigen Redis-Container ein.

2.2 Master-Slave-Beziehung aufbauen

So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves2.3 Clusterstatus anzeigen

docker exec -it redis-node-1 /bin/bash
Nach dem Login kopieren

So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei SlavesDrei Master-Slave-Fehlertoleranz-Switching-Migrationsfälle

3.1 Datenlese- und Schreibspeicher

3.1.1 Geben Sie 6381 ein hinzufügen zwei neue Gruppenschlüssel

redis-cli --cluster create 192.168.202.200:6381 192.168.202.200:6382 192.168.202.200:6383 192.168.202.200:6384 192.168.202.200:6385 192.168.202.200:6386 --cluster-replicas 1
# --cluster-replicas 1 表示为每个master创建一个slave节点
Nach dem Login kopieren

So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves3.1.2 Zu anderen Servern im Cluster wechseln und den Wert abrufen

So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves3.1.3 Clusterinformationen anzeigen

So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves3.2 Fehlertolerante Switching-Migration

3.2. 1 Master 6381 und Slave-Switch

# 进入任意redis容器,这里以6381为例
redis-cli -p 6381
cluster info
cluster nodes
Nach dem Login kopieren
# 重新进入6381,-c可以防止路由失效((error) MOVED 12706 192.168.202.200:6383),往其他服务器hash槽存数据时报错。
redis-cli -p 6381 -c
set k1 v1
set k2 v2
Nach dem Login kopieren

So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei SlavesWie im obigen Bild zu sehen ist, wechselt 6384 vom Slave zum Master, wenn 6381 ausfällt.

3.2.2 6381 neu starten

Nach dem Neustart stellten wir fest, dass 6381 immer noch die Slave-Maschine und 6384 die Master-Maschine ist. Wenn die Leute gehen, ist der Tee kühl. Um es wieder zu ändern, stoppen Sie einfach und starten Sie 6384. 3.2.3 Überprüfen Sie den Cluster-Status 4.2 Geben Sie ein innerhalb der 6387-Containerinstanz

# 停止6381,机器,查看集群状态
docker stop redis-node-1
# 进入6382容器,查看集群状态
docker exec -it redis-node-2 bash
Nach dem Login kopieren

4.3 Fügen Sie die neu hinzugefügten 6387-Knoten (leere Slot-Nummer) als Masterknoten zum ursprünglichen Cluster hinzu

# 进入容器后先进入redis
redis-cli -p 6382 -c
# 查看集群信息
cluster nodes
Nach dem Login kopieren

So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves

4.5 Überprüfen Sie den Clusterstatus zum ersten Mal

# 先启动6381,再重启6384,即可将6381变为主机器。这里不做测试。
docker stop redis-node-4
docker start redis-node-4
Nach dem Login kopieren

So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves

4.6 Weisen Sie die Steckplatznummer neu zu. Cluster-Hinzufügen-Knoten IP: neuer Slave-Port IP: neuer Master-Port - -cluster-slave --cluster-master-id Neue Hostknoten-ID

redis-cli --cluster add-node 192.168.202.200:6388 192.168.202.200:6387 --cluster -slave --cluster-master-id e4781f644d4a4e4d4b4d107157b9 ba8144631451- ------Dies ist die Nummer 6387. Entsprechend Ihrer tatsächlichen Situation

4.9 Überprüfen Sie den Clusterstatus zum dritten Mal

redis-cli --cluster check 自己IP:6381
Nach dem Login kopieren
So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves

Fünf Master-Slave-Reduktionsfall

So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves5.1 Überprüfen Sie den Clusterstatus und erhalten Sie die Knoten-ID 6388

# 到宿主机上,准备配置文件
cd /usr/local/repository/redis
# 参考上面6台机器,生成配置文件
# 启动6387及6388两个容器
docker run -d --name redis-node-7 --net host --privileged=true -v /usr/local/repository/redis/redis-node-7/redis.conf:/etc/redis/redis.conf -v /usr/local/repository/redis/redis-node-7/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387

docker run -d --name redis-node-8 --net host --privileged=true -v /usr/local/repository/redis/redis-node-8/redis.conf:/etc/redis/redis.conf -v /usr/local/repository/redis/redis-node-8/data:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

# 查看容器是否创建成功
docker ps
Nach dem Login kopieren

5.2 Löschen Sie 6388 (löschen Sie Nr. 4 von Knoten 6388 aus dem Cluster)

docker exec -it redis-node-7 /bin/bash
Nach dem Login kopieren

So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves

5.3 Löschen Sie die Steckplatznummer von 6387 und verteilen Sie sie neu In diesem Beispiel werden alle gelöschten Schlitznummern an 6381So erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves

# 将新增的6387作为master节点加入集群
redis-cli --cluster add-node 自己实际IP地址:6387 自己实际IP地址:6381
6387 就是将要作为master新增节点
6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群
Nach dem Login kopieren

5.4 gegeben Status zum dritten MalSo erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves

redis-cli --cluster check 真实ip地址:6381
# 执行结果可以看出暂时没有槽号
Nach dem Login kopieren

Anhang: Redis-Factory-Konfigurationsdatei

# 重新分派槽号
# 命令:redis-cli --cluster reshard IP地址:端口号
redis-cli --cluster reshard 192.168.202.200:6381
# 4096 下面的是接收hash槽的redis容器ID,这里是6387对应的id
# source node :从哪些原来的主机上分配资源下来,all表示全部master
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo erstellen Sie mit Docker einen Redis-Cluster mit drei Mastern und drei Slaves. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!