3主3从redis集群扩缩容配置案例说明

文章目录

  • 3主3从redis集群扩缩容配置案例说明
    • 关闭防火墙+启动docker后台服务
    • 新建6个docker实例
    • 进入容器redis-node-1并为6台机器构建集群关系
    • 以6381作为切入点,查看集群状态
    • 主从容错切换迁移案例
    • 查看集群信息cluster check

关闭防火墙+启动docker后台服务

systemctl strt docker

新建6个docker实例

大规模的扩缩容,如何快速同时启动,docker提供了瞬间可达

docker run -d --name redis-node-1 --net host --privileged=true \
-v /data/redis/share/redis-node-1:/data \
redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381docker run -d --name redis-node-2 --net host --privileged=true \
-v /data/redis/share/redis-node-2:/data \
redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382docker run -d --name redis-node-3 --net host --privileged=true \
-v /data/redis/share/redis-node-3:/data \
redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383docker run -d --name redis-node-4 --net host --privileged=true \
-v /data/redis/share/redis-node-4:/data \
redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384docker run -d --name redis-node-5 --net host --privileged=true \
-v /data/redis/share/redis-node-5:/data \
redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385docker run -d --name redis-node-6 --net host --privileged=true \
-v /data/redis/share/redis-node-6:/data \
redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386docker ps

进入容器redis-node-1并为6台机器构建集群关系

docker exec -it redis-node-1 /bin/bashifconfig #查看ip 192.168.121.129redis-cli --cluster create 192.168.121.129:6381 192.168.121.129:6382 192.168.121.129:6383 192.168.121.129:6384 192.168.121.129:6385 192.168.121.129:6386 --cluster-replicas 1
# --cluster-replicas 1表示为每一个master创建一个slave结点

  • Performing hash slots allocation on 6 nodes…哈希槽对六个结点进行分配

  • M:表示主机器(master主人)

  • S:表示从机器 (slaves奴隶)

  • yes接受分配~分配成功

以6381作为切入点,查看集群状态

redis-cli -p 6381
cluster info
  • cluster info查看槽位
root@ubuntu:/data# redis-cli -p 6381
127.0.0.1:6381> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:415
cluster_stats_messages_pong_sent:422
cluster_stats_messages_sent:837
cluster_stats_messages_ping_received:417
cluster_stats_messages_pong_received:415
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:837
127.0.0.1:6381> cluster nodes
964043841e4c5519d3cde93cae6b32ebe5ba1830 192.168.121.129:6381@16381 myself,master - 0 1652346428000 1 connected 0-5460
702a95b6eeb02a9d01d38152d599fdf57c70cf0c 192.168.121.129:6386@16386 slave 447dba4f4813f9178d67e62488a4c4c5aba87635 0 1652346430721 3 connected
125e88db573553be475175cd604eb9887506a121 192.168.121.129:6385@16385 slave cc788412e2b72c5a3ea3ba5cd9c80197a554382f 0 1652346429000 2 connected
cc788412e2b72c5a3ea3ba5cd9c80197a554382f 192.168.121.129:6382@16382 master - 0 1652346430000 2 connected 5461-10922
187c17cec8177135b6203328156bb7a7e73714d0 192.168.121.129:6384@16384 slave 964043841e4c5519d3cde93cae6b32ebe5ba1830 0 1652346429715 1 connected
447dba4f4813f9178d67e62488a4c4c5aba87635 192.168.121.129:6383@16383 master - 0 1652346428707 3 connected 10923-16383
127.0.0.1:6381> 

1,2,3三台机器是master;4,5,6三台机器是slave

1号主机挂4号,2号主机挂5号,3号挂6号,这个是随机分配的(为什么我的这莫巧我也不知道)

主从容错切换迁移案例

127.0.0.1:6381> set k1 vi
(error) MOVED 12706 192.168.121.129:6383
127.0.0.1:6381> set k1 v1
(error) MOVED 12706 192.168.121.129:6383
127.0.0.1:6381> set k2 v2
OK
127.0.0.1:6381> set k3 v3
OK
127.0.0.1:6381> set k4 v4
(error) MOVED 8455 192.168.121.129:6382
127.0.0.1:6381> set k5 v5
(error) MOVED 12582 192.168.121.129:6383
127.0.0.1:6381> set k6 v6
OK

在集群中这样用的话会失效,不能用单机版连接命令

防止路由失效加参数-c并新增两个key

redis-cli -p 6381 -c

演示

root@ubuntu:/data# redis-cli -p 8381 -c
Could not connect to Redis at 127.0.0.1:8381: Connection refused
not connected> exit
root@ubuntu:/data# redis-cli -p 6381 -c
127.0.0.1:6381> flushall
OK
127.0.0.1:6381> set k1 v1
-> Redirected to slot [12706] located at 192.168.121.129:6383
OK
192.168.121.129:6383> set k2 v2
-> Redirected to slot [449] located at 192.168.121.129:6381
OK
192.168.121.129:6381> set k3 v3
OK
192.168.121.129:6381> set k4 v4
-> Redirected to slot [8455] located at 192.168.121.129:6382
OK
192.168.121.129:6382> set k5 v5
-> Redirected to slot [12582] located at 192.168.121.129:6383
OK
192.168.121.129:6383> set k6 v6
-> Redirected to slot [325] located at 192.168.121.129:6381
OK

即5号和6号slave不是在1号机,越界了,可以用-c集群化。会跳转到对应的redis

查看集群信息cluster check

redis-cli --cluster check 192.168.121.129:6381

将第一台机器停掉

docker stop redis-node-1

此时1号宕机了,我们从二号开始作为突破

我们查看集群状态

127.0.0.1:6382> cluster nodes
187c17cec8177135b6203328156bb7a7e73714d0 192.168.121.129:6384@16384 master - 0 1652349890155 7 connected 0-5460
125e88db573553be475175cd604eb9887506a121 192.168.121.129:6385@16385 slave cc788412e2b72c5a3ea3ba5cd9c80197a554382f 0 1652349891169 2 connected
cc788412e2b72c5a3ea3ba5cd9c80197a554382f 192.168.121.129:6382@16382 myself,master - 0 1652349890000 2 connected 5461-10922
702a95b6eeb02a9d01d38152d599fdf57c70cf0c 192.168.121.129:6386@16386 slave 447dba4f4813f9178d67e62488a4c4c5aba87635 0 1652349892186 3 connected
447dba4f4813f9178d67e62488a4c4c5aba87635 192.168.121.129:6383@16383 master - 0 1652349889000 3 connected 10923-16383
964043841e4c5519d3cde93cae6b32ebe5ba1830 192.168.121.129:6381@16381 master,fail - 1652349736906 1652349733000 1 disconnected

结点1还活着,但是显示得是fail,此时6384上位,显示master,完成了集群迁移

我们将6381恢复过来,再看看集群信息

root@ubuntu:/mysql/mydata/mysql-slave/conf# docker start redis-node-1
redis-node-1
root@ubuntu:/mysql/mydata/mysql-slave/conf# docker ps |grep redis
3b80844ec9cd   redis:6.0.8             "docker-entrypoint.s…"   About an hour ago   Up About an hour                                                                      redis-node-6
1ed04c474cbf   redis:6.0.8             "docker-entrypoint.s…"   About an hour ago   Up About an hour                                                                      redis-node-5
fa6e8cac6376   redis:6.0.8             "docker-entrypoint.s…"   About an hour ago   Up About an hour                                                                      redis-node-4
de3446725228   redis:6.0.8             "docker-entrypoint.s…"   About an hour ago   Up About an hour                                                                      redis-node-3
c6cdf1fbc619   redis:6.0.8             "docker-entrypoint.s…"   About an hour ago   Up About an hour                                                                      redis-node-2
b6924b43bca4   redis:6.0.8             "docker-entrypoint.s…"   About an hour ago   Up 8 seconds                                                                          redis-node-1

此时已经恢复过来了,我们查看节点状态

root@ubuntu:/data# redis-cli -p 6381 -c
127.0.0.1:6381> cluster nodes
125e88db573553be475175cd604eb9887506a121 192.168.121.129:6385@16385 slave cc788412e2b72c5a3ea3ba5cd9c80197a554382f 0 1652350295591 2 connected
187c17cec8177135b6203328156bb7a7e73714d0 192.168.121.129:6384@16384 master - 0 1652350294577 7 connected 0-5460
964043841e4c5519d3cde93cae6b32ebe5ba1830 192.168.121.129:6381@16381 myself,slave 187c17cec8177135b6203328156bb7a7e73714d0 0 1652350293000 7 connected
cc788412e2b72c5a3ea3ba5cd9c80197a554382f 192.168.121.129:6382@16382 master - 0 1652350293000 2 connected 5461-10922
447dba4f4813f9178d67e62488a4c4c5aba87635 192.168.121.129:6383@16383 master - 0 1652350292548 3 connected 10923-16383
702a95b6eeb02a9d01d38152d599fdf57c70cf0c 192.168.121.129:6386@16386 slave 447dba4f4813f9178d67e62488a4c4c5aba87635 0 1652350296602 3 connected

可见1号机器虽然活过来了,但是成为从结点,奴隶结点了

如果我们再把4号机停掉,给1号机器上位得机会,此时6381得1好机器依旧能回到主结点

02a95b6eeb02a9d01d38152d599fdf57c70cf0c 192.168.121.129:6386@16386 slave 447dba4f4813f9178d67e62488a4c4c5aba87635 0 1652350296602 3 connected


**可见1号机器虽然活过来了,但是成为从结点,奴隶结点了****如果我们再把4号机停掉,给1号机器上位得机会,此时6381得1好机器依旧能回到主结点**

3主3从redis集群扩缩容配置案例说明相关推荐

  1. Docker高级篇之Mysql主从复制、Redis集群扩容缩容配置案例详解

    Docker之Mysql主从复制.Redis集群扩容缩容配置案例 1. 安装mysql主从复制 1.1 新建主服务器容器实例3307 1.2 进入/mydata/mysql-master/conf目录 ...

  2. 2022-05-07 designs_集群扩缩容设计方案

    一.背景介绍 用户置备的基础设施场景(UPI)通过bootstrap阶段的安装部署流程后,已经具备了一个完整的ccos集群.集群规划可能是3个master节点0个worker节点,或者3个master ...

  3. Redis cluster集群扩容缩容原理

    1. Redis Cluster集群扩容 1.1 扩容原理 redis cluster可以实现对节点的灵活上下线控制 3个主节点分别维护自己负责的槽和对应的数据,如果希望加入一个节点实现扩容,就需要把 ...

  4. Redis集群搭建加Springboot配置

    引子 哨兵模式:一种集群,能够提高读请求的并发,但是容错方面有问题,如果master同步数据给slave的时候,master挂了,那个slave上的数据就没有master新,数据同步的1-2秒的数据会 ...

  5. Redis集群的三种配置方式案例

    前言 Redis有三种集群模式: 主从复制 哨兵(Sentinel) 集群(Cluster)

  6. redis集群实现(六) 容灾与宕机恢复

    2019独角兽企业重金招聘Python工程师标准>>> https://blog.csdn.net/sanwenyublog/article/details/53453085 转载于 ...

  7. TiDB+TiSpark部署--安装,扩缩容及升级操作

    作者: tracy0984 原文来源: https://tidb.net/blog/9dc6c38e 背景 随着业务的变更,可能经常会遇到TiDB数据库的TiKV或TIDB Server节点扩缩容的需 ...

  8. Docker学习(三):复杂软件安装-主从mysql及redis集群

    一.安装mysql主从复制 一主一从 #1.宿主机新建目录以及配置文件 mkdir -p /app/mysql/slave1/data /app/mysql/slave1/log /app/mysql ...

  9. redis集群扩容和缩容_redis集群cluster搭建,扩容缩容

    1.    概要说明 1.1.    概述 本文旨在说明平台部署环境搭建的过程和详细步骤说明,为后面系统部署提供清晰的参考依照. 以下搭建部署的环境,为一个小型的分布式集群环境.满足负载均衡和单点故障 ...

最新文章

  1. Django 发布时间格式化
  2. k8s的网络优化(metallb)
  3. 2011阿里巴巴程序设计公开赛 / 1002 Fruit Ninja
  4. leetcode842. 将数组拆分成斐波那契序列(回溯)
  5. 后台接收datetime_input上传date日期时间数据到后台报400怎么办?
  6. android 月牙动画,一加6月牙白版:可能是目前最漂亮的白色安卓旗舰
  7. sql server 2000 更改账户默认数据库
  8. OpenCV精进之路(十三):角点检测
  9. jqGrid复制表格数据到另外一张表中
  10. ABP源码分析五:ABP初始化全过程
  11. redux工作原理简单入门
  12. kepware怎么读modbus/tcp数据_第479期丨看看这国企9000+的面试题目;国产PLC工控板质量怎么样?...
  13. python当中df的用法_Pydf替代“df”命令检查不同颜色的磁盘使用情况
  14. 计算几何【套模板,推荐模板】 Separating Pebbles UVALive - 7461
  15. -bash: ulimit: max user processes: cannot modify limit: Operation not permitted问题的处理
  16. android 模拟xp,使用Bochs模拟器瞬间安卓变XP教程
  17. Tushare取数-历史行情/实时行情
  18. java 参考中文站
  19. 文件存储的实现-login登录案例3-SharedPreferences
  20. 用Java计算二月份有多少天

热门文章

  1. 【虚幻引擎UE】UE5 AR初体验之静态动态模型加载
  2. 微信小程序页面元素如何保存成图片
  3. 10个最佳价格行动交易模式
  4. 大盘趋势图强弱分析 通达信大盘多空指标公式 副图不加密
  5. css中单位px、pt、em和rem的区别
  6. java 发送邮件 outlook_JavaMail发送带图片正文的邮件,outlook等邮箱不显示的问题 | 学步园...
  7. 苹果超省电技巧分享,教你如何玩转你的iPhone 手机
  8. HZNUOJ 1588 最大值最小值
  9. 我们的23种设计模式(一)
  10. 【加密与解密】Openssl 生成的RSA秘钥如被C#使用解密