docker pull redis:6.0.8
# 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
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
2.3 Clusterstatus anzeigen
docker exec -it redis-node-1 /bin/bash
Drei Master-Slave-Fehlertoleranz-Switching-Migrationsfälle
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节点
3.1.2 Zu anderen Servern im Cluster wechseln und den Wert abrufen
3.1.3 Clusterinformationen anzeigen
3.2 Fehlertolerante Switching-Migration
# 进入任意redis容器,这里以6381为例 redis-cli -p 6381 cluster info cluster nodes
# 重新进入6381,-c可以防止路由失效((error) MOVED 12706 192.168.202.200:6383),往其他服务器hash槽存数据时报错。 redis-cli -p 6381 -c set k1 v1 set k2 v2
Wie 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
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
4.5 Überprüfen Sie den Clusterstatus zum ersten Mal
# 先启动6381,再重启6384,即可将6381变为主机器。这里不做测试。 docker stop redis-node-4 docker start redis-node-4
redis-cli --cluster check 自己IP:6381Fünf Master-Slave-Reduktionsfall
5.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
docker exec -it redis-node-7 /bin/bash
5.3 Löschen Sie die Steckplatznummer von 6387 und verteilen Sie sie neu In diesem Beispiel werden alle gelöschten Schlitznummern an 6381
# 将新增的6387作为master节点加入集群 redis-cli --cluster add-node 自己实际IP地址:6387 自己实际IP地址:6381 6387 就是将要作为master新增节点 6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群
5.4 gegeben Status zum dritten Mal
redis-cli --cluster check 真实ip地址:6381 # 执行结果可以看出暂时没有槽号
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
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!