docker下搭建redis集群

1. 环境准备

准备好Linux系统机器,并安装好docker,阅读这篇文章前请先了解清楚docker的基本知识并且会熟悉运用docker的常用命令。学习docker基础知识可以参考这篇博文
安装好并启动docker后就可以开始搭建redis了

2. docker容器下安装redis

本篇文章我们安装redis6.0.6版本,执行以下命令直接下载redis6.0.6版本镜像

#dokcer pull 镜像名:版本号 docker pull redis:6.0.6

安装好后再执行 docker images命令,查看到redis6.0.6镜像则安装成功

3. 搭建redis集群

安装好redis镜像后,此时redis还只是单体,我们需要搭建集群,集群配置如下:

  • docker端口号→宿主机对外暴露的端口:7000→7000,7001→7001,7002→7002,7003→7003,7004→7004,7005→7005
  • 挂载目录:data(数据) → /usr/local/docker/redis/端口号/data/
    conf(配置文件)→ /usr/local/docker/端口号/redis.conf
  • 集群模式:三主三从
  • 节点容器名称:redis-7000,redis-7001,redis-7002,redis-7003,redis-7004,redis-7005

回到linux,首先创建好挂载目录

# 批量创建redis节点7000-7005目录 mkdir -p /usr/local/docker/redis/700{0,1,2,3,4,5}/data

然后分别创建个节点的配置文件,并添加配置信息

vim /usr/local/docker/redis/7000/redis.conf # 添加以下配置信息 port 7000 protected-mode no daemonize no appendonly yes cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 20000 ---------------------------------------------------------------------- 配置说明: port # 节点端口 protected-mode # 保护模式,默认值 yes,即开启 daemonize # 是否以守护线程的方式启动(后台启动),默认 no; appendonly # 是否开启 AOF 持久化模式,默认 no; cluster-enabled # 是否开启集群模式,默认 no cluster-config-file # 集群节点信息文件 cluster-node-timeout # 集群节点连接超时时间(ms)

创建7000节点配置文件后将它复制到其他节点目录下,注意复制到其他目录需要将配置文件的port改为该节点的端口号

cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7001 cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7002 cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7003 cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7004 cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7005

接下来就可以创建每个节点的docker容器,以7000节点为例

# 创建7000节点容器 docker run -p 7000:7000 -v /usr/local/docker/redis/7000/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/7000/data:/data --name redis-7000 --net host -d redis:6.0.6 redis-server /etc/redis/redis.conf ---------------------------------------------------------------- 命令说明 -p 7000:7000 #宿主机端口号:容器端口 端口映射 -v /usr/local/docker/redis/7000/redis.conf:/etc/redis/redis.conf #宿主机目录:容器目录 redis配置文件挂载 -v /usr/local/docker/redis/7000/data:/data #redis数据文件挂载 --name redis-7000 # 给容器起个名称 --net host # 指定网络类型为host,即与宿主机使用同一网络 -d redis:6.0.6 redis-server /etc/redis/redis.conf #运行容器 并使用配置文件启动容器内的 redis-server

然后分别执行以下命令创建并运行其他节点容器

# 创建7001节点容器 docker run -p 7001:7001 -v /usr/local/docker/redis/7001/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/7001/data:/data --name redis-7001 --net host -d redis:6.0.6 redis-server /etc/redis/redis.conf # 创建7002节点容器 docker run -p 7002:7002 -v /usr/local/docker/redis/7002/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/7002/data:/data --name redis-7002 --net host -d redis:6.0.6 redis-server /etc/redis/redis.conf # 创建7003节点容器 docker run -p 7003:7003 -v /usr/local/docker/redis/7003/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/7003/data:/data --name redis-7003 --net host -d redis:6.0.6 redis-server /etc/redis/redis.conf # 创建7004节点容器 docker run -p 7004:7004 -v /usr/local/docker/redis/7004/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/7004/data:/data --name redis-7004 --net host -d redis:6.0.6 redis-server /etc/redis/redis.conf # 创建7005节点容器 docker run -p 7005:7005 -v /usr/local/docker/redis/7005/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/7005/data:/data --name redis-7005 --net host -d redis:6.0.6 redis-server /etc/redis/redis.conf

此时我们已经创建好了所有节点,但各个节点还是相互独立的,我们需要将他们整合成集群,执行以下命令建立集群

redis-cli --cluster create --cluster-replicas 1 192.168.93.71:7000 192.168.93.71:7001 192.168.93.71:7002 192.168.93.71:7003 192.168.93.71:7004 192.168.93.71:7005

出现以下结果则表示集群创建成功

我们可以执行以下命令进入其中一个节点查看集群信息

# 进入7000节点容器 docker exec -it redis-7000 bash # 进入redis redis-cli -p 7000 # 查看集群喜喜 cluster nodes

出现以下结果表示集群创建成功

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

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

相关文章

深度解析:为什么传统操作系统的最小权限原则在智能体世界失灵?

前言 如果我们把“AgentOS”理解为一种为智能体长期运行、持续决策、主动调用资源而设计的操作系统,那么它会暴露出一个根本性矛盾:我们正在用为“被动程序”设计的安全模型,去约束“主动行为体”。 传统操作系统的安全模型,无论是 Unix 时代的“用户-组-其他”,还是后来…

交通仿真软件:Aimsun_(1).Aimsun概述v1

Aimsun概述 1. Aimsun的基本功能 Aimsun是一款功能强大的交通仿真软件,广泛应用于交通规划、交通管理和交通研究等领域。它能够模拟从微观到宏观的交通流,提供详细的交通分析和优化建议。Aimsun的基本功能包括: 1.1 交通网络建模 Aimsun允许用…

ChatGLM2-6B模型推理流程和模型架构详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1 ChatGLM是什么?2 一代GLM 2.1 大模型架构2.2 GLM特点 2 二代GLM:ChatGLM2-6B为例拆解 2.1 ChatGLM2-6B模型推理架构和流程2.2 细节详…

go桌面框架Fyne最全api文档

Fyne 是一个 Go 语言的跨平台 GUI 库 相关命令 //全局安装fyne打包工具 go install fyne.io/fyne/v2/cmd/fynelatest// 引入fyne库 go get fyne.io/fyne/v2latest go mod tidy//以窗口形式启动 go run main.go //以手机模拟器形式启动 go run -tags mobile main.go//打包 //桌面…

基于微信小程序的新能源汽车租赁换电管理系统(毕设源码+文档)

课题说明本课题聚焦基于微信小程序的新能源汽车租赁换电管理系统的设计与实现,核心目标是解决传统新能源汽车租赁及换电服务中流程繁琐、车辆与换电站信息不透明、租赁订单管理混乱、换电预约低效、电池状态监控缺失及服务进度追踪困难等痛点问题。系统深度依托微信…

交通仿真软件:Aimsun_(3).Aimsun基本操作

Aimsun基本操作 创建和配置仿真网络 在Aimsun中,创建和配置仿真网络是仿真过程的第一步。仿真网络是交通仿真的基础,它包括道路网络、交叉口、交通信号、交通流等基本元素。本节将详细介绍如何在Aimsun中创建和配置仿真网络,以及如何导入和导…

代码随想录刷题——二叉树篇(十二)

112. 路径总和 递归法: class Solution{ public:bool sumPath(TreeNode* node,int count){# 如果该节点是叶子节点且count被减到0了,那么就返回trueif(!node->left&&!node->right&&count0) return true;# 如果该节点是叶子节点且c…

代码随想录刷题——二叉树篇(十二)

112. 路径总和 递归法: class Solution{ public:bool sumPath(TreeNode* node,int count){# 如果该节点是叶子节点且count被减到0了,那么就返回trueif(!node->left&&!node->right&&count0) return true;# 如果该节点是叶子节点且c…

eclipse配置Spring

1、从eclipse下载Spring工具 进入 help – install new software… ,如下图: 点击 add ,按以下方式输入: Name : Spring Location : http://dist.springsource.com/release/TOOLS/update/e4.10/ 之后点击 add ,等待…

Go基础之环境搭建

文章目录 1 Go 1.1 简介 1.1.1 定义1.1.2 特点用途 1.2 环境配置 1.2.1 下载安装1.2.2 环境配置 1.2.2.1 添加环境变量1.2.2.2 各个环境变量理解 1.2.3 验证环境变量 1.3 包管理工具 Go Modules 1.3.1 开启使用1.3.2 添加依赖包1.3.3 配置国内包源 1.3.3.1 通过 go env 配置1.…

C#数据库操作系列---SqlSugar完结篇

1. 不同寻常的查询 之前介绍了针对单个表的查询,同样也是相对简单的查询模式。虽然开发完全够用,但是难免会遇到一些特殊的情况。而下面这些方法就是为了解决这些意料之外。 1.1 多表查询 SqlSugar提供了一种特殊的多表查询方案,使用IQueryab…

docker启动redis简单方法

1、拉取redis镜像 docker pull redis2、在本地某个位置创建以下内容 建议将以下内容放在一起,方便以后管理和查看 # 以/docker/redis为例 mkdir -p /docker/redis mkdir -p /docker/redis/data touch /docker/redis/redis.conf touch /docker/redis/redis.bash3、…

DVWA靶场通关——SQL Injection篇

一,Low难度下unionget字符串select****注入 1,首先手工注入判断是否存在SQL注入漏洞,输入1这是正常回显的结果,再键入1’ You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versio…

基于Django的网络设备租赁系统设计与实现-计算机毕业设计源码+LW文档

摘 要 近些年来,随着科技的飞速发展,互联网的普及逐渐延伸到各行各业中,给人们生活带来了十分的便利,网络设备租赁系统利用计算机网络实现信息化管理,使整个网络设备租赁的发展和服务水平有显著提升。在系统开发过程中…

二分猜答案

二分前后缀分解lc786二分查找分数值范围&#xff0c;统计小于等于中间值的分数个数&#xff0c;定位第k小的素数分数并返回#include <vector> using namespace std;class Solution { private:vector<int> arr;int n, a, b; public:vector<int> kthSmallestPr…

二分猜答案

二分前后缀分解lc786二分查找分数值范围&#xff0c;统计小于等于中间值的分数个数&#xff0c;定位第k小的素数分数并返回#include <vector> using namespace std;class Solution { private:vector<int> arr;int n, a, b; public:vector<int> kthSmallestPr…

嵌入式工程师面试宝典:常见算法题与底层驱动问题解析

文章目录摘要1. 开发环境配置1.1 硬件与工具链1.2 环境搭建步骤2. 算法题实战解析2.1 链表操作2.2 树结构应用3. 底层驱动开发实战3.1 GPIO控制LED3.2 SPI通信协议4. 综合案例&#xff1a;智能传感器系统架构设计低功耗优化关键代码5. 调试与问题处理常见问题解决方案&#xff…

基于Django的在线课程学习平台-计算机毕业设计源码+LW文档

摘要 在信息技术飞速发展的当下&#xff0c;教育领域正经历着深刻的变革。传统的线下教学模式逐渐无法满足人们日益多样化和个性化的学习需求&#xff0c;在线课程学习平台应运而生。它打破了时间和空间的限制&#xff0c;为学生、教师提供了更加便捷、高效的学习和教学环境。越…

rust学习-探讨为什么需要标注生命周期

rust学习-探讨为什么需要标注生命周期生命周期标注到底在做什么&#xff1f;原始代码&#xff08;没有标注&#xff09;添加标注后关键&#xff1a;标注是契约&#xff0c;不是控制例子1&#xff1a;标注如何帮助编译器验证更直观的比喻&#xff1a;租房合同生命周期标注的实际…

Docker 之mysql从头开始——Docker下mysql安装、启动、配置、进入容器执行(查询)sql

一、Docker 之mysql安装配置 步骤一&#xff1a;拉取镜像 1. 查看是否包含已安装的mysql。 docker images | grep mysql 2. 如上图所示&#xff0c;我们有mysql镜像&#xff0c;所以不必对mysql镜像进行拉取&#xff0c;如若没有上图中的惊喜&#xff0c;使用如下命令进行拉取…