Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker

WBOY
WBOYke hadapan
2023-05-26 09:47:581100semak imbas

Sediakan imej dan bekas redis

1.1 Muat turun redis6.0.8

docker pull redis:6.0.8

1.2 Sediakan 6 fail konfigurasi pelayan

# 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

1.3 Cipta 6 bekas redis

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 Cipta perhubungan kelompok tuan-hamba

2.1 Masukkan mana-mana bekas redis

docker exec -it redis-node-1 /bin/bash

2.2 Bina hubungan tuan-hamba

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节点

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker

2.3 Semak status kluster

# 进入任意redis容器,这里以6381为例
redis-cli -p 6381
cluster info
cluster nodes

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker

Tiga kes migrasi pensuisan toleransi kesalahan tuan-hamba

3.1 Storan baca dan tulis data

3.1 .1 Masukkan 6381 Tambah dua set kunci baharu

# 重新进入6381,-c可以防止路由失效((error) MOVED 12706 192.168.202.200:6383),往其他服务器hash槽存数据时报错。
redis-cli -p 6381 -c
set k1 v1
set k2 v2

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker

3.1.2 Tukar ke pelayan lain pada gugusan dan dapatkan nilai

Seperti yang dapat dilihat dari gambar di atas, apabila 6381 turun, 6384 bertukar daripada hamba kepada tuan.

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker3.2.2 Mulakan Semula 6381

Selepas dimulakan semula, kami mendapati bahawa 6381 masih merupakan mesin hamba dan 6384 ialah mesin induk. Apabila orang pergi, teh sejuk. Untuk menukarnya kembali, hanya berhenti dan mulakan 6384.

# 停止6381,机器,查看集群状态
docker stop redis-node-1
# 进入6382容器,查看集群状态
docker exec -it redis-node-2 bash
Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker3.2.3 Lihat status kelompok

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

Empat pengembangan tuan-hamba

4.1 Dua nod baharu 6387 dan 6388 + bermula selepas penciptaan + semak jika terdapat 8 nod

# 先启动6381,再重启6384,即可将6381变为主机器。这里不做测试。
docker stop redis-node-4
docker start redis-node-4
Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker4.2 Masukkan dalam contoh bekas 6387

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

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker

4.5 Semak status kluster buat kali pertama

docker exec -it redis-node-7 /bin/bash

4.6 Tetapkan semula nombor slot

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

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker

4.7 Semak status kelompok untuk kali keduaBagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker

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 6388Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker

Perintah: redis-cli --cluster add-node ip: port hamba baharu ip: port induk baharu --cluster-slave --cluster-master- id ID nod hos baharu

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan dockerredis-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

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker4.9 Menyemak situasi kelompok untuk kali ketiga

redis-cli --cluster check 真实ip地址:6381

Lima kes pengurangan tuan-hamba

5.1 Semak situasi kelompok dan dapatkan ID nod 6388

# 槽号分派说明
为什么6387是3个新的区间,以前的还是连续?
重新分配成本太高,所以前3家各自匀出来一部分,从6381/6382/6383三个旧节点分别匀出1364个坑位给新节点6387
Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker5.2 Padam 6388 (buang No. 4 daripada nod 6388 daripada gugusan)

redis-cli --cluster check 192.168.202.200:6382

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker5.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

5.4 Semak status kelompok untuk kali kedua

# 命令:redis-cli --cluster del-node ip:从机端口 从机6388节点ID
redis-cli --cluster del-node 192.168.202.200:6388 6388节点redis容器ID

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker5.5 Padam 6387

redis-cli --cluster reshard 192.168.202.200:6381

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan docker5.6 Semak situasi kelompok untuk kali ketiga

# 4096个槽位都指给6381,它变成了8192个槽位,相当于全部都给6381了
# 如果想平均分配的话可以多次分配,每次分配指定hash槽数
redis-cli --cluster check 192.168.202.200:6381

Bagaimana untuk membina kelompok tiga tuan dan tiga hamba redis dengan dockerLampirkan: 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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam