docker搭建redis三主三从集群,及其常见问题解决

在这里插入图片描述

目录结构

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

redis.conf主要参数

每个配置文件都要修改对应的端口

bind 0.0.0.0
protected-mode no
#每个配置文件都要修改端口
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
supervised no
loglevel notice
#日志文件路径
#logfile "/mydata/master_redis/log/6379.log"
databases 16
always-show-logo yes
save ""
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
masterauth "admin"
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
#slaveof ip1 6379
#slave-announce-ip ip1
#slave-announce-port 6379#配置密码
requirepass "admin"#配置集群相关
cluster-enabled yes
cluster-config-file node.conf
cluster-node-timeout 5000#开启aof
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysecaof-rewrite-incremental-fsync yes

docker-compose.yml

version: '3.1'
services:cluster_redis_6379:image: redis:latestcontainer_name: cluster_redis_6379# network_mode: "host"restart: alwaysports:- 6379:6379- 16379:16379command: redis-server /etc/redis/redis.confvolumes:- ./data/data_6379:/data- ./conf/redis_6379.conf:/etc/redis/redis.confcluster_redis_6380:image: redis:latestcontainer_name: cluster_redis_6380# network_mode: "host"restart: alwaysports:- 6380:6380- 16380:16380command: redis-server /etc/redis/redis.confvolumes:- ./data/data_6380:/data- ./conf/redis_6380.conf:/etc/redis/redis.confcluster_redis_6381:image: redis:latestcontainer_name: cluster_redis_6381# network_mode: "host"restart: alwaysports:- 6381:6381- 16381:16381command: redis-server /etc/redis/redis.confvolumes:- ./data/data_6381:/data- ./conf/redis_6381.conf:/etc/redis/redis.confcluster_redis_6382:image: redis:latestcontainer_name: cluster_redis_6382# network_mode: "host"restart: alwaysports:- 6382:6382- 16382:16382command: redis-server /etc/redis/redis.confvolumes:- ./data/data_6382:/data- ./conf/redis_6382.conf:/etc/redis/redis.confcluster_redis_6383:image: redis:latestcontainer_name: cluster_redis_6383# network_mode: "host"restart: alwaysports:- 6383:6383- 16383:16383command: redis-server /etc/redis/redis.confvolumes:- ./data/data_6383:/data- ./conf/redis_6383.conf:/etc/redis/redis.confcluster_redis_6384:image: redis:latestcontainer_name: cluster_redis_6384# network_mode: "host"restart: alwaysports:- 6384:6384- 16384:16384command: redis-server /etc/redis/redis.confvolumes:- ./data/data_6384:/data- ./conf/redis_6384.conf:/etc/redis/redis.conf

容器内端口不能都是是6379,集群总线接口是端口号+10000
端口号与network_mode: "host"不能一起配置,出现下述问题“主机”网络模式与端口绑定不兼容问题,具体看github,有对应解释。

ERROR: for cluster_redis_6379  "host" network_mode isincompatible with port_bindings

在这里插入图片描述

https://github.com/docker/compose/issues/8326

启动redis容器

docker-compose up -d

在这里插入图片描述

进入容器

 docker exec -it cluster_redis_6379 bash

搭建集群

 redis-cli -a admin --cluster create \47.120.0.38:6379 \47.120.0.38:6380 \ 47.120.0.38:6381 \ 47.120.0.38:6382 \47.120.0.38:6383 \47.120.0.38:6384 \--cluster-replicas 1   #一个主节点分配一个从节点

集群节点分配结果

在这里插入图片描述

集群槽位分配结果

在这里插入图片描述

遇到的问题

如果一直卡在Waiting for the cluster to join,那一般是端口问题,看看集群总线端口是否开启,我在这遇到问题,修改了redis.conf中的端口,将容器中端口都是6379改成不同的,并且在docker-compose.yml的port中,加上各个节点的总线端口好了。

查看集群所有节点的关系

cluster nodes

在这里插入图片描述

查看单个节点信息

 info replication

在这里插入图片描述

集群数据库数量问题

Response received : -ERR SELECT is not allowed in cluster mode

在集群模式下这个配置是不起作用的,集群客户端是不支持多数据库db的,只有一个数据库默认是SELECT 0;
在这里插入图片描述
在某个控制台里,比如6379,如果存放的key值对应的槽位不在6379的槽位之中,是不能存放的

127.0.0.1:6379> set 222 222
(error) MOVED 7715 47.120.0.38:6380

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

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

相关文章

【数据结构OJ题】环形链表

原题链接:https://leetcode.cn/problems/linked-list-cycle/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 整体思路:定义快慢指针fast,slow,如果链表确实有环,fast指针一定会…

matlab使用教程(21)—求函数最值

1. 求函数最优值 1.1求一元函数的最小值 如果给定了一个一元数学函数,可以使用 fminbnd 函数求该函数在给定区间中的局部最小值。例如,请考虑 MATLAB 提供的 humps.m 函数。下图显示了 humps 的图。 x -1:.01:2; y humps(x); plot(x,y) xlabel(x)…

关于ios Universal Links apple-app-site-association文件 Not Found的问题

1. 背景说明 1.1 Universal Links 是什么 Support Universal Links 里面有说到 Universal Links 是什么、注意点、以及如何配置的。简单来说就是 当您支持通用链接时,iOS 用户可以点击指向您网站的链接,并无缝重定向到您安装的应用程序 大白话就是说&am…

oracle警告日志\跟踪日志磁盘空间清理

oracle警告日志\跟踪日志磁盘空间清理 问题现象: 通过查看排查到alert和tarce占用大量磁盘空间 警告日志 /u01/app/oracle/diag/rdbms/orcl/orcl/alert 跟踪日志 /u01/app/oracle/diag/rdbms/orcl/orcl/trace 解决方案: 用adrci清除日志 确定目…

如何评价国内的低代码开发平台(apaas)?

什么是低代码?低代码平台有什么价值?低代码开发到底能适应多广泛场景?低代码到底能做出多么复杂的应用?低代码平台应该如何筛选? 在低代码重新火爆的今天,我们又该如何利用低代码? 01 什么是a…

Java学习笔记38

Java笔记38 注解 什么是注解 Annotation是从 JDK 5.0 开始引入的新技术。Annotation的作用︰ 不是程序本身,可以对程序作出解释。(这一点和注释 - comment没什么区别)可以被其他程序(比如编译器等)读取。 Annotatio…

多个微信号怎么快速发圈、自动加好友、自动回复?

一键助你快速发圈、批量自动加好友、自动回复,好用哭了! 微信管理系统是一个聚合管理多个微信账号的利器,让你的微信管理变得简单高效。不管你是电商、微商,还是拥有多个微信号的用户,这一款微信管理软件都可以满足你的…

Linux系统之安装OneNav个人书签管理器

Linux系统之安装OneNav个人书签管理器 一、OneNav介绍1.OneNav简介2.OneNav特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本3.3 检查本地yum仓库状态 四、安装httpd服务4.1 安装httpd4.2 启动httpd服务4…

解决charles无法抓取localhost数据包

我们有时候在本地调试的时候,使用charles抓取向本地服务发送的请求的,发现无法抓取。 charles官方也作了相应说明: 大概意思就是 某些系统使用的是硬编码不能使用localhost进行传输,所以当我们连接到 localhost的时候&#xff0c…

MySQL数据库:内置函数

日期函数 规定:日期:年月日 时间:时分秒 函数名称作用描述current_date()当前日期current_time()当前时间current_timestamp()当前时间戳date(datetime)返回datetime参数的日期部分date_add(date,interval d_value_type)在date中添加…

C++笔记之虚函数重写规则、返回类型协变、函数的隐藏

C笔记之虚函数重写规则、返回类型协变、函数的隐藏 code review! 文章目录 C笔记之虚函数重写规则、返回类型协变、函数的隐藏1.返回类型协变2.C中函数的隐藏 —— C Primer Plus (第6版) —— cppreference 1.返回类型协变 2.C中函数的隐藏 在C中&a…

【探索C++】string类:更强大的字符串处理

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,Linux基础,ARM开发板,软件配置等领域博主🌍快上🚘,一起学习,让我们成为一个强大的攻城狮!送给自己和读者的…

Linux系统安全:NAT(SNAT、DNAT)

目录 一.NAT 二.SNAT 三.DNAT 一.NAT NAT: network address translation,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链 请求报文:修改源/目标IP, 响应报文:修改源/目标IP,根据…

【Unity3D赛车游戏】【二】如何制作一个真实模拟的汽车

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

[LeetCode111双周赛LeetCode359周赛] DP双指针

参考灵神和闫总的讲解和代码: https://www.bilibili.com/video/BV1rP411s7Z5 https://space.bilibili.com/206214 7006. 销售利润最大化 https://leetcode.cn/problems/maximize-the-profit-as-the-salesman/ Solution 动态规划 哈希表 首先按照 end 的顺序分…

计算CRC16出现两次计算结果不同的问题

传入CRC计算函数的原始数据和长度是一样的,但是前后两次计算的结果竟然不一样。 开发环境是KEIL5,mcu是一个2K/4K SRAM的M0内核的单片机。 找了半天原因,还计算了一下堆栈: 目前在优化等级为-O2时,程序占用flash大小…

【FM-CW雷达】一种通信系统技术——调频连续波信号(FM-CW)(Simulink实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

人事变动?前沃尔沃汽车大中华区总裁钦培吉将加盟吉利

根据消息,吉利控股集团高级副总裁杨学良在今天上午通过微博宣布,前沃尔沃汽车大中华区总裁钦培吉将加盟吉利。钦培吉将担任吉利汽车集团销售公司副总经理,并负责集团渠道发展委员会的主任一职,向吉利汽车集团的高级副总裁林杰报告…

C#生产流程控制(串行,并行混合执行)

开源框架CsGo https://gitee.com/hamasm/CsGo?_fromgitee_search 文档资料: https://blog.csdn.net/aa2528877987/article/details/132139337 实现效果 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37…

【通俗易懂】如何使用GitHub上传文件,如何用git在github上传文件

目录 创建 GitHub 仓库 使用 Git 进行操作 步骤 1:初始化本地仓库 步骤 2:切换默认分支 步骤 3:连接到远程仓库 步骤 4:获取远程更改 步骤 5:添加文件到暂存区 步骤 6:提交更改 步骤 7&#xff1a…