使用docker-compose部署Redis集群

一、部署三主三从的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命令检查迁移数据是否完整。集群要把每个节点的总和加起来。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring揭秘:ClassPathScanningProvider接口应用场景及实现原理!

技术应用场景 ClassPathScanningCandidateComponentProvider是Spring框架中一个非常核心的类,它主要用于在类路径下扫描并发现带有特定注解的组件,支持诸如ComponentScan、Component、Service、Repository和Controller等注解的自动扫描和注册。 ClassP…

.NET开源快速、强大、免费的电子表格组件

今天大姚给大家分享一个.NET开源(MIT License)、快速、强大、免费的电子表格组件,支持数据格式、冻结、大纲、公式计算、图表、脚本执行等。兼容 Excel 2007 (.xlsx) 格式,支持WinForm、WPF和Android平台:ReoGrid。 项…

普发Pfeiffer TPG256A MaxiGauge 真空计控制器接口通讯针脚等详情见图目录

普发Pfeiffer TPG256A MaxiGauge 真空计控制器接口通讯针脚等详情见图目录

强化学习中SARSA(State-Action-Reward-State-Action)和Q-learning的区别

SARSA(State-Action-Reward-State-Action)和Q-learning是两种经典的强化学习算法,它们都用于学习最优策略以使智能体在一个环境中获得最大的累积奖励。它们之间的主要区别在于它们更新动作值函数(Q值函数)的方式以及其…

SwiftUI组件-DatePicker

SwiftUI组件-DatePicker 本文记录一下SwiftUI组件-DatePicker import SwiftUIstruct DatePickerBootCamp: View {State var selectedDate: Date Date()var dateFormatter: DateFormatter {let formatter DateFormatter()formatter.dateStyle .shortformatter.timeStyle .…

使用kill()函数向进程发送信号

本片文章的学习记录总结来源于:https://www.bilibili.com/cheese/play/ep182660?csourcecommon_hp_history_null&t11&spm_id_from333.1007.top_right_bar_window_history.content.click 通常在Linux系统中,可以使用 kill or killall 命令向指定…

OpenCASCADE开发指南<十二>:OCC创建三维瓶子模型

在OpenCASCADE有一个例程,在 官方帮助网站中可以找到。程将教你如何使OpenCASCADE的API来进行三维建模。教程的目的不是描述所有的类,而是帮助你思考如何将OpenCASCADE作为一种工具。 1 概述 利用OpenCASCADE的API创建一个三维瓶子,形状如下…

如何在Linux部署DataEase数据分析服务并实现无公网IP远程分析内网数据信息

文章目录 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 前言 DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务…

IBM:《2024年消费者调研:无处不在的人工智能彻底变革零售业》

1月17日,IBM商业价值研究院最近发布了第三份两年一度的消费者调研报告。 这项名为《无处不在的人工智能彻底改变零售业:客户不会等待》的报告,对包含中国在内的全球近20000名消费者进行了调研,相关结果反映了消费者对零售体验的普…

【Python】进阶学习:一文了解NotImplementedError的作用

【Python】进阶学习:一文了解NotImplementedError的作用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望…

2020-11-08 字符串指定位置倒序输出

缘由https://bbs.csdn.net/topics/398165677 //字符串指定位置倒序输出缘由https://bbs.csdn.net/topics/398165677char aa[] "abcABCabc\n";int a 3, b 5, c 0, d b;while (aa[c] ! \n)if (c < a || c > b)cout << aa[c]; else if(d > a) cout …

目标检测——YOLOv4算法解读

论文&#xff1a;YOLOv4&#xff1a;Optimal Speed and Accuracy of Object Detection 作者&#xff1a;Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao 链接&#xff1a;https://arxiv.org/pdf/2004.10934.pdf 代码&#xff1a;https://github.com/AlexeyAB/darkne…

弹性盒子布局 Flexbox Layout

可以嵌套下去 1.display 属性 默认行排列 <style>.flex-item{ height: 20px;width: 10px;background-color: #f1f1f1;margin: 10px;}</style> </head> <body> <div class"flex-container"><div class"flex-item">1&l…

如何实现固定公网地址远程SSH连接Linux Deepin系统

文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统&#xff0c;专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致&#xff0…

探索数据结构:双向链表的灵活优势

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 前言 前面我们学习了单链表&#xff0c;它解决了顺序表中插入删除需…

第110讲:Mycat实践指南:指定Hash算法分片下的水平分表详解

文章目录 1.应用指定Hash算法分片的概念2.使用应用指定Hash算法分片对某张表进行水平拆分2.1.在所有的分片节点中创建表结构2.2.配置Mycat实现应用指定Hash算法分片的水平分表2.2.1.配置Schema配置文件2.2.2.配置Rule分片规则配置文件2.2.3.配置Server配置文件2.2.4.重启Mycat …

什么牌子的蓝牙耳机质量好?2024年精选机型,真实体验分享

​对于新手来说&#xff0c;真无线蓝牙耳机的选购可能显得有些复杂。网络上有许多关于蓝牙耳机品牌、音质、舒适度的讨论。我整理了五款佩戴舒适且音质表现不错的真无线蓝牙耳机&#xff0c;希望能为你提供有价值的参考&#xff0c;不要错过哦&#xff01; 一、蓝牙耳机选购技巧…

训练YOLOv8m时AMP显示v8n

在训练Yolov8模型时&#xff0c;使用AMP&#xff08;Automatic Mixed Precision&#xff09;可以加速训练过程并减少显存的使用。AMP是一种混合精度训练技术&#xff0c;它通过将模型参数的计算转换为低精度&#xff08;如半精度&#xff09;来提高训练速度&#xff0c;同时保持…

es 分词器详解

基本概念 分词器官方称之为文本分析器&#xff0c;顾名思义&#xff0c;是对文本进行分析处理的一种手段&#xff0c;基本处理逻辑为按照预先制定的分词规则&#xff0c;把原始文档分割成若干更小粒度的词项&#xff0c;粒度大小取决于分词器规则。 分词器发生的时期 1、分词…

pytorch之诗词生成6--eval

先上代码&#xff1a; import tensorflow as tf from dataset import tokenizer import settings import utils# 加载训练好的模型 model tf.keras.models.load_model(r"E:\best_model.h5") # 随机生成一首诗 print(utils.generate_random_poetry(tokenizer, model)…