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
docker exec -it redis-node-1 /bin/bash
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节点
# 进入任意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
< .
Seperti yang dapat dilihat dari gambar di atas, apabila 6381 turun, 6384 bertukar daripada hamba kepada tuan.3.2.2 Mulakan Semula 6381
# 停止6381,机器,查看集群状态 docker stop redis-node-1 # 进入6382容器,查看集群状态 docker exec -it redis-node-2 bash
# 进入容器后先进入redis redis-cli -p 6382 -c # 查看集群信息 cluster nodes
# 先启动6381,再重启6384,即可将6381变为主机器。这里不做测试。 docker stop redis-node-4 docker start redis-node-4
redis-cli --cluster check 自己IP:6381
4.3 Gunakan nod 6387 yang baru ditambah (nombor slot kosong) sebagai nod induk Sertai kluster asal
# 到宿主机上,准备配置文件 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
# 将新增的6387作为master节点加入集群 redis-cli --cluster add-node 自己实际IP地址:6387 自己实际IP地址:6381 6387 就是将要作为master新增节点 6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群
4.7 Semak status kelompok untuk kali kedua
redis-cli --cluster check 真实ip地址:6381 # 执行结果可以看出暂时没有槽号
# 重新分派槽号 # 命令:redis-cli --cluster reshard IP地址:端口号 redis-cli --cluster reshard 192.168.202.200:6381 # 4096 下面的是接收hash槽的redis容器ID,这里是6387对应的id # source node :从哪些原来的主机上分配资源下来,all表示全部master
4.8 Nod induk 6387 Tetapkan nod hamba 6388
Perintah: redis-cli --cluster add-node ip: port hamba baharu ip: port induk baharu --cluster-slave --cluster-master- id ID nod hos baharuredis-cli --nod tambah kluster 192.168.202.200:6388 192.168.202.200:6387 --kluster-hamba --kluster-master-id4784b4ed14781b4ed14d6b4d14d6b4d1 31451 ------- Ini ialah nombor 6387, mengikut situasi Sebenar anda sendiri
4.9 Menyemak situasi kelompok untuk kali ketiga
redis-cli --cluster check 真实ip地址:6381
# 槽号分派说明 为什么6387是3个新的区间,以前的还是连续? 重新分配成本太高,所以前3家各自匀出来一部分,从6381/6382/6383三个旧节点分别匀出1364个坑位给新节点6387
redis-cli --cluster check 192.168.202.200:6382
5.3 Kosongkan nombor slot 6387 dan edarkannya semula Dalam contoh ini, semua nombor slot yang telah dibersihkan akan diberikan kepada 6381
redis-cli --cluster check 192.168.202.200:6382
# 命令:redis-cli --cluster del-node ip:从机端口 从机6388节点ID redis-cli --cluster del-node 192.168.202.200:6388 6388节点redis容器ID
5.5 Padam 6387
redis-cli --cluster reshard 192.168.202.200:6381
5.6 Semak situasi kelompok untuk kali ketiga
# 4096个槽位都指给6381,它变成了8192个槽位,相当于全部都给6381了 # 如果想平均分配的话可以多次分配,每次分配指定hash槽数 redis-cli --cluster check 192.168.202.200:6381
Lampirkan: fail konfigurasi kilang redis
# 命令:redis-cli --cluster del-node ip:端口 6387节点ID redis-cli --cluster del-node 192.168.202.200:6387 ce1263dbe9e034e99fea8359f0177dde57ea6367
Atas ialah kandungan terperinci Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!