docker之redis集群部署


PART01: 3主3从redis集群部署

3主3从redis集群配置
  1. 关闭防火墙,启动docker服务

    如果报以下错误,应该是docker 服务没有启动,可以执行下述命令将启动docker服务

  • systemctl start docker
  1. 创建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 6381

  • cluster info

  • cluster 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集群部署的更多相关文章

  1. Docker | redis集群部署实战

    前面已经简单熟悉过redis的下载安装使用,今天接着部署redis集群(cluster),简单体会一下redis集群的高可用特性. 环境准备 Redis是C语言开发,安装Redis需要先将Redis的 ...

  2. docker 实现redis集群搭建

    摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Re ...

  3. Docker Swarm redis 集群搭建

    Docker Swarm redis 集群搭建 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docke ...

  4. 基于Docker的redis集群搭建

    Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html 基于Docker搭建Redis集群 环境:6个节点,三主三从 制作Redis镜 ...

  5. Redis集群部署及命令

    一.简介 redis集群是一个无中心的分布式Redis存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用.可扩展等问题. redis集群提供了以下两个好处: 将数据自动切分(split) ...

  6. Redis集群部署-windows

    Redis集群部署-windows 前言 为了能体验一下部署Redis集群是一种怎么样的体验,所一边做一边写了这篇记录. 1.准备 从这里下载windows服务端 https://github.com ...

  7. Redis集群部署文档(Ubuntu15.10系统)

    Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...

  8. Redis集群部署3.0

    我用的Mac的终端 ------------------------- 1.Redis简介 centos(5.4)  Redis是一个key-value存储系统.和Memcached类似,但是解决了断 ...

  9. Docker学习-Kubernetes - 集群部署

    Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...

  10. Redis集群部署与维护

    Redis集群部署与维护 目录: 一. 集群架构 二. 集群部署 1. 创建redis-cluster目录 2. 编译redis 3. 编辑redis配置文件 4. 配置redis集群 5. redi ...

随机推荐

  1. 区间dp专题小结

    区间DP是一类在区间上进行动态规划的最优问题,一般是根据问题设出一个表示状态的 dp,可以是二维的也可以是三维的,一般情况下为二维.然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左 ...

  2. 8、SpringBoot 事务

    系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...

  3. 《3D编程模式》写书-第5次记录

    大家好,这段时间我完成了对初稿的第一轮修改,即将开始第二轮的修改 这里是所有的的写书记录: <3D编程模式>写书记录 本轮修改主要进行了下面的修改: 修改错误 修改了UML错误.文字错误. ...

  4. 机器学习-决策树系列-决策树-ID3算法 -C4.5算法-26

    目录 1. 决策树 2. 举个例子 计算信息增益 3. C4.5算法 1. 决策树 决策树是属于有监督机器学习的一种,起源非常早,符合直觉并且非常直观, 模型生成:通过大量数据生成一颗非常好的树,用这 ...

  5. 小白学正则表达式之 regexp

    1. 正则表达式介绍 正则表达式是程序文本处理常用的模板模式,按照解析正则表达式的引擎可将正则表达式分为 POSIX 基础正则表达式(Basic regular expression,BRE) 引擎和 ...

  6. centos7 docker配置防火墙firewalld

    docker防火墙使用的是底层iptables,封装后的firewalld默认不生效 如果想要使用firewalld,需要做以下调整: 让firewalld移除DOCKER-USER并新建一个 # R ...

  7. Java21 + SpringBoot3集成easy-captcha实现验证码显示和登录校验

    目录 前言 相关技术简介 easy-captcha 实现步骤 引入maven依赖 定义实体类 定义登录服务类 定义登录控制器 前端登录页面实现 测试和验证 总结 附录 使用Session缓存验证码 前 ...

  8. SV 数据类型-2

    动态数组 数组定义的时候不用给定数组元素个数 动态数组实例 例1 队列

  9. [转帖]NET Framework 版本和依赖关系

    https://learn.microsoft.com/zh-cn/dotnet/framework/migration-guide/versions-and-dependencies 每个版本的 . ...

  10. [转帖]MySQL 8.2.0 GA

    https://cloud.tencent.com/developer/article/2353798 MySQL新的进化版8.2.0于2023年10月25日发行,让我们一起快速浏览一下该版本发生哪些 ...