Docker搭建Redis集群

news2025/1/12 20:44:50

Docker搭建Redis集群

注意:Redis搭建集群最少需要6个Redis节点,其中3个作为主节点,3个作为从节点;

为了方便,这里用Docker在一台机器上启动6个容器来作为集群,生产上建议用多台服务器搭建;

  1. 创建Redis配置文件

    集群的访问密码,Redis访问密码需要自己改以下,这里默认为2022

#!/bin/bash
if [ ! $1 ]; then
    echo "请输入Redis配置文件存放路径,例如:/home"
    exit 1
fi
for port in $(seq 1 6);
do
mkdir -p $1/redis/node-${port}/conf
mkdir -p $1/redis/node-${port}/data
touch $1/redis/node-${port}/conf/redis.conf
cat << EOF > $1/redis/node-${port}/conf/redis.conf
#port(端口号)
port 6379
bind 0.0.0.0
#masterauth(设置集群节点间访问密码,跟下面一致)
masterauth 2022
#requirepass(设置Redis访问密码)
requirepass 2022
#cluster-enabled yes(启动集群模式)
cluster-enabled yes
#cluster-config-file nodes.conf(集群节点信息文件)
cluster-config-file nodes.conf
#cluster-node-timeout 5000(Redis节点宕机被发现的时间)
cluster-node-timeout 5000
#cluster-announce-ip(集群节点的汇报ip,防止nat,预先填写为网关ip后续需要手动修改配置文件)
cluster-announce-ip 172.18.0.1${port}
#cluster-announce-port(集群节点的汇报port,防止nat)
cluster-announce-port 6379
#cluster-announce-bus-port(集群节点的汇报bus-port,防止nat)
cluster-announce-bus-port 16379
#appendonly yes(开启aof)
appendonly yes
EOF
done

运行脚本,在home目录下可以看到创建好的6个Redis配置文件

(base) ➜  ~ chmod +x redis_conf.sh
(base) ➜  ~ ./redis_conf.sh /home

image-20221119204228130

  1. 创建docker-compose脚本

自行修改IP和端口,需要和上面的Redis配置文件保持一致

version: '3'
services:
  # redis-1
  redis-1:
    image: redis:latest
    container_name: redis-1
    hostname: redis-1
    ports:
      - "6371:6379"
      - "16371:16379"
    command: "redis-server /etc/redis/redis.conf"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./redis/node-1/data:/data
      - ./redis/node-1/conf/redis.conf:/etc/redis/redis.conf
    networks:
      tools_net:
        ipv4_address: 172.18.0.11
  # redis-2
  redis-2:
    image: redis:latest
    container_name: redis-2
    hostname: redis-2
    ports:
      - "6372:6379"
      - "16372:16379"
    command: "redis-server /etc/redis/redis.conf"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./redis/node-2/data:/data
      - ./redis/node-2/conf/redis.conf:/etc/redis/redis.conf
    networks:
      tools_net:
        ipv4_address: 172.18.0.12
  # redis-3
  redis-3:
    image: redis:latest
    container_name: redis-3
    hostname: redis-3
    ports:
      - "6373:6379"
      - "16373:16379"
    command: "redis-server /etc/redis/redis.conf"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./redis/node-3/data:/data
      - ./redis/node-3/conf/redis.conf:/etc/redis/redis.conf
    networks:
      tools_net:
        ipv4_address: 172.18.0.13
  # redis-4
  redis-4:
    image: redis:latest
    container_name: redis-4
    hostname: redis-4
    ports:
      - "6374:6379"
      - "16374:16379"
    command: "redis-server /etc/redis/redis.conf"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./redis/node-4/data:/data
      - ./redis/node-4/conf/redis.conf:/etc/redis/redis.conf
    networks:
      tools_net:
        ipv4_address: 172.18.0.14
  # redis-5
  redis-5:
    image: redis:latest
    container_name: redis-5
    hostname: redis-5
    ports:
      - "6375:6379"
      - "16375:16379"
    command: "redis-server /etc/redis/redis.conf"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./redis/node-5/data:/data
      - ./redis/node-5/conf/redis.conf:/etc/redis/redis.conf
    networks:
      tools_net:
        ipv4_address: 172.18.0.15
  # redis-6
  redis-6:
    image: redis:latest
    container_name: redis-6
    hostname: redis-6
    ports:
      - "6376:6379"
      - "16376:16379"
    command: "redis-server /etc/redis/redis.conf"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./redis/node-6/data:/data
      - ./redis/node-6/conf/redis.conf:/etc/redis/redis.conf
    networks:
      tools_net:
        ipv4_address: 172.18.0.16
networks:
  tools_net:
    ipam:
      config:
        - subnet: 172.18.0.0/24

启动Redis

(base) ➜  ~ docker-compose up -d
(base) ➜  ~ docker ps

image-20221119205048941

  1. 配置Redis集群

进入其中一台容器,进行Redis集群配置

redis-cli -a 2022 --cluster create 172.18.0.11:6379 172.18.0.12:6379 172.18.0.13:6379 172.18.0.14:6379 172.18.0.15:6379 172.18.0.16:6379 --cluster-replicas 1

(base) ➜  ~ docker exec -it redis-1 bash
# -a 为上面设置的密码
root@redis-1:/data# redis-cli -a 2022 --cluster create 172.18.0.11:6379 172.18.0.12:6379 172.18.0.13:6379 172.18.0.14:6379 172.18.0.15:6379 172.18.0.16:6379 --cluster-replicas 1
# 回车后,会有提示,是否同意设置上面的配置,输入yes,然后集群就算搭建成功了;

image-20221119210030627

  1. 验证集群是否搭建成功

新增一个key,可以看到,数据成功的存入了redis-2这台容器

# 进入其中一台容器,执行如下命令,以集群模式进入
root@redis-1:/data# redis-cli -c -a 2022
127.0.0.1:6379> set name yid
-> Redirected to slot [5798] located at 172.18.0.12:6379
OK
172.18.0.12:6379> get name
"yid"

image-20221119210414688

# 查看节点
172.18.0.12:6379> CLUSTER NODES

image-20221119210812424

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

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

相关文章

4.1.3 名称的特殊处理

名称的特殊处理 类成员变量的名称处理&#xff1a; 对于类的数据成员&#xff0c;其的名称经过编译器的处理会在程序员定义名称的后面再加上class的名称&#xff0c;进而形成独一无二的命名&#xff0c;例如下面的的成员变量x再经过类处理后有可能为x_7Point3d。 class Point…

Linux之手把手教你捋清楚make和makefile

文章目录背景简单介绍make和makefile依赖关系和依赖方法项目清理以及伪目标背景 以往的C语言编程&#xff0c;我们一般都在一些像VS2019这样的集成开发环境(IDE)下编写&#xff0c;一个工程中的源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0…

Spring框架的概述及基本应用

Spring的基本应用 文章目录Spring的基本应用1. Spring 概述1.1 什么是Spring1.2 Spring 框架的优点1.3 Spring的体系结构2. Spring的核心容器2.1 BeanFactory2.2 ApplicationContext3. Spring的入门程序3.1 在pom下利用maven导入Spring所需要的jar包3.2 简单搭建起demo结构3.3 …

Java中数组的定义与使用(Java系列3)

目录 前言&#xff1a; 1.什么是数组 2.数组的创建 3.数组的初始化 4.数组的使用 5.数组是引用类型 6.基本类型变量与引用类型变量的区别 7.数组的应用 8.二维数组 结束语&#xff1a; 前言&#xff1a; 前面小编与大家分享了C语言与Java中的区别&#xff0c;还有一…

leaflet教程041: Point 和 LatLng 坐标互相转换

第041个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中使用Point和LatLng,这里做了两者之间的转换。 注意 两者转换后的值,返回相对于原点像素的相应像素坐标或经纬度坐标。zoom改变,原点(地图图层左上角的投影像素坐标)的值会改变,所以获得的值也会变化。…

51单片机学习笔记1 简介及开发环境

51单片机学习笔记1 简介及开发环境一、51单片机1. STC89C52单片机简介2. 命名规则3. 封装&#xff08;1&#xff09;PDIP&#xff08;2&#xff09;LQFP&#xff08;3&#xff09;PLCC&#xff08;4&#xff09;PQFP二、STC8051结构1. STC 8051 内部结构图2. 内部结构框图3. 单…

Android设置TabLayout熟悉及下划线宽度

Tablayout的使用 属性 app&#xff1a;tabMod 设置Tab模式 app&#xff1a;tabTextColor 设置文本颜色 app&#xff1a;tabSelectedTextColor 设置选中文本颜色 app:tabIndicatorColor 设置下滑条颜色 app:tabMaxWidth“xxdp” 设置最大的tab宽度 app:tabMinWidth“xxdp” 设置…

牛客网之SQL100题(7)-字符串截取、切割、删除、替换

知识点&#xff1a; &#xff08;1&#xff09;substring_indexsubstring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:计数 &#xff08;2&#xff09;切割、截取、删除、替换 1 2 3 4 5 6 7 8 9 10 11 12 13 14 select -- 替换法 replace(string, 被…

类型转换C11

类型转换 C类型转换分为显式类型转换和隐式类型转换 &#xff0c;隐式类型转换由编译器自动完成&#xff0c;这里只讨论显式类型转换。 旧式风格的类型转换 type(expr); // 函数形式的强制类型转换 (type)expr; // C语言风格的强制类型转换现代C风格的类型转换 cast-name&l…

1-2 VMware安装Rocky9.0和Ubuntu22.04系统

文章目录前言下载链接VMware使用安装Rocky9.0系统Rocky初始化安装Ubuntu22.04系统Ubuntu初始化VMware快照前言 VMware虚拟机软件是一个“虚拟PC”软件&#xff0c;它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。 Rocky Linux 9.0 操作系统与2022年7月14…

基于matlab GUI的数字图像处理系统

目 录 摘 要 I Abstract II 第1章 绪论 1 1.1选题背景及意义 1 1.2国内外研究现状 2 1.2.1国内研究现状 2 1.2.2国外研究现状 3 1.3研究主要内容 3 第2章 数字图像处理系统设计 5 2.1设计概括 5 2.2文件 6 2.2.1打开 6 2.2.2保存 6 2.2.3退出 6 2.3图像变形 7 2.3.1图像缩放 7 …

Spring Cloud Gateway 使用示例

Spring Cloud Gateway 使用示例 作者&#xff1a; Grey 原文地址&#xff1a; 博客园&#xff1a;Spring Cloud Gateway 使用示例 CSDN&#xff1a;Spring Cloud Gateway 使用示例 说明 Spring Cloud Gateway 用于构建 API 网关&#xff0c;基于 Spring WebFlux。 在Spr…

【雷达通信】回波数据处理(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

【VRP问题】基于蚁群算法求解配送路径最短问题附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

静态成员函数与回调函数

1. 静态成员函数 1.1 静态成员函数调用 如何代码块里的函数get_object_count是静态成员函数&#xff0c;对静态成员函数无论是通过类名还是通过对象或对象指针调用&#xff0c;最终都会被编译器转换为全局非成员函数的调用。例如obj.get_object_count()或Point3d::get_object…

BigDecimal精度丢失问题

浅谈BigDecimal精度丢失问题 文章目录浅谈BigDecimal精度丢失问题一. 简介二. 错误使用三. 原因分析四. 正确使用一. 简介 ​ Java在java.math包中提供的API类BigDecimal&#xff0c;用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数&#…

大数据Kudu(二):Kudu架构

文章目录 Kudu架构 一、​​​​​​​Kudu存储模型及概念 二、​​​​​​​​​​​​​​Kudu table存储原理 Kudu架构 一、​​​​​​​Kudu存储模型及概念 Kudu有自己的数据存储模型&#xff0c;不依赖于HDFS、Hive、HBase其他大数据组件。Kudu有自己的集群&#…

Oracle存储过程入门教程(通俗理解存储过程)

Oracle存储过程入门通俗介绍一、存储过程通俗理解二、创建存储过程基本语法(汇总)三、执行存储过程的方式&#xff08;5种&#xff09;四、网上现有的创建存储过程的两种方式解释&#xff08;看注释&#xff09;五、一些存储过程示例&#xff08;仅供参考&#xff09;六、其他语…

蒸馏+Distilling Knowledge via Knowledge Review论文笔记

文章目录一、前言二、蒸馏1.背景介绍2.知识蒸馏和迁移学习之间的区别3.Hinton提出的知识蒸馏Pipeline4.蒸馏的知识形式5.知识蒸馏的方法三、Distilling Knowledge via Knowledge Review论文笔记1.思想介绍2.Pipeline3.实验结果参考文献一、前言 近期在阅读cvpr 2021的一篇关于蒸…

通过Tomcat / Small Tomcat,如何部署Servlet?(超详细)

目录 基于Tomcat对Servlet进行部署 一、创建项目 二、引入Servlet依赖 三、构建目录结构 四、编写代码 五、打包程序 六、部署程序 七、验证程序 基于Smart Tomcat对Servlet进行部署 第一步&#xff1a;下载Smart Tomcat插件 第二步&#xff1a;进行相关配置 第三步…