Docker部署系列之Docker Compose安装Redis三主三从集群

总结/朱季谦

在日常开发或者编程当中,经常需要用到redis集群,若是按照传统的方式,一个机器一个机器搭建,难免过于繁琐,故而可以通过dock er-compose编排方式,快速搭建。我在搭建过程当中,将操作记录下来,方便以后需要搭建三主三从节点时,可以基于以前的成功经验,快速搭建起来。

一、环境准备

准备三台机器,在每台机器上,计划安装一个Redis主节点和一个Redis从节点。

机器Redis节点节点端口
192.168.31.130redis-master/redis-slave6379/6380
192.168.31.131redis-master/redis-slave6379/6380
192.168.31.132redis-master/redis-slave6379/6380

二、文件准备

2.1、创建Redis节点目录

分别在192.168.31.130、192.168.31.131、192.168.31.132机器上,执行以下命令,创建Redis主从节点文件目录——

for dir in redis-master/data redis-slave/data; do mkdir -p "/opt/docker/redis-cluster/$dir";done

2.2、创建节点配置文件redis.conf

分别在192.168.31.130、192.168.31.131、192.168.31.132机器上的/opt/docker/redis-cluster/redis-master/与/opt/docker/redis-cluster/redis-slave/目录下,创建一个redis.conf文件,文件内容包括以下属性——

port 6379 #指定 Redis 服务器监听的端口号,这是客户端与 Redis 服务器进行通信的端口。
save 900 1#在给定时间间隔内有多少次写操作时,Redis 将执行自动的快照(生成 RDB 文件)。
save 300 10
save 60 10000
dbfilename dump.rdb#指定生成的 RDB 文件的名称。
dir /data #指定持久化文件的存储目录。
appendonly yes #启用 AOF(Append-Only File)持久化模式。
appendfilename "appendonly.aof" #指定 AOF 文件的名称。
appendfsync everysec #控制 AOF 缓冲区的内容何时同步到硬盘。这里的选项 everysec 表示每秒同步一次
cluster-enabled yes #启用 Redis 集群功能。
cluster-config-file nodes.conf #指定保存集群拓扑信息的配置文件名。
cluster-node-timeout 5000 #设置节点间通信的超时时间,单位为毫秒。

快捷指令,直接在linux运行——

for dir in redis-master redis-slave; do if [ "$dir" == "redis-master" ]; thenport=6379elif [ "$dir" == "redis-slave" ]; thenport=6380fi
echo "port $port 
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data 
appendonly yes 
appendfilename "appendonly.aof" 
appendfsync everysec 
cluster-enabled yes 
cluster-config-file nodes.conf 
cluster-node-timeout 5000" > /opt/docker/redis-cluster/$dir/redis.conf;done

运行完成后,在/opt/docker/redis-cluster/redis-master/以及/opt/docker/redis-cluster/redis-slave/生成一个data目录和一个redis.conf文件——

image

redis.conf文件里内容就是前面设置的。

三、编写docker-compose.yml编排文件

分别在三台机器的/opt/docker/redis-cluster/目录下,创建docker-compose.yml文件,内容如下:

version: '3.1'
services:redis-master:image: redis:5.0.8container_name: redis-masterrestart: alwaysnetwork_mode: "host" volumes:- /opt/docker/redis-cluster/redis-master/data:/data- /opt/docker/redis-cluster/redis-master/redis.conf:/usr/local/etc/redis/redis.confcommand: ["redis-server","/usr/local/etc/redis/redis.conf"]redis-slave:image: redis:5.0.8container_name: redis-slaverestart: alwaysnetwork_mode: "host" volumes:- /opt/docker/redis-cluster/redis-slave/data:/data- /opt/docker/redis-cluster/redis-slave/redis.conf:/usr/local/etc/redis/redis.confcommand: [ "redis-server","/usr/local/etc/redis/redis.conf" ]

完成后,执行指令docker-compose up -d——

image

执行指令docker ps -a查看一下容器是否已经正常运行,如下现实证明没有问题——

image

四、执行指令组建redis集群

4.1、任意一台机器上,执行以下指令,进入到docker容器当中——

docker exec -it redis-master bash #redis-master对应的是docker ps -a查看到的容器名redis-master

4.2、创建集群

redis-cli --cluster create  192.168.31.130:6379  192.168.31.130:6380  192.168.31.131:6379 192.168.31.131:6380 192.168.31.132:6379 192.168.31.132:6380 --cluster-replicas 1

执行完成后,打印日志如下——

image

执行指令后,会出现提示“Can I set the above configuration? (type 'yes' to accept):”,这里输入yes,回车。出现以下情况话,就是已经成功创建redis集群了——

image

可以通过以下指令进入到redis客户端,查看集群情况——

root@hadoop1:/data# redis-cli -c -h 192.168.31.130 -p 6379

然后,执行指令cluster info查看集群状况,显示cluster_state:ok则表示集群已经正常创建。

image

当然,可以进一步通过cluster nodes指令,查看各节点状况,已经是三主三从的集群状况了——

image

以上,就是整个集群搭建过程。

若是之前没有玩过Docker的朋友,可以参考我之前的一篇Docker搭建记录文章《CentOS7安装Docker遇到的问题笔记》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/591661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

今天用vite新建的vue3的项目 启动遇到报错

UnhandledPromiseRejectionWarning: SyntaxError: Unexpected token ??at Loader.moduleStrategy (internal/modules/esm/translators.js:145:18) (Use node --trace-warnings ... to show where the warning was created) (node:30304) UnhandledPromiseRejectionWarning: U…

普中STM32-PZ6806L开发板(HAL库函数实现-USART2 中断接收)

简介 实现USART2 的 中断接收, 发送数据。电路原理图 USART2接线 原理图USART2 在主芯片引脚 实物图 其他知识 APIs stm32f1xx_hal_uart.h /* 堵塞发送, pData是发送数据, Size发送数据大小, Timeout是超时时间 */ HAL_StatusTypeDef HAL_UART_Transmit(UAR…

安卓在SOA中的运用

安卓在运用SOA研发的过程中,会针对实际情况对研发的架构和流程进行优化,通过优化过的架构和实施方案,不仅可以大大提升了整车开发的效率和灵活行以及功能落地的稳定性,同时也增加了系统的向上兼容性。 目前基于车载SOA系统的研发…

如何在Mendix中实现全文检索

功能背景 在日常的应用使用过程中,存在大量希望使用全文检索技术的场景,对资料库中的内容进行查询。Mendix默认的结构化查询方式,适合对特定业务实体进行类似数据库单表的基于SQL语句的查询。那如何在Mendix实现全文检索的功能呢&#…

Windows CPU部署llama2量化模型并实现API接口

目录 模型部署本地运行llama2使用fastapi实现API接口常用git仓库 模型部署 从huggingface下载模型 https://huggingface.co/ 放在本地文件夹,如下 本地运行llama2 from ctransformers import AutoModelForCausalLMllm AutoModelForCausalLM.from_pretrained(&q…

微软好听的tts语音包下载,粤语,韩语,日语

微软的 tts 语音库,都是离线的,所以速度非常快 但资源比较少,比如粤语,韩语,日语 我发现一个老牌语音技术供应商。 资源丰富,可自行下载免费或收费语音包。 网站:正版用户专用配套播音员下载…

gitee添加仓库人员

1.进入gitee项目,点击管理 2.点击仓库成员管理,展开仓库成员管理节点,选择所有或者开发者 3.点击添加仓库成员 4. 邀请用户

深度生成模型之GAN的评估 ->(个人学习记录笔记)

文章目录 深度生成模型之GAN的评估图像翻译的应用1. 风格迁移2. 数据增强3. 经典图像任务4. 内容创作5. 人脸图像编辑6. 人体图像编辑 图像翻译模型1. 有监督图像翻译模型2. 无监督图像翻译模型3. 多域图像翻译模型 深度生成模型之GAN的评估 图像翻译的应用 1. 风格迁移 各类…

2024年腾讯云服务器租用价格表_优惠活动大全_实时更新

腾讯云服务器租用价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月,云服务器CVM S5实例2核2G配置280.8元一年…

PyTorch官网demo解读——第一个神经网络(4)

上一篇:PyTorch官网demo解读——第一个神经网络(3)-CSDN博客 上一篇我们聊了手写数字识别神经网络的损失函数和梯度下降算法,这一篇我们来聊聊激活函数。 大佬说激活函数的作用是让神经网络产生非线性,类似人脑神经元…

十年磨一剑,花为缘享奢app打造行业的又一颠覆性创新

随着国内生活质量的提高,人们对于奢侈品的消费需求也在不断增长。消费者对于高品质、高价值的商品和服务的需求日益增长。2022年我国内地消费者奢侈品市场规模约为4700亿元,预计2023年我国内地消费者奢侈品消费预计将达到5500亿元,呈现出强劲…

旅游平台网页前后端

功能清单 游客功能 用户注册、登录登录权限拦截按名称搜索房间支付流程查看订单信息和状态评论预定过的房间,并自动修改订单状态查看统计剩余房间数量,数量为0时不可预定 管理员功能 房间分类管理 类型的删除、修改、查询(准备添加增添功能…

Debezium日常分享系列之:Debezium 通知

Debezium日常分享系列之:Debezium 通知 一、概论二、Debezium通知格式三、Debezium 有关初始快照状态的通知四、Debezium 有关增量快照进度的通知五、启用 Debezium 通知六、访问 Debezium JMX 通知七、自定义通知渠道八、应用案例 一、概论 Debezium 通知提供了一…

Wnmp本地部署结合内网穿透实现任意浏览器远程访问本地服务

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1…

测开基础概念

小王学习录 前言测试1. 什么是测试2. 测试和调试的区别3. 优秀测试人员应该具备的素质 需求1. 需求的定义2. 测试人员眼里的需求 测试用例1. 什么是测试用例(case)2. 什么是Bug 开发测试模型1. 软件的生命周期2. 瀑布模型3. 螺旋模型3. 增量和迭代4. 敏捷开发5. scrum6. 瀑布模…

chromium通信系统-ipcz系统(九)-ipcz系统代码实现-跨Node通信-代理和代理消除

chromium通信系统-ipcz系统(六)-ipcz系统代码实现-跨Node通信-基础通信 一文我们分析了跨Node的基础通信过程。 a进程和b进程通信的过程。 但在程序中a进程将自己打开的一对portal中的一个portal传递给了b进程。由于篇幅问题这个过程我们并没有分析,这篇文章我们就来…

如何使用甘特图进行项目管理?

或许你在工作中或项目启动会议上听说过“甘特图”一词,但对此了解不多。虽然这些图表可能变得相当复杂,但基础知识并不难掌握。通过本文,你将清楚地了解什么是甘特图、何时使用甘特图、创建甘特图的技巧等等。 什么是甘特图? 甘特…

第二十三章 反射(reflection)

一、反射机制(重点)(P711) 1. Java Reflection (1)反射机制允许程序在执行期借助 Reflection API 取得任何类的内部信息(比如成员变量、构造器、成员方法等等),并能操作…

虚幻UE 材质-边界混合之PDO像素深度偏移量

2024年的第一天!!!大家新年快乐!!! 可能是长大了才知道 当你过得一般 你的亲朋好友对你真正态度只可能是没有表露出来的冷嘲热讽了 希望大家新的一年平安、幸福、 永远活力满满地追求自己所想做的、爱做的&…

HAL——点灯

学习目标 掌握hal库开发流程掌握STMCubeMX配置过程掌握API查询和使用方式 学习内容 需求 点灯PE3。 开发流程 新建项目芯片配置编写代码测试调试 项目创建 新建项目 选择芯片。输入自己使用的芯片。 选择芯片版本。 芯片配置 功能配置 这里需求是点灯,配置…