docker搭建redis集群模式

2023-05-16

目录

  • docker 安装redis
    • 1.创建redis.conf
      • 开启redis验证(开启密码)
      • 允许redis外地连接
      • 后台启动
      • 开启redis持久化
    • 2.启动redis容器
    • 3.进入容器
  • redis集群3主3从
    • 1.新建6个redis容器
    • 2.构建主从关系
    • 3.查询集群信息
    • 4.主从扩容
    • 5.主从缩容

docker 安装redis

1.创建redis.conf

开启redis验证(开启密码)

requirepass 123456

允许redis外地连接

注释掉 # bind 127.0.0.1

后台启动

daemiomze no

将daemonize yes注释起来或者daemonize no设置,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败

开启redis持久化

appendonly yes

2.启动redis容器

docker run -p 6379:6379 --name myredis --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf

3.进入容器

docker exec -it myredis /bin/bash

redis-cli进入操作界面

redis集群3主3从

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

2.构建主从关系

进入容器:

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

(127.0.0.1)主机ip

redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6385 127.0.0.1:6384 127.0.0.1:6386 --cluster-replicas 1

(172.17.48.78)主机ip不行

redis-cli --cluster create 172.17.48.78:6381 172.17.48.78:6382 172.17.48.78:6383 172.17.48.78:6384 172.17.48.78:6385 172.17.48.78:6386 --cluster-replicas 1

–cluster-replicas 1 为每一个master创建一个slave结点

image-20230228154729734

image-20230228154741033

3.查询集群信息

进入界面

redis-cli -p 6381

查询info

cluster info

image-20230228155047212

cluster nodes

image-20230228155122962

检查数据

 redis-cli --cluster check 127.0.0.1:6381

image-20230228200810597

停止redis-node-1发现,从结点变为主结点

image-20230228201450382

重新启动redis-node-1,变为从结点

image-20230228201839783

4.主从扩容

docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data  redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387

docker run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data  redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

image-20230228202648657

进入7号机

docker exec -it redis-node-7 bash

加入集群

redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6381

image-20230228203434802

查看加入情况

 redis-cli --cluster check 127.0.0.1:6381

image-20230228203600145

没有分配槽位

重新分配槽号

redis-cli --cluster reshard 127.0.0.1:6381

image-20230228203827853

16384/4 = 4096

image-20230228204144414

槽位会将之前的分别分给新的结点

增加从机

redis-cli --cluster add-node 127.0.0.1:6388 127.0.0.1:6387 --cluster-slave --cluster-master-id 2973761cb8b5af591c4601c715aa98022ffabacb

2973761cb8b5af591c4601c715aa98022ffabacb是主机6387的编号

image-20230228204731273

redis-cli --cluster check 127.0.0.1:6381

image-20230228204757694

5.主从缩容

先去出从结点的6388

redis-cli --cluster del-node 127.0.0.1:6388 dc2a65d1a3a20f56a781c1f51930333b71dd5684

image-20230228205557766

image-20230228205630245

重新分配槽位

redis-cli --cluster reshard 127.0.0.1:6381

image-20230228210204063

image-20230228210257164

从集群中删除

redis-cli --cluster del-node 127.0.0.1:6387 2973761cb8b5af591c4601c715aa98022ffabacb

image-20230228210512523

image-20230228210538864

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker搭建redis集群模式 的相关文章

随机推荐

  • XML和JSON

    XML 简介 xml是什么 XML是一种可扩展标记语言 Extensible Markup Language xff0c 它是一种用于在计算机网络上进行数据传输的标准格式 XML使用标记来标识数据 xff0c 并且可以自定义标记 xff0c
  • STM32单片机蜂鸣器实验

    蜂鸣器可以分为两种 xff1a 有源蜂鸣器与无源蜂鸣器 xff0c 这里的 源 指的是有没有自带震荡电路 xff0c 有源的蜂鸣器自带有震荡电路 xff0c 通电的瞬间就会发出声音 xff1b 而无源的蜂鸣器 xff0c 需要提供一个2 5
  • JVM虚拟机

    JVM 1 JVM 概述 x1f6b4 x1f6b4 x1f6b2 x1f6b4 虚拟机 xff08 Virtual Machine xff09 是一台虚拟的计算机 VMware属于系统虚拟机 xff0c 是对物理计算机的仿真 Java虚拟
  • 树莓派桌面WIFI图标消失,树莓派黑屏can‘t currently show the desktop

    方法一 xff1a 重装镜像 方法二 xff1a 找个树莓派显示器终端输入这行代码 sudo apt install wpasupplicant wpagui libengine pkcs11 openssl 转载B站视频 xff1a 完美
  • cuda10.1+cudnn10.1+tensorflow2.2.0+pytorch1.7.1下载安装及配置

    一 cuda及cudnn下载 1 查看自己电脑是否支持GPU 方法 xff1a 鼠标移动到此电脑 xff0c 点击鼠标右键 xff0c 依次选择属性 设备管理器 显示适配器有以下图标 xff08 NVIDIA xff09 即可安装GPU x
  • C语言:strtok()函数简单用法

    strtok函数 切割字符串 第一个参数指定一个字符串 xff0c 它包含了0个或者多个由第二个参数 xff08 字符串 xff09 中的一个或多个分隔符分割的标记 strtok函数找到第一个参数中的下一个标记 xff0c 并将其用 39
  • ESP32之FreeRTOS--任务的创建和运行

    文章目录 前言一 创建任务和删除函数1 xTaskCreate 2 xTaskCreateStatic 3 xTaskCreateRestricted 4 vTaskDelete 二 任务函数和任务控制块TCB1 任务函数模板2 TCB 三
  • 如何将本地项目上传到gitee

    如何将本地项目上传到gitee 第一步 xff1a 首先你要有一个gitee仓库 新建仓库 填写仓库信息 xff1a 如图 第二步 xff1a 将创建好的仓库 xff0c pull xff08 拉取 xff09 到本地 通过git 命令 把
  • go语言操作es

    目录 go语言操作es解决golang使用elastic连接elasticsearch时自动转换连接地址初始化数据创建结构体方式字符串方式 xff1a 查找修改删除查找 集群搭建配置文件修改 go语言操作es go get github c
  • Context介绍

    目录 Context设计原理默认上下文取消信号传值方法小结 Context 上下文 context Context Go 语言中用来设置截止日期 同步信号 xff0c 传递请求相关值的结构体 上下文与 Goroutine 有比较密切的关系
  • 将视频转成ROS的bag包

    执行转化命令 python2 mp4 2 bag py lane video3 mp4 out camera bag 循环播放图片 xff0c 并重命名成自己需要的话题名 rosbag play l out camera bag camer
  • beego介绍(一)

    目录 beego 的 MVC 架构介绍参数配置默认配置解析不同级别的配置多个配置文件支持环境变量配置系统默认参数基础配置App 配置Web配置监听配置Session配置Log配置 路由设置基础路由基本 GET 路由基本 POST 路由注册一
  • TCP如何保证可靠性?

    TCP如何保证可靠性 xff1f TCP协议保证数据传输可靠性的方式主要有 xff1a 校验和 序列号 确认应答 超时重传 连接管理 流量控制 拥塞控制 1 校验和 计算方式 xff1a 在数据传输的过程中 xff0c 将发送的数据段都当做
  • 仿照java的jdk动态代理实现go语言动态代理

    仿照java的jdk动态代理实现go语言动态代理 通过学习java的jdk动态代理和Cglib动态代理 xff0c 仿照jdk动态代理用go实现了一个简单的动态代理 结构型模式 代理模式 代理模式中分为静态代理和动态代理 静态代理需要在编译
  • golang设计模式——装饰器模式

    装饰器模式 装饰器模式 xff1a 动态地给一个对象添加一些额外的职责 xff0c 就增加功能来说 xff0c 装饰模式比生成子类更为灵活 UML类图 xff1a 分析 首先我们需要理解 xff0c 为什么组合优于继承 xff1f 继承有诸
  • GoLang之unsafe分析

    GoLang之unsafe 目录 GoLang之unsafe1 前言2 指针类型转换3 指针运算4 获取大小和偏移5 关于string 1 前言 开发中 xff0c byte类型和string类型需要互相转换的场景并不少见 xff0c 直接
  • Go实现分布式锁

    Go分布式锁 目录 Go分布式锁进程内加锁trylock基于 redis 的 setnx基于 zk基于 etcdredlock如何选择 在单机程序并发或并行修改全局变量时 xff0c 需要对修改行为加锁以创造临界区 为什么需要加锁呢 xff
  • Golang实习蓝湖二面

    蓝湖二面 自我介绍 问题 casbin的策略 ACL RBAB ABAC 他们的区别和应用 JWT的实现 JWT和传统的token有什么区别 三次握手和四次挥手 time wait 为什么需要等待2MSL 什么是完全二叉树 完全二叉树有什么
  • export、import、commit、save、load的区别

    目录 1 docker export 和 docker import2 docker commit3 docker save 和 docker load 1 docker export 和 docker import docker expo
  • docker搭建redis集群模式

    目录 docker 安装redis1 创建redis conf开启redis验证 开启密码 允许redis外地连接后台启动开启redis持久化 2 启动redis容器3 进入容器 redis集群3主3从1 新建6个redis容器2 构建主从