当前位置: 首页 > news >正文

Docker容器创建Redis主从集群

利用虚拟机中的三个Docker容器创建主从集群,容器信息:

容器名角色IP映射端口
r1master192.168.150.1017001
r2slave192.168.150.1017002
r3slave192.168.150.1017003

启动多个redis实例

新建一个docker-compose文件来构建主从集群:

文件内容:

version: "3.2"services:r1:image: rediscontainer_name: r1network_mode: "host"entrypoint: ["redis-server", "--port", "7001"]r2:image: rediscontainer_name: r2network_mode: "host"entrypoint: ["redis-server", "--port", "7002"]r3:image: rediscontainer_name: r3network_mode: "host"entrypoint: ["redis-server", "--port", "7003"]

上传到虚拟机的/root/redis目录下

移动到这个目录下

执行命令:

docker compose up -d

结果:

建立集群

通过命令建立集群关系:

# Redis5.0以前
slaveof <masterip> <masterport>
# Redis5.0以后
replicaof <masterip> <masterport>

有两种模式:

  • 永久生效:在redis.conf文件中利用slaveof命令指定master节点
  • 临时生效:直接利用redis-cli控制台输入slaveof命令,指定master节点

这里测试临时模式,先连接r2让其以r1为master

  # 连接r2
docker exec -it r2 redis-cli -p 7002
# 认r1主,也就是7001
slaveof 192.168.150.101 7001

然后连接r3让其以r1为master

# 连接r3
docker exec -it r3 redis-cli -p 7003
# 认r1主,也就是7001
slaveof 192.168.150.101 7001

连接r1查看集群状态

# 连接r1
docker exec -it r1 redis-cli -p 7001
# 查看集群状态
info replication

输出结果:

127.0.0.1:7001> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.150.101,port=7002,state=online,offset=42,lag=0
slave1:ip=192.168.150.101,port=7003,state=online,offset=42,lag=0
master_failover_state:no-failover
master_replid:12683467c1e8c3805281c12a6d7187ca3bb0bb73
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:42
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:42
127.0.0.1:7001>

可以看到,当前节点r1:7001的角色是master,有两个slave与其连接:

  • slave0port7002,也就是r2节点
  • slave1port7003,也就是r3节点

测试:

依次在r1r2r3节点上执行下面命令:

set num 123get num

结果:

可以发现:只有在r1这个节点上可以执行set命令(写操作),其它两个节点只能执行get命令(读操作)。也就是说读写操作已经分离了。

http://www.xdnf.cn/news/760789.html

相关文章:

  • 卢昌海 | 质量的起源
  • 基于FashionMnist数据集的自监督学习(生成式自监督学习VAE算法)
  • [蓝桥杯]螺旋折线
  • 2024 CKA模拟系统制作 | Step-By-Step | 8、题目搭建-创建 Ingress
  • win32相关(互斥体)
  • 大模型赋能低空经济:从技术突破到应用场景拓展
  • 【C语言练习】077. 理解C语言中的嵌入式编程
  • Python实例题:Python3实现图片转彩色字符
  • 【Hexo】4.Hexo 博客文章进行加密
  • python汉语编程,将关键字与文言文对应
  • Claude 4 升级:从问答助手到任务执行者 | AI大咖说
  • Python入门手册:类和对象
  • Spring是如何实现属性占位符解析
  • 如何下载python的第三方类库
  • Day 36训练
  • Linux epel-release 详解
  • 多线程——定时任务ScheduledThreadPoolExecutor用法
  • 深度学习---负样本训练
  • 字符串相关的方法有哪些?
  • 基于LLM的智能客服系统开发全流程:技术架构、落地挑战与行业实践
  • 智能体觉醒:AI开始自己“动手”了-自主进化开启任务革命时代
  • 【强化学习哲学 Day 1】Q-Learning - 在不确定中寻找确定
  • ​​技术深度解析:《鸿蒙5.0+:AI驱动的全场景功耗革命》​
  • 智慧交通设计方案
  • Docker安装mitproxy
  • Vue组件定义
  • 中国高分辨率高质量地面CO数据集(2013-2023)
  • C++:回调函数
  • duilib图片属性中corner属性九宫格拉伸说明
  • DQN和DDQN(进阶版)