docker完成redis 三主三从

2024-01-07 09:36
文章标签 docker redis 完成 三主三

本文主要是介绍docker完成redis 三主三从,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 关闭防火墙+启动docker后台服务
  • 新建6个docker容器redis实例
    • 创建并运行docker容器实例
  • 进入容器redis-node-1并为6台机器构建集群关系
  • 链接进入6381作为切入点,查看集群状态
  • 主从容错切换迁移案例
      • 容错切换迁移
  • 主从扩容案例
      • 为主节点6387分配从节点6388
      • 主从缩容案例

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

systemctl start docker

新建6个docker容器redis实例

创建并运行docker容器实例

拉取一个redis

docker pull redis:6.0.8
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

在这里插入图片描述

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

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

进入docker容器后才能执行一下命令,且注意自己的真实IP地址
我的ip:192.168.196.100

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

–cluster-replicas 1 表示为每个master创建一个slave节点

链接进入6381作为切入点,查看集群状态

redis-cli -p 6381cluster infocluster nodes

在这里插入图片描述
在这里插入图片描述

主从容错切换迁移案例

启动6机构成的集群并通过exec进入,加入参数-c,优化路由

 redis-cli -p 6381 -c

对6381新增两个key

set k1 v1 
set k2 v1

在这里插入图片描述
查看集群信息

redis-cli --cluster check 192.168.196.100:6381

在这里插入图片描述

容错切换迁移

主6381和从机切换,先停止主机6381,6381主机停了,对应的真实从机上位,6381作为1号主机分配的从机以实际情况为准,具体是几号机器就是几号

停掉1号机

docker stop redis-node-1

在这里插入图片描述
进入二号机

docker exec -it redis-node-2 /bin/bash
redis-cli -p 6382 -ccluster nodes

在这里插入图片描述
在这里插入图片描述
先还原之前的3主3从
先启6381

docker start redis-node-1

再停 之前代替的我这里是6386

docker stop redis-node-6

在启动之前关的

docker start redis-node-6

这里的原因是因为要回到最初的样子,第一次关掉1号,在开启1号,1号会变成从机。如果要在让它变成主 ,需要把他的主机下了重启

查看集群状态

redis-cli --cluster check 192.168.196.100:6381

在这里插入图片描述

主从扩容案例

新建6387、6388两个节点+新建后启动+查看是否8节点

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

在这里插入图片描述
进入6387容器实例内部

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

将新增的6387节点(空槽号)作为master节点加入原集群

将新增的6387作为master节点加入集群
redis-cli --cluster add-node 自己实际IP地址:6387 自己实际IP地址:6381
6387 就是将要作为master新增节点
6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群

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

在这里插入图片描述
检查集群情况第1次

redis-cli --cluster check 真实ip地址:6381

redis-cli --cluster check 192.168.196.100:6381

在这里插入图片描述
重新分派槽号

命令:redis-cli --cluster reshard IP地址:端口号

redis-cli --cluster reshard 192.168.196.100:6381

在这里插入图片描述
在这里插入图片描述
看到这个 :要填的就是之前查的里面的id
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检查集群情况第2次

redis-cli --cluster check 真实ip地址:6381

redis-cli --cluster check 192.168.196.100:6381

在这里插入图片描述

为主节点6387分配从节点6388

命令:redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID

redis-cli --cluster add-node 192.168.196.100:6388 192.168.196.100:6387 --cluster-slave --cluster-master-id  6b444c9eae080fd8a186f5b34f7dc9a2e9eba110
-------这个是6387的编号,按照自己实际情况

主从缩容案例

将6388删除 从集群中将4号从节点6388删除
命令:redis-cli --cluster del-node ip:从机端口 从机6388节点ID

 
redis-cli --cluster del-node 192.168.196.100:6388 f91f2a5bc654917f121ff63feca01d4d8ed5ebb4

将6387的槽号清空,重新分配,本例将清出来的槽号都给6381

 redis-cli --cluster reshard 192.168.196.100:6381

将6387删除
命令:redis-cli --cluster del-node ip:端口 6387节点ID

redis-cli --cluster del-node 192.168.196.100:6387 e4781f644d4a4e4d4b4d107157b9ba8144631451

这篇关于docker完成redis 三主三从的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/579488

相关文章

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

Redis中使用布隆过滤器解决缓存穿透问题

一、缓存穿透(失效)问题 缓存穿透是指查询一个一定不存在的数据,由于缓存中没有命中,会去数据库中查询,而数据库中也没有该数据,并且每次查询都不会命中缓存,从而每次请求都直接打到了数据库上,这会给数据库带来巨大压力。 二、布隆过滤器原理 布隆过滤器(Bloom Filter)是一种空间效率很高的随机数据结构,它利用多个不同的哈希函数将一个元素映射到一个位数组中的多个位置,并将这些位置的值置

Lua 脚本在 Redis 中执行时的原子性以及与redis的事务的区别

在 Redis 中,Lua 脚本具有原子性是因为 Redis 保证在执行脚本时,脚本中的所有操作都会被当作一个不可分割的整体。具体来说,Redis 使用单线程的执行模型来处理命令,因此当 Lua 脚本在 Redis 中执行时,不会有其他命令打断脚本的执行过程。脚本中的所有操作都将连续执行,直到脚本执行完成后,Redis 才会继续处理其他客户端的请求。 Lua 脚本在 Redis 中原子性的原因

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

laravel框架实现redis分布式集群原理

在app/config/database.php中配置如下: 'redis' => array('cluster' => true,'default' => array('host' => '172.21.107.247','port' => 6379,),'redis1' => array('host' => '172.21.107.248','port' => 6379,),) 其中cl

docker-compose安装和简单使用

本文介绍docker-compose的安装和使用 新版docker已经默认安装了docker-compose 可以使用docker-compose -v 查看docker-compose版本 如果没有的话可以使用以下命令直接安装 sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-c

Redis的rehash机制

在Redis中,键值对(Key-Value Pair)存储方式是由字典(Dict)保存的,而字典底层是通过哈希表来实现的。通过哈希表中的节点保存字典中的键值对。我们知道当HashMap中由于Hash冲突(负载因子)超过某个阈值时,出于链表性能的考虑,会进行Resize的操作。Redis也一样。 在redis的具体实现中,使用了一种叫做渐进式哈希(rehashing)的机制来提高字典的缩放效率,避