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

使用Docker-Compose搭建Redis集群

1. 集群配置

  • 3主+3从

  • 由于仅用于测试,故我这里只用1台服务器进行模拟

redis列表

2.编写redis.conf

在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster

在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis-5,redis-6文件夹

mkdir -p /opt/docker/redis-cluster/{redis-1,redis-2,redis-3,redis-4,redis-5,redis-6}#创建持久化目录
mkdir -p /opt/docker/redis-cluster/redis-1/data
mkdir -p /opt/docker/redis-cluster/redis-2/data
mkdir -p /opt/docker/redis-cluster/redis-3/data
mkdir -p /opt/docker/redis-cluster/redis-4/data
mkdir -p /opt/docker/redis-cluster/redis-5/data
mkdir -p /opt/docker/redis-cluster/redis-6/data

3. 在每个redis-*文件夹下创建redis.conf文件,并写入如下内容:

cluster-enabled yes # 开启集群
cluster-config-file nodes.conf # 集群配置文件
cluster-node-timeout 5000 # 集群节点多少时间未响应视为该节点丢失
appendonly yes
port 6379 # redis监听端口
masterauth passwd123  #设置master节点密码
requirepass passwd123 #设置密码

注意:port值不能都为6379,根据上面redis列表设置的端口号,依次给redis-1 ~ redis-6设置6379~6384端口号

4.编写docker-compose.yml文件

这里直接使用daocloud提供的redis镜像地址daocloud.io/library/redis:6.0.4

在/root/redis-cluster文件夹下创建docker-compose.yml文件。

docker-compose.yml文件内容如下:

version: '3.1'
services:# redis1配置redis1:image: daocloud.io/library/redis:6.0.4container_name: redis-1restart: alwaysnetwork_mode: "host"volumes:- /opt/docker/redis-cluster/redis-1/data:/data- /opt/docker/redis-cluster/redis-1/redis.conf:/usr/local/etc/redis/redis.confcommand: ["redis-server", "/usr/local/etc/redis/redis.conf"]# redis2配置redis2:image: daocloud.io/library/redis:6.0.4container_name: redis-2restart: alwaysnetwork_mode: "host"volumes:- /opt/docker/redis-cluster/redis-2/data:/data- /opt/docker/redis-cluster/redis-2/redis.conf:/usr/local/etc/redis/redis.confcommand: ["redis-server", "/usr/local/etc/redis/redis.conf"]# redis3配置redis3:image: daocloud.io/library/redis:6.0.4container_name: redis-3restart: alwaysnetwork_mode: "host"volumes:- /opt/docker/redis-cluster/redis-3/data:/data- /opt/docker/redis-cluster/redis-3/redis.conf:/usr/local/etc/redis/redis.confcommand: ["redis-server", "/usr/local/etc/redis/redis.conf"]# redis4配置redis4:image: daocloud.io/library/redis:6.0.4container_name: redis-4restart: alwaysnetwork_mode: "host"volumes:- /opt/docker/redis-cluster/redis-4/data:/data- /opt/docker/redis-cluster/redis-4/redis.conf:/usr/local/etc/redis/redis.confcommand: ["redis-server", "/usr/local/etc/redis/redis.conf"]# redis5配置redis5:image: daocloud.io/library/redis:6.0.4container_name: redis-5restart: alwaysnetwork_mode: "host"volumes:- /opt/docker/redis-cluster/redis-5/data:/data- /opt/docker/redis-cluster/redis-5/redis.conf:/usr/local/etc/redis/redis.confcommand: ["redis-server", "/usr/local/etc/redis/redis.conf"]# redis6配置redis6:image: daocloud.io/library/redis:6.0.4container_name: redis-6restart: alwaysnetwork_mode: "host"volumes:- /opt/docker/redis-cluster/redis-6/data:/data- /opt/docker/redis-cluster/redis-6/redis.conf:/usr/local/etc/redis/redis.confcommand: ["redis-server", "/usr/local/etc/redis/redis.conf"]

启动容器,执行命令:

#启动容器
docker-compose -f xxx.yaml up -d

5.开启集群

随便找一个容器进入,这里我选择redis-1进入。 在进入容器后,输入如下命令开启集群:

redis-cli --cluster create 192.168.66.180:6379 \
192.168.66.180:6380 \
192.168.66.180:6381 \
192.168.66.180:6382 \
192.168.66.180:6383 \
192.168.66.180:6384 \
--cluster-replicas 1

出现下图即为成功。

6.测试

使用redis-cli命令,连接集群中任意节点。(随便找一台能ping通集群所在IP的电脑,这里我用的本机进行测试)

6.1 查看节点属性

redis-cli -c -h 192.168.66.180 -p 6379192.168.66.180:6379> cluster info

显示为如下图,即为集群健康状态

6.2 查看节点信息

cluster nodes

注意看图中的slave,master,myself等关键字。

6.3 插入一个值

192.168.66.180:6379> set test 'hello world'
-> Redirected to slot [6918] located at 192.168.66.180:6380
OK
192.168.66.180:6380> 

注意:这里根据切片自动切换到了该数据分片所在的节点上,所以下面可以看到连接的节点变为了192.168.1.4:6380

get test

168.66.180:6379> set test 'hello world'
-> Redirected to slot [6918] located at 192.168.66.180:6380
OK
192.168.66.180:6380> get test
"hello world"
192.168.66.180:6380> 

这里因为就是在该数据所在分片上进行的查询,所以连接节点没有改变。

7.添加密码

7.1 编辑redis.conf文件

#为redis.conf文件添加如下配置。这里设置密码为123456
masterauth 123456
requirepass 123456

7.2 编辑docker-compose.yml文件

#为docker-compose.yml中每个容器添加如下配置:
environment:- REDISCLI_AUTH=123456

7.3 连接集群

redis-cli -c -h 192.168.66.180 -p 6379 -a 123456

相关文章:

使用Docker-Compose搭建Redis集群

1. 集群配置3主3从由于仅用于测试,故我这里只用1台服务器进行模拟redis列表2.编写redis.conf在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster 在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis…...

华为OD机试 -计算网络信号(Js)

计算网络信号 题目 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。 注意:网络信号可以绕过阻隔物 array[m][n] 的二维数组代表网格地图,array[i][j] = 0代表 i 行 j 列是空旷位置;array[i][j] = x(x 为正整数)代表 i 行 …...

【数据结构】————栈

文章目录前言栈是什么,栈的特点实现栈的基本操作栈的相关操作声明1.创建栈2.对栈进行初始化3.销毁栈4.判断栈是否为空5.压栈操作6.删除栈顶元素7.取出栈顶元素8.计算栈内存放多少个数据总结前言 本文主要讲述特殊的线性表——栈: 栈是什么,栈…...

从零编写linux0.11 - 第十一章 可执行文件

从零编写linux0.11 - 第十一章 可执行文件 编程环境:Ubuntu 20.04、gcc-9.4.0 代码仓库:https://gitee.com/AprilSloan/linux0.11-project linux0.11源码下载(不能直接编译,需进行修改) 本章目标 本章会加载并运行…...

Win10上通过nginx代理配置远程非445端口SMB

引言 家里架了一个SMB文件服务器,想要远程访问,开了445端口,但仅限某些特殊网络可以远程访问,其他网络全部拒绝445端口,因此网上找了很多将Win10的SMB指向别的端口的教程,但所有教程均使用环回网卡解决&am…...

Allegro如何快速清除多余的规则设置操作指导

Allegro如何快速清除多余的规则设置操作指导 在用Allegro做PCB设计的时候,会给PCB设置一些规则,在PCB设计完成之后,可能会有一些没有使用到的规则,如下图 Physical规则中的45OHM的规则是多余的 单独某个规则可以直接在规则管理器中删除,如果比较多可以用下面方法批量删除…...

ROS2 入门应用 引用自定义消息(Python)

ROS2 入门应用 引用自定义消息(Python)1. 查看自定义消息2. 修改话题发布3. 修改话题订阅4. 修改依赖关系5. 编译和运行1. 查看自定义消息 引用在《ROS2 入门应用 创建自定义接口》中自定义的消息Sphere.msg ros2 interface show tutorial_interfaces/…...

SmS-Activate一款好用的短信验证码接收工具

前言 有些国外应用在使用应用上的功能时需要注册账号,由于某种不可抗因素,我们的手机号一般不支持注册,接收不到信息验证码,于是我们可以使用SmS-Activate提供的服务,使用$实现我们的需求(大概一次验证1-5…...

SpringBoot+Elasticsearch按日期实现动态创建索引(分表)

😊 作者: 一恍过去💖 主页: https://blog.csdn.net/zhuocailing3390🎊 社区: Java技术栈交流🎉 主题: SpringBootElasticsearch按日期实现动态创建索引(分表)⏱️ 创作时间&…...

Terraform基础入门 (Infrastructure as Code)

文章目录前言介绍Terraform 术语Terraform 如何工作关于provider安装开启本地缓存demo1(dockernginx)demo2(dockerzookeeperkafka)参考资料前言 像写代码一样管理基础设施。 Terraform 使用较为高级的配置文件语法来描述基础设施,这个特性让你对配置文件进行版本化…...

Redis内存回收

Redis 内存回收 Redis之所以性能很强&#xff0c;最主要的原因是基于内存存储&#xff0c;然而单节点的Redis其内存大小不宜过大&#xff0c;会影响持久化或主从同步性能 可以通过修改配置文件来设置Redis的最大内存 maxmemory <bytes>当内存达到上限时&#xff0c;就…...

ROS2 入门应用 引用自定义消息(C++)

ROS2 入门应用 引用自定义消息&#xff08;C&#xff09;1. 查看自定义消息2. 修改话题发布3. 修改话题订阅4. 修改依赖关系5. 修改编译信息6. 编译和运行1. 查看自定义消息 引用在《ROS2 入门应用 创建自定义接口》中自定义的消息Sphere.msg ros2 interface show tutorial_i…...

Spring中的数据校验

数据校验基础 参考&#xff1a; Java Bean Validation 规范 Spring对Bean Validation的支持 Spring定义了一个接口org.springframework.validation.Validator&#xff0c;用于应用相关的对象的校验器。 这个接口完全从基础设施或者上下文中脱离的&#xff0c;这意味着它没有…...

python批量翻译excel表格中的英文

python批量翻译excel表格中的英文需求背景主要设计分析具体实现表格操作请求百度翻译api多线程控制台显示进度完整源码需求背景 女朋友的论文需要爬取YouTube视频热评&#xff0c;但爬下来的都是外文。 主要设计 读取一个表格文件&#xff0c;获取需要翻译的文本 使用百度翻译…...

基于SSM框架的RBAC权限系统设计与 实现

基于SSM框架的RBAC权限系统设计与 实现 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景…...

目标检测各常见评价指标详解

注&#xff1a;本文仅供学习&#xff0c;未经同意请勿转载 说明&#xff1a;该博客来源于xiaobai_Ry:2020年3月笔记 对应的PDF下载链接在&#xff1a;待上传 目录 常见的评价指标 准确率 &#xff08;Accuracy&#xff09; 混淆矩阵 &#xff08;Confusion Matrix&#xff…...

深入讲解Kubernetes架构-控制器

在机器人技术和自动化领域&#xff0c;控制回路&#xff08;Control Loop&#xff09;是一个非终止回路&#xff0c;用于调节系统状态。这是一个控制环的例子&#xff1a;房间里的温度自动调节器。当你设置了温度&#xff0c;告诉了温度自动调节器你的期望状态&#xff08;Desi…...

Urho3D本地化 国际化

本地化子系统提供了创建多语言应用程序的简单方法。 初始化 在使用子系统之前&#xff0c;需要加载本地化字符串集合。通常的做法是在应用程序启动时执行此操作。可以加载多个集合文件&#xff0c;每个集合文件只能定义一种或多种语言。例如&#xff1a; Localization* l10n…...

千锋教育嵌入式物联网教程之系统编程篇学习-04

目录 alarm函数 raise函数 abort函数 pause函数 转折点 signal函数 可重入函数 信号集 sigemptyset() sigfillset sigismember()​ sigaddset()​ sigdelset()​ 代码讲解 信号阻塞集 sigprocmask()​ alarm函数 相当于一个闹钟&#xff0c;默认动作是终止调用alarm函数的进…...

【运维】什么是 DevOps?

文章目录什么是 DevOps&#xff1f;如何实现 DevOpsDevOps工作原理&#xff1a; DevOps生命周期DevOps 文化DevOps 工具&#xff1a;构建 DevOps 工具链DevOps 和云原生开发什么是 DevSecOps&#xff1f;DevOps 和站点可靠性工程 (SRE)什么是 DevOps&#xff1f; DevOps 通过结…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...