当前位置:网站首页>Docker学习 - Redis集群-3主3从-扩容-缩容搭建
Docker学习 - Redis集群-3主3从-扩容-缩容搭建
2022-07-25 12:41:00 【嗯嗯**】
演示图
// 第一步:启动六台Redis机器
docker run -d --name=redis-node-1 --net host --privileged=true -v /www/server/redis_master_slave/master_slave1/master:/data redis:latest --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name=redis-node-2 --net host --privileged=true -v /www/server/redis_master_slave/master_slave2/master:/data redis:latest --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name=redis-node-3 --net host --privileged=true -v /www/server/redis_master_slave/master_slave3/master:/data redis:latest --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name=redis-node-4 --net host --privileged=true -v /www/server/redis_master_slave/master_slave1/slave:/data redis:latest --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name=redis-node-5 --net host --privileged=true -v /www/server/redis_master_slave/master_slave2/slave:/data redis:latest --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name=redis-node-6 --net host --privileged=true -v /www/server/redis_master_slave/master_slave3/slave:/data redis:latest --cluster-enabled yes --appendonly yes --port 6386
//第二步:随便进一台redis主机容器内部:为每个master创建一个slave从节点
docker exec -it redis-node-1 /bin/bash
//输入yes
redis-cli --cluster create 192.168.19.107:6381 192.168.19.107:6382 192.168.19.107:6383 192.168.19.107:6384 192.168.19.107:6385 192.168.19.107:6386 --cluster-replicas 1
//第三步:通过一台Redis主机(非从机),查看整个Redis集群状态 == 我当前进入的容器即是主机
redis-cli -p 6381
cluster info
cluster nodes
//根据上图的情况cluster nodes的信息,此时Redis系统分配的主从关系是:主6381-> 从6385、主6382-> 从6386、主6383-> 从6384
//第四步:测试reids存储:发现key1、key4设置时都发生错误,由于key1、key4的哈希值属于其他槽位,即其他的主机如主机6382、6383才可以存
//如果需要在当前主机不报错,自动将key1、key4存到其他机器,进入redis客户端使用集群模式:redis-cli -p 6381 -c
set key1 value1
set key2 value2
set key3 value3
set key4 value4
exit
//第五步:redis客户端 优化路由跳转 == 每运行一次set、注意看端口号的变化
redis-cli -c -p 6381
set key1 value1
set key2 value2
set key3 value3
set key4 value4
exit
//第六步:查看集群信息(另一个命令)cluster node 也可以看集群信息
//查看集群中所有key在各主机的分布情况,以及主从关系
redis-cli --cluster check 192.168.19.107:6381
//第七步:模拟其中一台主机宕机(我以6381主机宕机为测试),查看其想对应的从机6385是否可以自动变为主机,进行平替
exit
exit
docker stop redis-node-1
docker ps
docker exec -it redis-node-2 /bin/bash
redis-cli -c -p 6382
// 第八步:可观察到原主机6381的从机6385自动平替变为主机
cluster nodes
//第九步:重新将6381启起来,观察6381是否会变回主机,6385变为从机
exit
exit
docker start redis-node-1
docker exec -it redis-node-2 /bin/bash
redis-cli -c -p 6382
//第十步:可观察到 6385不会因为老领导回来6381就降为从机
cluster nodes
//第十一步:调整架构,将6381变为主机 6385变为从机
exit
exit
docker stop redis-node-5
//等1分钟在启起来
docker start redis-node-5
docker exec -it redis-node-2 /bin/bash
redis-cli -c -p 6382
//第十二步:可观察到 6381变为主机,6385变为从机
cluster nodes
//====================扩容开始==============================================
//第十三步:准备扩容,添加两台机器,主机6387、从机6388进入集群
exit
exit
docker run -d --name=redis-node-7 --net host --privileged=true -v /www/server/redis_master_slave/master_slave4/master:/data redis:latest --cluster-enabled yes --appendonly yes --port 6387
docker run -d --name=redis-node-8 --net host --privileged=true -v /www/server/redis_master_slave/master_slave4/slave:/data redis:latest --cluster-enabled yes --appendonly yes --port 6388
docker ps
//第十四步:进入redis-node7容器
docker exec -it redis-node-7 /bin/bash
//第十五步:添加当前redis机进入master集群
redis-cli --cluster add-node 192.168.19.107:6387 192.168.19.107:6381
//检查集群情况 == 发现新6387主机没槽位
redis-cli --cluster check 192.168.19.107:6381
//第十六步:勒令整个集群重新分配槽位,使得新主机6387也有槽位
//怎么分:16384/4=4096 填4096进去
//分给谁:6387机器的Redis定义的ID标识符:填ad03db99f539b78b0b57c37c529f9eb2f612bb18
//全机:重新新配:填all
//开始分配:yes
redis-cli --cluster reshard 192.168.19.107:6381
//第十七步:检查集群情况 == 发现新6387主机有槽位了(原先的三个槽位,每个都允了一点过来) == 且将集群系统中所有key都重新分配了
redis-cli --cluster check 192.168.19.107:6381
//第十八步:将6388指派变为6387的从机
//删除节点命令:redis-cli --cluster del-node 节点IP:节点端口号 节点标识符
redis-cli --cluster add-node 192.168.19.107:6388 192.168.19.107:6387 --cluster-slave --cluster-master-id ad03db99f539b78b0b57c37c529f9eb2f612bb18
//第十九步:检查集群情况 == 查看6387、6388是否是主从关系
redis-cli --cluster check 192.168.19.107:6381
//====================扩容结束==============================================
//====================缩容开始-先删从节点6388,槽位重新分配,在删除主节点6387,恢复成3主3从====
//第二十步:删除从节点6388
redis-cli --cluster del-node 192.168.19.107:6388 dc89a64b98290f4164e4ba1b6e8841a8b9d8d763
//第二十一步:检查集群情况 == 查看从节点6388已从集群中移除
redis-cli --cluster check 192.168.19.107:6381
//第二十二步:开始重新分配槽位
//分配的槽位个数:4096
//谁接收分配来的槽位:6381节点的ID标识符 填入:2d8bb525e25ecb239dbe059f8545eda64182e514
//谁分配出去槽位:6387节点的ID标识符 填入:ad03db99f539b78b0b57c37c529f9eb2f612bb18
//done
redis-cli --cluster reshard 192.168.19.107:6381
//第二十三步:检查集群情况 = 可见6387的key都分配出去给6381
redis-cli --cluster check 192.168.19.107:6381
//第二十四步:删除从节点6388
redis-cli --cluster del-node 192.168.19.107:6387 ad03db99f539b78b0b57c37c529f9eb2f612bb18
//第二十五步:检查集群情况 == 查看主节点6387已从集群中移除
redis-cli --cluster check 192.168.19.107:6381
//====================缩容结束==============================================
整个搭建流程
边栏推荐
- [shutter -- layout] stacked layout (stack and positioned)
- word样式和多级列表设置技巧(二)
- Create directories and subdirectories circularly
- Does MySQL have flush privileges
- intval md5绕过之[WUSTCTF2020]朴实无华
- 《富兰克林自传》修身
- 感动中国人物刘盛兰
- If you want to do a good job in software testing, you can first understand ast, SCA and penetration testing
- Perf performance debugging
- clickhouse笔记03-- Grafana 接入ClickHouse
猜你喜欢

2022.07.24 (lc_6124_the first letter that appears twice)

Alibaba cloud technology expert Qin long: reliability assurance is a must - how to carry out chaos engineering on the cloud?

阿里云技术专家秦隆:可靠性保障必备——云上如何进行混沌工程?

跌荡的人生

Leetcode 0133. clone diagram

word样式和多级列表设置技巧(二)

【AI4Code】《InferCode: Self-Supervised Learning of Code Representations by Predicting Subtrees》ICSE‘21

【OpenCV 例程 300篇】239. Harris 角点检测之精确定位(cornerSubPix)

Clickhouse notes 03-- grafana accesses Clickhouse

零基础学习CANoe Panel(13)—— 滑条(TrackBar )
随机推荐
Shell Basics (exit control, input and output, etc.)
艰辛的旅程
迁移PaloAlto HA高可用防火墙到Panorama
Table partition of MySQL
[high concurrency] deeply analyze the execution process of worker threads in the thread pool through the source code
阿里云技术专家秦隆:可靠性保障必备——云上如何进行混沌工程?
485 communication (detailed explanation)
Use of hystrix
Create directories and subdirectories circularly
perf 性能调试
【OpenCV 例程 300篇】239. Harris 角点检测之精确定位(cornerSubPix)
Experimental reproduction of image classification (reasoning only) based on caffe resnet-50 network
Alibaba cloud technology expert Qin long: reliability assurance is a must - how to carry out chaos engineering on the cloud?
【AI4Code】《CoSQA: 20,000+ Web Queries for Code Search and Question Answering》 ACL 2021
2022.07.24(LC_6126_设计食物评分系统)
What does the software testing process include? What are the test methods?
使用vsftpd服务传输文件(匿名用户认证、本地用户认证、虚拟用户认证)
想要做好软件测试,可以先了解AST、SCA和渗透测试
零基础学习CANoe Panel(16)—— Clock Control/Panel Control/Start Stop Control/Tab Control
什么是CI/CD?