docker之redis集群部署
docker之redis集群部署
PART01: 3主3从redis集群部署
3主3从redis集群配置
- 关闭防火墙,启动docker服务
如果报以下错误,应该是docker 服务没有启动,可以执行下述命令将启动docker服务

systemctl start docker
- 创建6个redis容器实例


代码
点击查看代码
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 6381
docker 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 6382
docker 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 6383
docker 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 6384
docker 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 6385
docker 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 6386
相关命令的分布解释
如果创建成功 通过docker ps可以查看到下图

3.以任何一个容器进入,为六台机器进行集群关系的构建。此处进入redis-node-1容器, 为六台机器进行集群关系的构建
进入容器命令
docker exec -it redis-node-1 /bin/bash
进入容器之后,构建主从关系。
redis-cli --cluster create 192.168.111.147:6381 192.168.111.147:6382 192.168.111.147:6383 192.168.111.147:6384 192.168.111.147:6385 192.168.111.147:6386 --cluster-replicas 1
注意,进入docker容器后才能执行一下命令,且注意自己的真实IP地址;--cluster-replicas 1 表示为每个master创建一个slave节点



通过键入yes等待分配完成,显示所有的16384个slot全部分配完成。
4.链接进入6381作为切入点,进行对于集群分配以及集群状态的查看
reids-cli -p 6381cluster infocluster nodes


可以看到node-1 为主节点,id结尾为c8010 而作为从节点的node-5 挂在了node-1上 为node-1的从节点,实现了如下所示的节点主从分配
Master ======> slave
node-1 ======> node-5
node-2 ======> node-6
node-3 ======> node-4
5.单节点进入存数据error错误解决以及路由正确配饰
当配置好redis3主3从集群,通过单节点进入某一个容器并进行相关数据的存储的时候,容易发生存取数据失败的情况

原因:hash槽分段的存在,使得数据key进行hash计算后,不能保证全部落到现在访问的容器范围之内;当前进入的节点是6381,槽点范围为0-5460,k1经过hash计算后得到的槽点为12706超过了redis-node-1的槽点范围,且由于是单节点进入访问,所以路由不允许切换,故显示存储失败;
redis-cli -p 6381 -c
还是通过redis-node-1进行操作,但是通过添加参数 -c 表示以集群的方式进行进入,此时,优化了路由设置,使得3主3从作为一个集群让外界访问,存储数据

通过
redis-cli --cluster check 你的ip:你的port
可以查看当前集群的信息

通过get key 可以获取到存的数据

PART02: 3主3从redis集群容错切换迁移
- 主6381与从机切换 先停止6381
| 主机停机,对应的从机上位
docker之redis集群部署的更多相关文章
- Docker | redis集群部署实战
前面已经简单熟悉过redis的下载安装使用,今天接着部署redis集群(cluster),简单体会一下redis集群的高可用特性. 环境准备 Redis是C语言开发,安装Redis需要先将Redis的 ...
- docker 实现redis集群搭建
摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Re ...
- Docker Swarm redis 集群搭建
Docker Swarm redis 集群搭建 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docke ...
- 基于Docker的redis集群搭建
Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html 基于Docker搭建Redis集群 环境:6个节点,三主三从 制作Redis镜 ...
- Redis集群部署及命令
一.简介 redis集群是一个无中心的分布式Redis存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用.可扩展等问题. redis集群提供了以下两个好处: 将数据自动切分(split) ...
- Redis集群部署-windows
Redis集群部署-windows 前言 为了能体验一下部署Redis集群是一种怎么样的体验,所一边做一边写了这篇记录. 1.准备 从这里下载windows服务端 https://github.com ...
- Redis集群部署文档(Ubuntu15.10系统)
Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...
- Redis集群部署3.0
我用的Mac的终端 ------------------------- 1.Redis简介 centos(5.4) Redis是一个key-value存储系统.和Memcached类似,但是解决了断 ...
- Docker学习-Kubernetes - 集群部署
Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...
- Redis集群部署与维护
Redis集群部署与维护 目录: 一. 集群架构 二. 集群部署 1. 创建redis-cluster目录 2. 编译redis 3. 编辑redis配置文件 4. 配置redis集群 5. redi ...
随机推荐
- 区间dp专题小结
区间DP是一类在区间上进行动态规划的最优问题,一般是根据问题设出一个表示状态的 dp,可以是二维的也可以是三维的,一般情况下为二维.然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左 ...
- 8、SpringBoot 事务
系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...
- 《3D编程模式》写书-第5次记录
大家好,这段时间我完成了对初稿的第一轮修改,即将开始第二轮的修改 这里是所有的的写书记录: <3D编程模式>写书记录 本轮修改主要进行了下面的修改: 修改错误 修改了UML错误.文字错误. ...
- 机器学习-决策树系列-决策树-ID3算法 -C4.5算法-26
目录 1. 决策树 2. 举个例子 计算信息增益 3. C4.5算法 1. 决策树 决策树是属于有监督机器学习的一种,起源非常早,符合直觉并且非常直观, 模型生成:通过大量数据生成一颗非常好的树,用这 ...
- 小白学正则表达式之 regexp
1. 正则表达式介绍 正则表达式是程序文本处理常用的模板模式,按照解析正则表达式的引擎可将正则表达式分为 POSIX 基础正则表达式(Basic regular expression,BRE) 引擎和 ...
- centos7 docker配置防火墙firewalld
docker防火墙使用的是底层iptables,封装后的firewalld默认不生效 如果想要使用firewalld,需要做以下调整: 让firewalld移除DOCKER-USER并新建一个 # R ...
- Java21 + SpringBoot3集成easy-captcha实现验证码显示和登录校验
目录 前言 相关技术简介 easy-captcha 实现步骤 引入maven依赖 定义实体类 定义登录服务类 定义登录控制器 前端登录页面实现 测试和验证 总结 附录 使用Session缓存验证码 前 ...
- SV 数据类型-2
动态数组 数组定义的时候不用给定数组元素个数 动态数组实例 例1 队列
- [转帖]NET Framework 版本和依赖关系
https://learn.microsoft.com/zh-cn/dotnet/framework/migration-guide/versions-and-dependencies 每个版本的 . ...
- [转帖]MySQL 8.2.0 GA
https://cloud.tencent.com/developer/article/2353798 MySQL新的进化版8.2.0于2023年10月25日发行,让我们一起快速浏览一下该版本发生哪些 ...