Redis集群启动步骤

前提:处理好配置文件。
一、通过配置文件启动三个Redis实例。

执行命令:redis-server /opt/redis/cluster/16381/16381.conf
 

二、因为 Redis 集群至少需要 3 个主节点。所以这三个都是主节点,暂不考虑从节点。

创建一个包含 3 个主节点的 Redis 集群,每个主节点有 0个从节点

执行命令:redis-cli -a 123456 --cluster create 10.22.12.34:16379 10.22.12.34:16380 10.22.12.34:16381 --cluster-replicas 0

  • --cluster-replicas:后面跟随的是要为每个主节点创建的从节点副本的数量。
  • <nodeX_ip>:<nodeX_port>:这些是集群中每个 Redis 节点的 IP 地址和端口号。
  • -a 密码

成功创建了一个Redis集群:

创建集群过程中遇到的问题处理:

(1)、[ERR] Node 10.22.82.33:16379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

错误信息[ERR] Node 10.22.12.34:16379 is not empty表明您尝试创建Redis集群时,指定的节点不为空。这可能意味着该节点已经是另一个集群的一部分,或者它包含数据库0中的一些键。以下是解决这个问题的几个步骤:

  1. 检查现有节点: 使用CLUSTER NODES命令检查指定节点的状态和集群信息:

    redis-cli -p 16379 -a 123456 cluster nodes

    确认节点是否已经属于一个集群。

  2. 清空节点: 如果需要,使用FLUSHALL命令清空所有数据库中的键:

    redis-cli -p 16379 -a 123456 flushall

    注意:这将删除所有数据,确保在执行此操作之前已经备份了重要数据。

  3. 检查集群配置: 确保所有节点的配置文件(redis.conf)已正确设置为集群模式,并且具有相同的cluster-config-file路径。

  4. 重新初始化集群: 如果节点之前是集群的一部分,并且您已清空了节点,您可能需要使用redis-cli --cluster reset命令重置集群状态:

    redis-cli -p 16379 -a 123456 cluster reset

  5. 重新创建集群: 在清空并重置节点后,再次尝试创建集群:

    redis-cli --cluster create -a 123456 10.22.12.34:16379 10.22.12.34:16380 10.22.12.34:16381 --cluster-replicas 0

  6. 检查端口和密码: 确保您使用的端口号和密码与Redis配置中的设置相匹配。

  7. 检查网络连接: 确保所有节点之间的网络连接正常,并且没有防火墙或网络安全设置阻止节点之间的通信。

  8. 使用安全的密码管理: 尽管警告信息指出使用-a选项可能不安全,但如果您在安全的环境中操作,这通常不是问题。或者,您可以使用--askpass选项在执行时输入密码。

  9. 检查Redis版本: 确保您使用的Redis版本支持集群模式。

(2)如果--cluster-replicas 为1,即每个主节点有 1个从节点。我们只配置了三个主节点,当执行该命令:redis-cli --cluster create -a 123456 10.22.12.34:16379 10.22.12.34:16380 10.22.12.34:16381 --cluster-replicas 1 ,会报如下错误信息
 "*** ERROR: Invalid configuration for cluster creation. Redis Cluster requires at least 3 master nodes. This is not possible with 3 nodes and 1 replicas per node. At least 6 nodes are required."" 指出当前尝试创建的 Redis 集群配置无效,因为 Redis 集群至少需要 3 个主节点,而根据指定的副本数量,总共至少需要 6 个节点。

解释:

  • 主节点:在 Redis 集群中,主节点是负责处理写操作的节点。
  • 从节点:从节点是主节点的副本,用于提供读取操作的负载均衡和数据冗余。
Redis 集群的最小配置要求是 3 个主节点,因为集群需要多数派(即超过一半的主节点)来保证写操作的持久性和集群的稳定性。如果每个主节点只有一个从节点,那么至少需要 3 个主节点加上 3 个从节点,共 6 个节点。

解决方法:改成每个主节点有0个从节点

--cluster-replicas 1改成--cluster-replicas 0

即:redis-cli --cluster create -a 123456 10.22.12.34:16379 10.22.12.34:16380 10.22.12.34:16381 --cluster-replicas 0

三、测试验证-创建 Redis 集群成功后,您需要进行一系列测试来验证集群的功能和性能。以下是一些常见的测试和验证步骤:

1. **基本功能测试**:
   - 使用 `redis-cli` 连接到集群并执行一些基本的 SET 和 GET 操作,以确保键值对可以正确地存储和检索。

2. **数据分片验证**:
   - 由于 Redis 集群将数据分布在不同的节点上,您需要验证数据是否按照预期分片并存储在正确的节点上。

3. **读写操作**:
   - 在不同的节点上执行写入和读取操作,以确保集群能够处理读写请求。

4. **故障转移测试**:
   - 模拟主节点故障,以验证从节点能否成功提升为主节点并接管主节点的槽。

5. **网络分区测试**:
   - 模拟网络分区情况,以验证集群的稳定性和自动恢复能力。

6. **性能测试**:
   - 使用压力测试工具(如 `redis-benchmark`)来测试集群的性能,包括吞吐量和延迟。

7. **监控和日志检查**:
   - 检查 Redis 集群的监控指标和日志文件,以确保没有错误或警告。

8. **自动化测试**:
   - 如果可能,编写自动化测试脚本来执行上述测试,并验证集群的行为是否符合预期。

9. **使用客户端库**:
   - 使用支持 Redis 集群的客户端库在应用程序中进行测试,以确保应用程序能够正确地与集群交互。

10. **安全性检查**:
    - 验证密码保护、网络安全设置和访问控制列表(ACL)是否按预期工作。

### 示例测试命令:

```sh
# 连接到集群并设置键值对
redis-cli -a 123456 -c set mykey "myvalue"

# 从集群中获取键值
redis-cli -a 123456 -c get mykey

# 检查集群信息
redis-cli -a 123456 cluster info

# 检查集群节点状态
redis-cli -a 123456 cluster nodes
```

**注意**:

- 使用 `-a` 选项提供密码,如果集群配置了密码保护。
- 使用 `-c` 选项启用集群模式,这允许 `redis-cli` 在集群中自动重定向命令到正确的节点。

通过这些测试,您可以验证 Redis 集群是否正常工作,并确保其满足您的应用程序需求。如果在测试过程中发现问题,您可能需要回顾集群配置或寻求专业帮助。

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

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

相关文章

全网最适合入门的面向对象编程教程:27 类和对象的Python实现-Python中异常层级与自定义异常类的实现

全网最适合入门的面向对象编程教程&#xff1a;27 类和对象的 Python 实现-Python 中异常层级与自定义异常类的实现 摘要&#xff1a; 本文主要介绍了在使用 Python 进行面向对象编程时&#xff0c;异常的层级和如何使用继承关系完成自定义自己项目中异常类&#xff0c;并以传…

刷题了:144.二叉树的前序遍历心|145.二叉树的后序遍历心|94.二叉树的中序遍历己

递归遍历 文章讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%80%92%E5%BD%92%E9%81%8D%E5%8E%86.html#%E6%80%9D%E8%B7%AF 视频讲解:https://www.bilibili.com/video/BV1Wh411S7xt/?spm_id_from333.788&vd_sourcee70917aa6392827d1ccc8d85e1…

【Websim.ai】一句话让AI帮你生成一个网页

【Websim.ai】一句话让AI帮你生成一个网页 网站链接 websim.ai 简介 websim.ai接入了Claude Sonnet 3.5&#xff0c;GPT-4o等常用的LLM&#xff0c;只需要在websim.ai的官网指令栏中编写相关指令&#xff0c;有点类似大模型的Prompt&#xff0c;指令的好坏决定了网页生成的…

全网最全robotframework自动化测试环境搭建

一、前言 1、在2019年之前&#xff0c;robotframework-ride的版本一直是1.5.2.1&#xff0c;是2016年1月份的版本&#xff0c;只能安装在python2.7的环境上&#xff0c;导致如果想同时使用robotframework做测试且又需要python3环境编写python代码的小伙伴都需要在操作系统上安…

Open3D 计算去质心后的点云

目录 一、概述 1.1原理 1.2实现步骤 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2处理后点云 Open3D点云算法汇总及实战案例汇总的目录地址&#xff1a; Open3D点云算法与点云深度学习案例汇总&#xff08;长期更新&#xff09;-CSDN博客 一、…

linux运维脚本编写

目录 步骤1 系统基本信息的检查 步骤2 文件系统和磁盘信息的检查 步骤3 内存、cpu、进程信息的检查 1、内存信息检查 2、cpu信息检查 3、进程信息检查 步骤4 其他脚本 正文部分✌ 步骤1 系统基本信息的检查 巡检脚本 步骤2 文件系统和磁盘信息的检查 具体实现的shell脚本如…

NebulaGraph图数据库使用教程

一、NebulaGraph 是什么&#xff1f; NebulaGraph 是一款开源的图数据库&#xff0c;擅长处理千亿个顶点和万亿条边的超大规模数据集。 NebulaGraph 社区已成长为一个荟聚了众多用户、融合了各类图技术场景实践知识的活跃开源社区。你可以在其中与大家共同交流 NebulaGraph 周…

音视频开发入门很难?可能是你姿势不对

作为程序员&#xff0c;听到最烦的两个词一个是bug&#xff0c;在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「音视频开发的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大…

【书生大模型实战】L1-书生大模型全链路开源体系

一、关卡任务 观看本关卡视频后&#xff0c;写一篇关于书生大模型全链路开源开放体系的笔记。 视频链接&#xff1a;【书生浦语大模型全链路开源体系】 https://www.bilibili.com/video/BV1Vx421X72D/?share_sourcecopy_web 二、实验过程 书生浦语大模型全链路开源体系&am…

银行贷款信用评分不足?大数据帮你找回失去的“分”

在这个信息爆炸的时代&#xff0c;无论是个人还是企业&#xff0c;数据都成为了衡量信用和评估风险的重要依据。贷款、融资、求职甚至是日常消费&#xff0c;都可能因为一份好的数据报告而变得更加顺畅。那么&#xff0c;如何高效地查询自己的大数据&#xff0c;面对评分不足时…

【持续集成_02课_Jenkins+Git+Gogs综合应用】

https://www.cnblogs.com/xfeiyun/p/17510472.html Jenkins部署及持续集成——傻瓜式教程-腾讯云开发者社区-腾讯云 一、Jenkins安装 Jenkins由Java语言编写而成&#xff0c;安装包即是一个war包。因此&#xff0c;Jenkins的运行启动依赖于Java环境&#xff0c;同时&#xf…

G120 EPos配置方案及应用场景

EPos功能就是基本定位器功能,它可计算出轴的运行特性,使轴以时间最佳的方式移动到目标位置。EPos功能主要包括:设定值 直接给定(MDI)功能、 选择程序段功能、回参考点功能、点动功能、运行到固定挡块功能。 EPos功能通过处理给定的加速度、速度和位置值生成运行特性曲线,…

昇思 25 天学习打卡营第 15 天 | mindspore 实现 VisionTransformer 图像分类

1. 背景&#xff1a; 使用 mindspore 学习神经网络&#xff0c;打卡第 15 天&#xff1b;主要内容也依据 mindspore 的学习记录。 2. Vision Transformer 介绍&#xff1a; mindspore 实现 VisionTransformer 图像分类&#xff1b;VisionTransformer 论文地址 VisionTransfo…

Redis是多线程还是单线程?

文章目录 1、用户态和内核态2、阻塞IO3、非阻塞IO4、IO多路复用4.1 select4.2 poll4.3 epoll4.4 epoll中的ET和LT4.5 epoll的服务端流程 5、信号驱动6、异步IO7、对比8、Redis是单线程的吗&#xff1f;9、单线程多线程网络模型变更 1、用户态和内核态 1、ubuntu和Centos 都是Li…

day 02

作业&#xff1a; 1> 写一个日志文件&#xff0c;将程序启动后&#xff0c;每一秒的时间写入到文件中 1、2024- 7-29 10:31:19 2、2024- 7-29 10:31:20 3、2024- 7-29 10:31:21 ctrlc:停止程序 ./a.out 4、2024- 7-29 10:35:06 5、2024- 7-29 10:35:07 6、2024- 7-29 10:3…

轻松入门Linux—CentOS,直接拿捏 —/— <2>

一 、权限问题详细讲解 读写的权限可以分别写成 r, w, x 总共有九个权限&#xff0c;可以分组三大组分别是&#xff1a; user&#xff1a;当前文件所属用户的权限 group&#xff1a;与当前文件所属用户同一组的用户权限 others&#xff1a;其他用户的权限 故使用 u, g, o 来代表…

从装机到冯·诺依曼架构,揭秘计算机的硬件组成

在当今数字化的时代&#xff0c;计算机已经成为我们生活和工作中不可或缺的一部分。从日常办公到科学计算&#xff0c;从畅玩游戏到无人驾驶&#xff0c;计算机简直无所不能。而这一切的背后&#xff0c;离不开其精密而复杂的硬件组成。今天&#xff0c;我们将一起探索计算机的…

Selenium Java中的isDisplayed()方法

isDisplayed&#xff08;&#xff09;方法用于确定元素是否可见。本文将详细讨论 的WebElement接口isDisplayed&#xff08;&#xff09;方法。 方法声明- boolean isDisplayed&#xff08;&#xff09;它能做什么&#xff1f;此方法用于判断元素是否显示。这个方法节省了我们…

带有扰动观测器的MPC电机控制

模型预测控制(Model Predictive Contro1, MPC)是一种先进的控制策略&#xff0c;虽然具有鲁棒性、建模简单、处理多变量系统、显示约束、预测未来行为和优化性能的能力等优势。它的不足在于预测控制行为的计算需要繁琐的计算量&#xff0c;以及抗干扰能力较弱。这里提出基于扰动…

视创云展:重塑线上会议体验,六大核心引领数字空间新纪元

视创云展以其革命性的“数字活动”解决方案为核心&#xff0c;精心构建了一个超越想象的未来数字世界。通过整合六大前沿技术模块&#xff0c;它不仅为参会者打造了一个身临其境的线上会议环境&#xff0c;更让每一位参与者都能跨越物理界限&#xff0c;深刻感受会议的每一个瞬…