使用docker-compose部署Redis集群

news2025/1/12 18:04:27

一、部署三主三从的Redis集群

分别为6个节点建立挂载目录,每个目录下建立数据、配置、日志文件夹。

docker-compose内容如下:

version: '3'
services:
  redis1:
    image: redis:6.2.3
    restart: always
    ports:
      - "6379:6379"
      - "16379:16379"
    volumes:
      - "./6379/data:/data/redis"
      - "./6379/logs:/opt/redis/logs"
      - "./6379/etc/redis.conf:/etc/redis/redis.conf"
    command: redis-server /etc/redis/redis.conf
  redis2:
    image: redis:6.2.3
    restart: always
    ports:
      - "6380:6380"
      - "16380:16380"
    volumes:
      - "./6380/data:/data/redis"
      - "./6380/logs:/opt/redis/logs"
      - "/opt/redis/cluster/6380/etc/redis.conf:/etc/redis/redis.conf"
    command: redis-server /etc/redis/redis.conf
  redis3:
    image: redis:6.2.3
    restart: always
    ports:
      - "6381:6381"
      - "16381:16381"
    volumes:
      - "./6381/data:/data/redis"
      - "./6381/logs:/opt/redis/logs"
      - "./6381/etc/redis.conf:/etc/redis/redis.conf"
    command: redis-server /etc/redis/redis.conf
  redis4:
    image: redis:6.2.3
    restart: always
    ports:
      - "7379:7379"
      - "17379:17379"
    volumes:
      - "./7379/data:/data/redis"
      - "./7379/logs:/opt/redis/logs"
      - "./7379/etc/redis.conf:/etc/redis/redis.conf"
    command: redis-server /etc/redis/redis.conf
  redis5:
    image: redis:6.2.3
    restart: always
    ports:
      - "7380:7380"
      - "17380:17380"
    volumes:
      - "./7380/data:/data/redis"
      - "./7380/logs:/opt/redis/logs"
      - "./7380/etc/redis.conf:/etc/redis/redis.conf"
    command: redis-server /etc/redis/redis.conf
  redis6:
    image: redis:6.2.3
    restart: always
    ports:
      - "7381:7381"
      - "17381:17381"
    volumes:
      - "./7381/data:/data/redis"
      - "./7381/logs:/opt/redis/logs"
      - "./7381/etc/redis.conf:/etc/redis/redis.conf"
    command: redis-server /etc/redis/redis.conf

 redis.conf大同小异,以redis1的配置为例,大部分是默认配置值,主要是修改集群配置部分,和端口部分

bind 0.0.0.0
protected-mode no
# 每个实例有各自的端口,6380,6381等等
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no

pidfile /var/run/redis.pid
loglevel verbose
logfile "/opt/redis/logs/redis.log"
always-show-logo no

set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes

dbfilename dump.rdb
rdb-del-sync-files no
dir /data/redis/

replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
requirepass 123456
maxmemory 10737418240

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

lazyfree-lazy-user-del no

lazyfree-lazy-user-flush no

oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes

appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes
aof-use-rdb-preamble yes

lua-time-limit 5000

# 集群关键配置
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000


cluster-announce-ip 172.19.23.214
#每个实例改为各自对应的端口
cluster-announce-port 6379
cluster-announce-bus-port 16379

slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events Ex
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0

set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000

stream-node-max-bytes 4096
stream-node-max-entries 100

activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes

使用docker-compose up -d 启动集群,查看状态是否正常,如果启动失败可以查看6379/logs/redis.log查看日志。

进入redis的bin目录下执行,(也可以进入任意一个容器内执行)

./redis-cli --cluster create -a 123456 172.16.19.234:6379 172.16.19.234:7379 172.16.19.234:6380 172.16.19.234:7380 172.16.19.234:6381 172.16.19.234:7381 --cluster-replicas 1

命令会输出一段提示,输入yes同意集群配置,稍等片刻显示成功,这个过程不需要太久(不到一分钟),如果等了很久一直显示......,那就是有问题,但是控制台不会报错,要检查配置、日志看是否有问题。

配置成功后,连接集群

./redis-cli  -c  -h 172.16.19.234 -p 6379 -a 123456

 查看集群信息

查看集群节点

测试命令,根据键值所在槽位,会自动切换到对应节点的连接。

集群模式不支持select 选数据库,只有0号

 二、数据迁移

 安装redis-dump

npm install redis-dump -g

也有的教程是用

apt-get install ruby ruby-dev gcc
sudo gem install redis-dump

 安装的,不知道有什么区别,我两种方式都安装了。

导出:

# -d 表示几号数据库
redis-dump -u 172.16.19.234:6379 -a 123456 -d 0 > data0.json

导入:

cat data0.json | bin/redis-cli -c  -h 172.16.19.234 -p 6379 -a 123456

最后使用dbsize命令检查迁移数据是否完整。集群要把每个节点的总和加起来。

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

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

相关文章

【LeetCode热题100】138. 随机链表的复制(链表)

一.题目要求 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值…

【Javascript】变量和数据类型

目录 1.JavaScript介绍 内部JavaScript 外部JavaScript 内联JavaScript JavaScript输入输出语法 2.变量 2.1定义变量 2.2变量的命名规则和规范 2.3let和var区别 3.数据类型 3.1数字类型 3.2 字符串类型 3.3 布尔类型(boolean) 3.4 未…

表单修饰符和事件修饰符

表单修饰符和事件修饰符 表单修饰符 v-model.lazy v-model.lazy 失去焦点后再收集数据 <div id"app"><textarea name"" id"" cols"30" rows"10" v-model.lazy"a"></textarea>{{a}}<textar…

一键分割,瞬间转换!轻松驾驭视频的无限可能

在数字化的世界里&#xff0c;视频内容已成为我们日常生活与工作中不可或缺的一部分。然而&#xff0c;处理这些多媒体文件时&#xff0c;常常需要花费大量的时间和精力进行分割、转换和编辑。现在&#xff0c;有了这款强大的“一键分割与转换”工具&#xff0c;你将能够轻松驾…

达梦数据库安装使用

一、Windows端 打开iso文件 前面呆瓜式安装下一步 Oracle的特性与达梦特性大致一样 MySQL与Oracle区别 MySQL&#xff1a;安装一个服务&#xff0c;新建多个数据库 达梦&#xff1a;只安装底层服务&#xff0c;数据库需要单独创建 现在服务安装好了但是没有安装数据库 如果…

【JetsonNano】onnxruntime-gpu 环境编译和安装,支持 Python 和 C++ 开发

1. 设备 2. 环境 sudo apt-get install protobuf-compiler libprotoc-devexport PATH/usr/local/cuda/bin:${PATH} export CUDA_PATH/usr/local/cuda export cuDNN_PATH/usr/lib/aarch64-linux-gnu export CMAKE_ARGS"-DONNX_CUSTOM_PROTOC_EXECUTABLE/usr/bin/protoc&qu…

Spirngboot中文乱码解决方案

在使用springboot的时候,如果我们直接在控制器里面返回中文, 则默认可能会是乱码,因为默认的编码是ISO8859-1, 要解决这个问题, 就需要我们通过重写springboot里面的configureMessageConverters方法来将默认的编码设置为utf-8即可解决, 当然你的类文件编码也必须要是utf-8的, …

Spring中的BeanFactory

BeanFactory&#xff0c;以Factory结尾&#xff0c;表示是一种工厂。 作用&#xff1a; 是一个接口&#xff0c;定义了生产Bean对象的工厂应有的方法&#xff0c;如下图,定义了一个Bean工厂&#xff0c;最基本的方法。 职责&#xff1a; 它是负责生产和管理bean的一个工厂&…

Python数据分析教程(非常详细)从零基础入门到精通,看这一篇就够了_python数据分析从入门到精通

1、为什么选择Python进行数据分析? Python是一门动态的、面向对象的脚本语言&#xff0c;同时也是一门简约&#xff0c;通俗易懂的编程语言。Python入门简单&#xff0c;代码可读性强&#xff0c;一段好的Python代码&#xff0c;阅读起来像是在读一篇外语文章。Python这种特性…

mysql: 如何开启慢查询日志?

1 确认慢查询日志功能已开启 执行以下sql语句&#xff0c;查看慢查询功能是否开启&#xff1a; show VARIABLES like slow_query_log;如果为ON&#xff0c;表示打开&#xff1b;如果为OFF&#xff0c;表示没有打开&#xff0c;需要开启慢查询功能。 执行以下sql语句&#xff0…

【UE5】动画混合空间的基本用法

项目资源文末百度网盘自取 什么是动画混合空间 混合空间分为两种: 通过一个数值控制通过两个数值控制 下面通过演示让大家更直观地了解 在Character文件夹中单击右键,选择动画(Animation),选择旧有的混合空间1D 然后选择骨骼&#xff08;动画是基于骨骼显示的,所以需要选择…

要将镜像推送到GitLab的Registry中的步骤

1、通过cli 模式登录gitlab &#xff08;命令行模式&#xff09; docker login git.asc-dede.de Username: haiyang Password: Login Succeeded 2、查看我的本地镜像&#xff1a; 3&#xff0c;推送镜像apollo_core到对应的gitlab项目的Registry 中 docker push registry.gi…

媒体发稿:澳门媒体发稿7个流程

推广平台澳门是一个重要的度假旅游娱乐终点&#xff0c;都是媒体领域热议的话题。对于澳门的媒体发稿营销推广要求&#xff0c;大家提供了一个简单易用的套餐系统软件&#xff0c;帮助大家在澳门媒体上发表推广文章。下面我们就根据7个阶段&#xff0c;详解构建这一套餐推广平台…

从0开始回顾MySQL---事务四大特性

事务概述 事务是一个最小的工作单元。在数据库当中&#xff0c;事务表示一件完整的事儿。一个业务的完成可能需要多条DML语句共同配合才能完成&#xff0c;例如转账业务&#xff0c;需要执行两条DML语句&#xff0c;先更新张三账户的余额&#xff0c;再更新李四账户的余额&…

ansible 部署FATE集群单边场景

官方文档&#xff1a; https://github.com/FederatedAI/AnsibleFATE/blob/main/docs/ansible_deploy_FATE_manual.md https://github.com/FederatedAI/AnsibleFATE/blob/main/docs/ansible_deploy_two_sides.md gitee详细文档&#xff1a; docs/ansible_deploy_one_side.md…

十二、项目采购管理

十二、项目采购管理 1、规划采购管理 ​ 规划采购管理是记录项目采购决策、明确采购方法&#xff0c;及识别潜在卖方的过程。 1,1、关键输入 组织过程资产 组织使用的各种合同协议类型也会影响规划采购管理过程中的决策。能够影响规划采购管理过程的组织过程资产包括&#xf…

洗地机选购技巧:希亦|追觅|添可|海尔洗地机值不值得买?多维度测评对比揭晓

如今市面上的洗地机质量良莠不齐&#xff0c;还有其琳琅满目的功能&#xff0c;让很多新手小白挑花了眼。所以&#xff0c;想要挑选一款适合自己家的洗地机&#xff0c;看似容易实则很难&#xff0c;毕竟洗地机是打扫家务的帮手&#xff0c;如果帮手不给力&#xff0c;效果也会…

企业内部培训考试系统单场培训会议解决方案

企业日常内训中&#xff0c;有些时候也会组织会议培训&#xff0c;再按照会议日程分上下午签到进行培训考勤&#xff0c;并形成培训签到表&#xff0c;如果用活动报名工具&#xff0c;一般只能实现单次的签到考勤&#xff0c;如果用培训班系统则操作过于繁琐&#xff0c;不利于…

想做人力RPO项目,网红老阳分享的这个RPO项目可行吗?

近年来&#xff0c;人力资源行业经历了快速的发展和变革&#xff0c;其中RPO(Recruitment Process Outsourcing&#xff0c;招聘流程外包)项目备受关注。网红老阳近期分享了一个RPO项目&#xff0c;让不少想要涉足这一领域的人产生了浓厚的兴趣。那么&#xff0c;老阳分享的RPO…

【C语言】五种方法实现C语言中大小写字母的转化

文章目录 &#x1f4dd;tolower/toupper函数&#x1f309;tolower&#x1f320; toupper &#x1f320; ASCII码关系&#x1f309;位操作&#x1f309;宏定义 &#x1f320;小巧第五位&#x1f6a9;总结 &#x1f4dd;tolower/toupper函数 &#x1f309;tolower tolower函数是…