当前位置: 首页 > news >正文

在Linux系统下基于Docker搭建Redis集群

创建镜像

#部署Redis集群,该集群有3个节点; --cluster-enabled yes允许启用集群; 
docker create --name redis-node--01 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file  redis-node--01.conf --port 6379docker create --name redis-node--02 --net host -v /data/redis-data/node2:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file  redis-node--02.conf --port 6380docker create --name redis-node--03 --net host -v /data/redis-data/node3:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file  redis-node--03.conf --port 6381#启动容器 docker start redis-node--01 redis-node--02 redis-node--03  
(docker ps -a是查看docker下所有的容器)

此时我们通过docker inspect 容器id命令看到的各个redis容器的IP地址为空

因为使用的是HOST模式启动的容器,容器ip和主机共享,为101.33.200.207

配置Linux防火墙(配置方法如下:)
1、查看防火墙状态

systemctl status firewalld

2、如果不是显示active状态(或者如果是dead状态)说明防火墙未开启,需要打开防火墙

systemctl start firewalld

3、# 查看所有已开放的临时端口(默认为空)

firewall-cmd --list-ports

查看所有永久开放的端口(默认为空)

firewall-cmd --list-ports --permanent

添加永久开放的端口(示例:开放223端口)(注意:此处我们需要开放6379、6380、6381、16379、16380、16381一共六个端口)

firewall-cmd --add-port=223/tcp --permanent

关闭永久端口

firewll-cmd --remove-port=80/tcp --permanent

配置结束后需要输入重载命令并重启防火墙以生效配置

firewall-cmd --reload
systemctl restart firewalld

使用Docker搭建Redis集群的时候,在redis-cli --cluster create环节,一直卡到"Waiting for
the cluster to join”环节。百思不得其解,后续通过Redis官网,耗费一段时间后,才得以解决。

Redis集群中的各个节点,需要开放一个端口,同其他节点建立连接,用于接收心跳数据等操作。也就是说,redis-node1节点,开放6379端口供client连接时,同时提供16379端口(10000

  • 6379),供其他Redis节点连接。比如我们此处使用的三个节点的端口分别为6379、6380、6381,所以此时需要将6379、6380、6381开启之外,还要开启端口16379、16380、16381用于节点之间的通信。(注意如果使用的是云服务器,还需要在阿里云安全组
    或 腾讯云服务器控制台防火墙中,开放6379、6380、6381、16379、16380、16381六个端口)

集群初始化过程中,需要同其他Redis建立连接,进行通信。若节点间无法连接,此时会阻塞,这也就是一直阻塞到"Waiting for the
cluster to join"环节的原因。

细心的读者,不难发现,上述给出Redis节点创建命令,通过–net
host,指定网络类型为host,使得容器与宿主机使用同一网络,从而规避了这类问题。
————引用自:https://blog.csdn.net/weixin_46053046/article/details/120102997

 #进入redis-node01容器进行操作(docker exec -it 容器名称  /bin/bash进入容器终端并且的保留为容器终端的输入形式(-it和bash的结合作用))
docker exec -it redis-node--01 /bin/bash#启动集群
redis-cli --cluster create 101.33.200.207:6379 101.33.200.207:6380 101.33.200.207:6381 --cluster-replicas 0#注意--cluster-replicas 0意思是设置为0个子节点

启动完成如下所示:

此时进入第一个节点的redis服务:redis-cli -h 101.33.200.207 -p 6380 -c
-c的意思是允许集群重定向,比如我在6380上操作,它可能重定向到6381上去,这就是集群下的操作
执行命令 CLUSTER NODES,发现问题,每个节点中的当前节点的ip都变成了10.0.20.14

这是不对的。
以redis-node–01容器为例:

  1. 首先下载VIM编辑器:先执行apt-get update,完毕后执行apt-get install vim。
  2. 退出redis控制台,到容器层,输入Linux指令ls,发现有配置文件redis-node–01.conf。
  3. 使用vim redis-node–02.conf,将配置文件中的10.0.20.14 改为 公网ip 101.33.200.207。
  4. 执行命令:redis-cli -a cyclone -c -h 101.33.200.207 -p 6379 shutdown停止redis集群中的当前节点。
  5. 发现此时退出到了容器外。
  6. 此时根据容器id,重新start容器,此redis节点会自己重新加入集群。
  7. 再进入容器。
  8. 再输入redis-cli -c进入Redis控制台
  9. 再输入cluster nodes,发现当前节点的ip正常了。

以上操作redis-node–01、redis-node–02、redis-node–03,三个容器都要操作。
测试集群是否可用:

Redis集群搭建完成。
可以在外部使用当前主机ip+端口连接redis了。

注意:redis容器重启后,需要删除xxx.aof、xxx.rdb、xxx.conf三个文件,才能重新启动集群。

相关文章:

在Linux系统下基于Docker搭建Redis集群

创建镜像 #部署Redis集群,该集群有3个节点; --cluster-enabled yes允许启用集群; docker create --name redis-node--01 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file redis-node--01.conf --port 6379…...

牛客网刷题Day5

1.内容中可以使用哪个元素来表示 <article> 标签外的内容&#xff1f; A aside B cite C article D class 正确答案&#xff1a;A 解析&#xff1a;<aside> 标签定义 <article> 标签外的内容&#xff0c;aside 的内容应该与附近的内容相关 2. 以下的HTML代码…...

Vue.js 中的动态组件是什么?如何使用动态组件?

Vue.js 中的动态组件是什么&#xff1f;如何使用动态组件&#xff1f; Vue.js是一种流行的前端框架&#xff0c;它提供了一种称为“动态组件”的技术&#xff0c;使得我们可以动态地切换组件的内容和结构。在本文中&#xff0c;我们将深入探讨Vue.js中的动态组件&#xff0c;包…...

2023年京东618预售数据:传统滋补成预售黑马,预售额超27亿

这一期主要分享一下此次京东618预售期间的一个黑马行业——传统滋补。不管是从预售量和预售额来看&#xff0c;传统滋补品类的成绩都是此次大促中的佼佼者。 究其原因&#xff0c;近几年养生滋补也掀起了一股“国潮风”。在小红书、抖音等社交平台上&#xff0c;关于“健康养生…...

【Linux系统基础快速入门详解】Linux 常用文件过滤编辑命令原理详解和每个命令使用场景以及实例

Linux 文件过滤编辑命令:echo,printf,cat,tee,特殊符号: {a..z},seq序列,rename 文件过滤编辑命令:echo:将字符串输出到终端或文件中。常用于输出环境变量,或者在shell脚本中输出一些提示信息。例如:echo $PATH,输出环境变量PATH的值。printf:格式化输出字符串到终端或文…...

05WEB系统的通信原理图

WEB系统的通信原理 名称作用URL统一资源定位符, 例如:http://www.baidu.com域名在https://www.baidu.com/这个网址中www.baidu.com 是一个域名IP地址计算机在网络当中的一个身份证号, 在同一个网络当中IP地址是唯一的, 有了IP地址两台计算机直接才能建立连接通信端口号一个计算…...

降低试错成本,低代码或成企业数字化转型突破口

近年来&#xff0c;随着市场竞争和宏观环境的双重驱动&#xff0c;数字化已经成为企业提升竞争性和保持可持续发展的重要手段&#xff0c;大多数企业意识到数字化转型的重要性&#xff0c;纷纷入局。 作为数据驱动业务创新的一个新方法&#xff0c;但行业成功的案例并不多&…...

串口助手(串口发送接收数据, 定时, 清空, hex显示)

文章目录 前言一、串口接收数据1. 默认接收&#xff0c;换行&#xff0c;hex显示2. 清空接收区数据3. 保存接受区数据 二、串口发送数据1. 默认发送2. 定时发送 三、串口助手优化1. 设置组合框当前内容。2. 未检测到串口&#xff0c;弹出警告。3. 载入文件 总结 前言 这篇文章…...

bp神经网络

%% 2.读取数据&#xff08;两个文件&#xff09; datareadmatrix(C:\Users\Administrator\Desktop\synthetic_01.csv); file_lengthlength(data); for i1:file_length %用for循环去导入第二个csv文件 namedata(i); pathstrcat(C:\Users\Administrator\Desktop\ydata.…...

strace交叉编译后对特定文件的写流程进行监控和过滤

交叉编译 为了支持strace对pid进行解析&#xff0c;因系统默认支持的strace版本较低&#xff0c;需要使用较新的版本对strace进行交叉编译&#xff0c;这里使用了github上的 https://github.com/strace/strace/releases 发布的strace v5.19版本&#xff0c;2022-08-12发布。lo…...

初识网络之TCP网络套接字

目录 一、TCP常用网络接口 1. 监听服务器 2. 接收链接 3. 发起连接 二、实现一个简单的tcp程序 1. 日志函数 2. 服务端文件 2.1 .hpp文件 2.2 .cpp文件 3. 客户端文件 3.1 .hpp文件 3.2 .cpp文件 4. 程序测试 三、实现支持多个用户并发访问的tcp程序 1. 当前程序…...

自然语言处理从入门到应用——自然语言处理的基本问题:文本分类(Text Classification, Text Categorization)

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 文本分类&#xff08;Text Classification, Text Categorization&#xff09;是最简单也是最基础的自然语言处理问题。即针对一段文本输入&#xff0c;输出该文本所属的类别&#xff0c;其中&#xff0c;类别是事先定义…...

【论文】——Robust High-Resolution Video Matting with Temporal Guidance浅读

视频matting 时序监督 摘要 我们介绍了一种稳健、实时、高分辨率的人类视频抠图方法&#xff0c;该方法取得了新的最先进性能。我们的方法比以前的方法轻得多&#xff0c;可以在Nvidia GTX 1080Ti GPU上以76 FPS处理4K&#xff0c;以104 FPS处理HD。与大多数现有的逐帧作为独…...

第四章、用户体验五要素之范围层解析(本文作用是通俗讲解,让你更容易理解)

把用户需求和产品目标转换成特定的产品时应该提供给用户什么样的内容或者功能就变成了范围层。 范围层就是定义需求。如果不能很好的定义需求&#xff0c;那么你的软件永远都是测试待发布版本。如果产品只是负责人脑海中的一个不定型印象&#xff0c;那将是灾难性的。 1、产品负…...

计算机毕业论文内容参考|基于python的农业温室智能管理系统的设计与实现

文章目录 导文文章重点前言课题内容相关技术与方法介绍技术分析技术设计技术设计技术实现方面系统测试和优化总结与展望本文总结后续工作展望导文 计算机毕业论文内容参考|基于python的农业温室智能管理系统的设计与实现 文章重点 前言 本文介绍了一种基于Python的农业温室智…...

Java 进阶 -- 流

Java I/O, NIO, and NIO.2 BaseStream<T, S extends BaseStream<T, S>> extends AutoCloseable 流(streams)的基本接口&#xff0c;流是支持顺序和并行聚合操作的元素序列。下面的例子演示了一个使用流类型stream和IntStream的聚合操作&#xff0c;计算红色小部件…...

硬件 TCP/IP 协议栈

目录 全硬件的TCP/IP 协议栈简介以太网接入单片机方案以太网接口芯片CH395Q 简介以太网接口芯片CH395Q 命令简介以太网接口芯片CH395Q 寄存器配置与使用移植CH395Q 源码 TCP_Client 实验TCPClient 配置流程TCPClient 实验硬件设计程序设计下载验证 WebServer 实验WebServer 简介…...

word恢复和粘贴按钮变灰色,不可用怎么办?

如果 Word 中的恢复和粘贴按钮变成灰色&#xff0c;可能是由于以下原因之一&#xff1a; 1. 文档处于只读模式。 2. 与 Office 相关的某些组件已损坏或缺失。 3. Word 的文件权限被配置为只读。 以下是一些可能的解决方法&#xff1a; 1. 检查文档是否处于只读模式。 如果是…...

【unity技巧】Physics2D Raycast、Overlapcircle、OverlapBox检测的用法

文章目录 分析检测地面1. 使用Raycast1.1 介绍1.3 场景窗口可视化1.4 完整实例代码1.4 存在问题1.4.1 问题11.4.2 问题2 2. 使用Overlapcircle2.1 介绍2.2 场景窗口可视化2.3 完整实例代码2.4 存在问题 3. 使用OverlapBox3.1 介绍3.2 场景窗口可视化3.3 完整实例代码3.4 注意事…...

一、kafka入门

Kafka入门 为什么要用消息中间件&#xff1f; 异步处理 场景说明&#xff1a;用户注册后&#xff0c;需要发注册邮件和注册短信。传统的做法有两种1.串行的方式&#xff1b;2.并行方式。 串行方式&#xff1a;将注册信息写入数据库成功后&#xff0c;发送注册邮件&#xff…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...