使用Docker搭建一个“一主两从”的 Redis 集群(超详细步骤)

news2024/11/24 18:52:33

目录

      • 1、Redis 单机版安装
        • 1.1 拉取 Redis
        • 1.2 创建数据卷目录
        • 1.3 修改 redis.conf
        • 1.4 启动 Redis 容器
        • 1.5 进入容器连接 Redis
      • 2、Redis 一主两从集群搭建
        • 2.1 复制三份 redis.conf
        • 2.2 启动 master
        • 2.3 启动 两个redis slave
        • 2.4 三者关系查看
        • 2.5 数据测试

1、Redis 单机版安装

1.1 拉取 Redis

首先从 docker hub 拉取 Redis 镜像,这里拉取 7.0 版。

docker pull redis:7.0

在这里插入图片描述

1.2 创建数据卷目录

首先要在宿主机/root 目录中创建一个目录 redis,将来用于存放外挂文件 redis.conf。

mkdir redis

使用rz命令上传一份redis.conf:

rz
1.3 修改 redis.conf

修改配置文件:

vim redis.conf

1.解除 IP 绑定

将 bind 行注释掉,以解除 Redis 对访问者 IP 的绑定。

在这里插入图片描述

2.关闭保护模式
关闭保护模式,否则只能本机访问自己。
在这里插入图片描述

3.指定持久化目录
这里要指定 RDB 或 AOF 的持久化目录为/data,这样无论是哪种持久化文件,均会保存
到该目录。后面会指定容器中的/data 目录为数据卷挂载点目录。
在这里插入图片描述

1.4 启动 Redis 容器
docker run --name myredis \
-v /root/redis/redis.conf:/etc/redis/redis.conf \
-v /root/redis/data:/data \
-dp 6379:6379 \
redis:7.0 \
redis-server /etc/redis/redis.conf

这里指定了两个数据卷,其中一个是文件,一个是目录:

  • /root/redis/redis.conf:/etc/redis/redis.conf
  • /root/redis/data:/data
    对于该启动命令需要注意的是,其后面运行的命令为 redis-server,且加载的配置文件为
    挂载点目录/etc/redis 中的 redis.conf。

查看运行的docker的镜像:

docker ps -a

在这里插入图片描述

1.5 进入容器连接 Redis

通过 docker exec 命令进入 Redis 容器后,就可通过 redis-cli 客户端连接上这个 Redis,然后执行 Redis 命令了。

docker exec -it myredis /bin/bash
redis-cli

在这里插入图片描述

到此为止,单机版的redis搞定啦!!!!

2、Redis 一主两从集群搭建

现要搭建一个“一主两从”的 Redis 集群。这三个容器的端口号都保持默认,但对外暴露出的端口号分别为 6381、6382、6383。其中,6381 的为 master,另外两个为 slave。

2.1 复制三份 redis.conf

现仍在前面的/root/redis 目录中完成配置。复制 redis.conf 并重命名为 redis1.conf,并在文件最后添加如下配置,以对外宣布当前 redis 的 IP 与端口。注意,该 IP 为 docker 宿主机的 IP,端口号为当前 redis 对外暴露的端口号。

复制 redis.conf 并重命名为 redis1.conf

cp redis.conf redis1.conf

修改redis1.conf

vim redis1.conf

最后加上两句语句如下:

slave-announce-ip 192.168.162.105
slave-announce-port 6381

同理redis2.conf redis3.conf 如下:

slave-announce-ip 192.168.162.105
slave-announce-port 6382
slave-announce-ip 192.168.162.105
slave-announce-port 6383

在这里插入图片描述

2.2 启动 master

首先启动 master,即启动 myredis-1 容器。

docker run --name myredis-1 \
-v /root/redis/redis1.conf:/etc/redis/redis.conf \
-v /root/redis/data/6381:/data \
-dp 6381:6379 \
redis:7.0 \
redis-server /etc/redis/redis.conf

在这里插入图片描述

2.3 启动 两个redis slave

在启动 slave 的命令中需要指出其 slaveof 于谁。

启动myredis-2:

docker run --name myredis-2 \
-v /root/redis/redis2.conf:/etc/redis/redis.conf \
-v /root/redis/data/6382:/data \
-dp 6382:6379 \
redis:7.0 \
redis-server /etc/redis/redis.conf --slaveof 192.168.162.105 6381

启动myredis-3:

docker run --name myredis-3 \
-v /root/redis/redis3.conf:/etc/redis/redis.conf \
-v /root/redis/data/6383:/data \
-dp 6383:6379 \
redis:7.0 \
redis-server /etc/redis/redis.conf --slaveof 192.168.162.105 6381

2.4 三者关系查看

查看这三个容器节点的 info replication,可以看到它们间的主从关系已经建立。

docker exec -it myredis-1 redis-cli info replication

在这里插入图片描述

docker exec -it myredis-2 redis-cli info replication

在这里插入图片描述

docker exec -it myredis-3 redis-cli info replication

在这里插入图片描述

2.5 数据测试

在 master 节点 myredis-1 中写入数据。

docker exec -it myredis-1 /bin/bash

redis-cli

set name tigerhhzz11
set name tigerhhzz11

在这里插入图片描述

这里可以新开一个连接窗口进行测试
在 slave 节点 myredis-2 与 myredis-3 节点中可读出数据。
在这里插入图片描述

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

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

相关文章

快速批量重命名:高效修改文件名并转换为大写扩展名

在文件管理中,批量重命名文件是一个常见的需求。通过快速批量重命名,我们可以高效地修改文件名并将扩展字母转换为大写形式。这样做不仅可以提高文件的可读性,还可以更好地组织和管理文件。用云炫文件管理器可以快速批量重命名,能…

数据结构——基于顺序表实现通讯录

一、. 基于动态顺序表实现通讯录 1.1 功能要求 1)⾄少能够存储100个⼈的通讯信息 2)能够保存⽤⼾信息:名字、性别、年龄、电话、地址等 3)增加联系⼈信息 4)删除指定联系⼈ 5)查找制定联系⼈ 6&…

Spring Cloud智慧工地源码,利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术开发,微服务架构

智慧工地系统充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术,以PC端,移动端,设备端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳务、设备、物料、安全、环境、能源、资料、计划、质量、视频监控等…

UI设计工具都哪些常用的,推荐这5款

对于UI设计师来说,日常工作无非是围绕“需求分析”→设计实施→“开发交付”这三个环节来进行。 然而,在每个环节中,设计师使用的工具却完全不同。在这里,我收集整理了UI设计师在日常工作中常用的五种工具,希望能为新…

二叉树刷题——递归

JZ36 二叉搜索树与双向链表(牛客) 描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示 数据范围:输入二叉树的节点数 0≤10000≤n≤1000,二叉树中每个节点的值 0≤10000≤val≤1000 要求&…

Android 11 Framework 增加自定义API到系统中

基于 Android 11 源码 根据网上的教程, 自己先捣鼓一波: frameworks\base\services 创建 hzyd文件夹 Android.bp内容: android_library_import {name: "services.hzyd",aars: ["MobileSDK-release.aar"],sdk_version: "current", }修改 fra…

携程AI布局:三重创新引领旅游行业智能化升级

2023年10月24日,携程全球合作伙伴峰会在新加坡召开,携程集团联合创始人、董事局主席梁建章做了名为《旅游业是独一无二的最好的行业》的演讲,梁建章在演讲中宣布了携程生成式 AI、内容榜单、ESG 低碳酒店标准三重创新的战略方向。这些创新将为…

Python 获取cpu、内存利用率

获取cpu、内存利用率 # -*- coding: latin1 -*- import psutil cpuPercent 0 psutil.cpu_percent() while True:vm psutil.virtual_memory()memoryPercent vm.percentcpuPercent psutil.cpu_percent(1) *10print("cpuPercent:"str(cpuPercent)" %")prin…

三、IPSec VPN原理

IPSec 1、IPSec起源和定义2、IPSec原理2.1、IPSec协议框架2.1.1、安全联盟2.1.2、安全协议2.1.3、安全协议报文头结构2.1.4、封装模式2.1.5、加密和验证2.1.6、IKE安全机制 2.2、IPSec基本原理2.2.1、定义IPSec保护的数据流2.2.2、IKEv2协商安全联盟的过程 2.3、IPSec增强原理2…

java配置GDAL

<gdal.version>3.7.0</gdal.version><!-- gdal--><dependency><groupId>org.gdal</groupId><artifactId>gdal</artifactId><version>${gdal.version}</version></dependency> GDAL环境安装 downlo…

华为OD机试 - 数组组成的最小数字 - 逻辑分析(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

考研数据结构线性表看这篇就够了之顺序表(一)

目录 一.线性表 1.1 线性表的概念 1.2线性表的种类 1.2.1 静态线性表 1.2.2 线性表的动态存储 二动态顺序表的操作 2.1. 定义结构体与函数 2.2 初始化 2.2.1实参和形参的区别 2.2.2 用实参改变形参 题外话 int *p和int* p的区别 2.3 销毁 2.4 尾插 2.4.1 首先要判…

继承、菱形继承与虚拟继承

继承、菱形继承与虚拟继承 一、概念二、定义格式三、继承方式四、派生类继承基类成员访问方式的变化五、基类和派生类对象赋值转换1、概念2、示意图3、示例代码4、特点 六、继承中的作用域1、概念2、示例代码3、运行结果 七、派生类的默认成员函数1、调用方法2、示例代码3、运行…

【LeetCode刷题-排序】--147.对链表进行插入排序

147.对链表进行插入排序 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }…

必须收藏:IPv6核心知识梳理!!(原理+基础配置)

一、概述 由于NAT技术的应用&#xff0c;缓解了IPv4地址不足产生的问题&#xff0c;但是部署IPv6是解决IPv4地址不足的最终方案。当前世界上不同地区对部署IPv6的需求强烈程度不一&#xff0c;且当前IPv4网络仍然占主流地位&#xff0c;因此短时间内IPv6和IPv4将会共存。 IPv4网…

深入理解网络IO复用并发模型

本文主要介绍服务端对于网络并发模型以及Linux系统下常见的网络IO复用并发模型。文章内容一共分为两个部分。 第一部分主要介绍网络并发中的一些基本概念以及我们Linux下常见的原生IO复用系统调用&#xff08;epoll/select&#xff09;等。第二部分主要介绍并发场景下常见的网…

opencv dnn模块 示例(21) 目标检测 object_detection 之 yolov6

文章目录 1、YOLOv6介绍1.1、概述1.2、关键技术1.2.0、网络结构1.2.1、表征能力更强的 RepBi-PAN Neck 网络1.2.2、全新的锚点辅助训练&#xff08;Anchor-Aided Training&#xff09;策略1.2.3、无痛涨点的 DLD 解耦定位蒸馏策略 1.3、总结 2、测试2.1、官方项目测试2.2、open…

View绘制流程

在子线程中不能更新UI的前提是不触发 checkThread ,逐步委托给mParent检查线程 onCreate加载contentView 进行draw onStart onResume 可能也没有完成测量流程 setContentView: public abstract void setContentView(LayoutRes int resId); Activity 是由ActivityThread类中…