Redis6.0.9配置redis集群

写在前面

最近在完成暑期大作业,期间要将项目部署在云服务器上,其中需要进行缓存的配置,决定使用Redis,为了使系统更加健壮,选择配置Redis-Cluster。由于服务器资源有限,在一台服务器上运行6个Redis Instance并分配不同的端口进行模拟,当有更多服务器资源时在进行真实的配置。

本文主要记录配置过程中遇到的一些问题,供日后复习参考。如果有错误,还请指正。


环境

Redis 6.0.9
Ubuntu 18.04


安装Redis

此处不再赘述,如有疑问请查找网络上相关文章进行安装。

配置Redis-Cluster

  1. /usr/local下创建redis-cluster目录

  2. 将已安装的Redis文件夹复制六次到redis-cluster目录下

    cp -r /usr/local/redis /usr/local/redis-cluster/redis01
    cp -r /usr/local/redis /usr/local/redis-cluster/redis02
    cp -r /usr/local/redis /usr/local/redis-cluster/redis03
    cp -r /usr/local/redis /usr/local/redis-cluster/redis04
    cp -r /usr/local/redis /usr/local/redis-cluster/redis05
    cp -r /usr/local/redis /usr/local/redis-cluster/redis06
    

    目录结构如下图,其中start-all.shstop-all.sh为启动脚本。

目录结构.png
  1. 修改redis01-redis06每个目录下的redis.conf文件.

    以redis01目录的redis.conf为例,其他类似,修改内容如下:

    bind 0.0.0.0 ::1                 # 接受来自所有ip地址的连接
    protected-mode no                # 关闭保护模式
    port 7001                        # 连接端口号,分别设置为7001-7006
    daemonize yes                    # 以守护进程运行
    pidfile /usr/local/redis-cluster/redis01/redis01.pid
    logfile /usr/local/redis-cluster/redis01/redis01.log
    dir /usr/local/redis-cluster/redis01/data/# 以上三行的序号为01-06,根据redis实例的标号命名
    appendonly yes
    appendfilename "appendonly.aof"
    cluster-enabled yes              # 开启集群
    cluster-config-file node01.conf  # node01-node06,文件名不能相同
    

    注意,修改完配置文件后需要在每个redis的文件夹下创建data目录,用于存放appendonly.aofnode0x.confdump.rdb文件。

  2. 分别以配置文件指定的配置启动六个redis-server

    在/usr/local/redis-cluster路径下运行如下命令以启动一个 redis-server 实例,其他类似

    redis01/src/redis-server redis01/redis.conf
    

    手动启动过于麻烦,可以编写脚本start-all.sh,内容如下

    redis01/src/redis-server redis01/redis.conf
    redis02/src/redis-server redis02/redis.conf
    redis03/src/redis-server redis03/redis.conf
    redis04/src/redis-server redis04/redis.conf
    redis05/src/redis-server redis05/redis.conf
    redis06/src/redis-server redis06/redis.conf
    

    更改权限

    chmod +x start-all.sh
    

    运行脚本即可启动六个redis-server实例

  3. 创建集群

    输入以下命令并运行:(redis 5.x以下的版本无法通过这种方式创建集群)

    redis01/src/redis-cli --cluster create x.x.x.x:7001 x.x.x.x:7002 x.x.x.x:7003 x.x.x.x:7004 x.x.x.x:7005 x.x.x.x:7006 --cluster-replicas 1
    

    其中x.x.x.x是redis实例所在服务器的公网ip,7001-1006是六个redis实例分别监听的端口号。

    出现如下提示,则说明redis集群已创建完成。

    >>> Creating cluster
    >>> Performing hash slots allocation on 6 nodes...
    Using 3 masters:
    x.x.x.x:7001
    x.x.x.x:7002
    x.x.x.x:7003
    Adding replica x.x.x.x:7004 to x.x.x.x:7001
    Adding replica x.x.x.x:7005 to x.x.x.x:7002
    Adding replica x.x.x.x:7006 to x.x.x.x:7003
    M: f4ee0a501f9aaf11351787a46ffb4659d45b7bd7 x.x.x.x:7001slots:0-5460 (5461 slots) master
    M: 671a0524a616da8b2f50f3d11a74aaf563578e41 x.x.x.x:7002slots:5461-10922 (5462 slots) master
    M: 18948dab5b07e3726afd1b6a42d5bf6e2f411ba1 x.x.x.x:7003slots:10923-16383 (5461 slots) master
    S: 34e322ca50a2842e9f3664442cb11c897defba06 x.x.x.x:7004replicates f4ee0a501f9aaf11351787a46ffb4659d45b7bd7
    S: 62a00566233fbff4467c4031345b1db13cf12b46 x.x.x.x:7005replicates 671a0524a616da8b2f50f3d11a74aaf563578e41
    S: 2cb649ad3584370c960e2036fb01db834a546114 x.x.x.x:7006replicates 18948dab5b07e3726afd1b6a42d5bf6e2f411ba1
    Can I set the above configuration? (type 'yes' to accept): yes
    >>> Nodes configuration updated
    >>> Assign a different config epoch to each node
    >>> Sending CLUSTER MEET messages to join the cluster
    Waiting for the cluster to join...
    >>> Performing Cluster Check (using node x.x.x.x:7001)
    M: f4ee0a501f9aaf11351787a46ffb4659d45b7bd7 x.x.x.x:7001slots:0-5460 (5461 slots) master1 additional replica(s)
    M: 671a0524a616da8b2f50f3d11a74aaf563578e41 x.x.x.x:7002slots:5461-10922 (5462 slots) master1 additional replica(s)
    S: 2cb649ad3584370c960e2036fb01db834a546114 x.x.x.x:7006slots: (0 slots) slavereplicates 18948dab5b07e3726afd1b6a42d5bf6e2f411ba1
    S: 34e322ca50a2842e9f3664442cb11c897defba06 x.x.x.x:7004slots: (0 slots) slavereplicates f4ee0a501f9aaf11351787a46ffb4659d45b7bd7
    M: 18948dab5b07e3726afd1b6a42d5bf6e2f411ba1 x.x.x.x:7003slots:10923-16383 (5461 slots) master1 additional replica(s)
    S: 62a00566233fbff4467c4031345b1db13cf12b46 x.x.x.x:7005slots: (0 slots) slavereplicates 671a0524a616da8b2f50f3d11a74aaf563578e41
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.
    
  4. 测试

    [root@localhost redis]# redis-cli -c -h x.x.x.x -p 7001
    x.x.x.x:7001> set test test
    -> Redirected to slot [5798] located at x.x.x.x:7002
    OK
    x.x.x.x:7002> get name
    "test"
    

    能够正常运行,redis-cluster配置完成!

  5. 在创建redis-cluster之后,若需要关闭集群,可运行命令:

    redis-cli -c -h x.x.x.x -p 7001 shutdown
    redis-cli -c -h x.x.x.x -p 7002 shutdown
    redis-cli -c -h x.x.x.x -p 7003 shutdown
    redis-cli -c -h x.x.x.x -p 7004 shutdown
    redis-cli -c -h x.x.x.x -p 7005 shutdown
    redis-cli -c -h x.x.x.x -p 7006 shutdown
    

    也可编写脚本进行批量处理。

  6. 如果需要启动已经创建的redis-cluster,仅仅需要运行第4步编写的 start-all.sh ,跳过第5步的操作

  7. 需要清空已经配置好的redis-cluster,首先停止所有redis-server实例,接着删除data目录下的 node.conf 文件即可,在redis-cluster目录下运行

    rm -f  */data/*.conf
    

常见问题

  1. ip地址需要时公网ip,否则远程访问重定向后无法访问到其他集群结点。

  2. 服务器需要开启防火墙,如果是云服务器需要配置相应的安全组入规则。

  3. 创建redis-cluster时如果卡在“Waiting for the cluster to join...”这一步

    (1) 停止所有redis-server实例,删除每个redis/data文件夹下所有文件

    (2) 检查防火墙或安全组规则,依照本文的配置,需要开启7001-7006端口,同时还要开启17001-17006端口(cluster-announce-bus-port)。

    (3) 若经过3.2操作后仍然卡住,则分别更改redis.conf文件

    cluster-announce-ip x.x.x.x           # 公网ip,为对外ip
    cluster-announce-port 7001            # 7001-7006
    cluster-announce-bus-port 17001       # 17001-17006,集群桥接端口
    
     以上三个参数使其他结点获得当前结点的信息,通过配置文件,集群桥接端口无需于命令端口恒定相差10000,在没有配置的情况下默认相差10000。此处为了简化仍设置为相差10000,保存后重新执行,即可成功创建redis-cluster。
    

TODO

访问权限、密码等安全问题尚未完成,亟待解决。

最后编辑于:2024-09-22 09:33:10


喜欢的朋友记得点赞、收藏、关注哦!!!

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

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

相关文章

pnpm : 无法加载文件

1、以管理员身份运行window powershell 2、执行Get-ExecutionPolicy,显示Restricted 3、执行set-ExecutionPolicy,会提示输入参数,此时输入RemoteSigned回车 4、执行y回车

想把泰文从文本上识别,什么软件工具好用呢?

泰文识别技术涉及将泰文图像转换成数字文本,主要通过光学字符识别(OCR)技术实现。这项技术广泛应用于文档处理、语言学习和翻译服务。实现泰文识别的方法包括使用手机应用程序、在线服务、专业软件,以及结合人工智能和机器学习。此…

【Docker】如何让docker容器正常使用nvidia显卡

首先确保宿主机正常安装了显卡驱动 nvidia-smi打印显卡信息如下: 安装nvidia-container-toolkit工具 sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker运行如下命令测试显卡是否在容器内可用 …

Arduino中使用库文件读取陀螺仪MPU6050欧拉角

目录 1、库文件安装 (1)方法1-网上下载库文件 (2)方法2-本地库文件夹中添加 2、欧拉角获取 (1)打开测试程序 (2)读欧拉角程序 (3)坐标系和欧拉角说明 …

征才令!开物™创新论文激励计划,等你来大展身手

背景介绍 随着云计算、人工智能的迅猛发展,现有的IT系统变得日益复杂,网络技术亟需创新才能满足现代数据中心、智算中心的网络需求。在这一背景下,被定义为“未来数据中心第三颗主力芯片”的DPU崭露头角,成为未来网络技术的发展方…

iOS V2签名网站系统源码 开源免授权

简介 这是一款iOS 签名站的开源源码,免去了授权,它支持UDID获取、软件选择以及签名码功能。 同时,用户可以多开APP进行安装。这是一个自主可下载的版本,感兴趣的用户可以自行获取。 界面

aws s3 存储桶 前端组件上传简单案例

写一个vue3 上传aws oss存储的案例 使用到的插件 npm install aws-sdk/client-s3 注意事项 : 1. 本地调试 , 需要设置在官网设置跨域 必须!!! 否则调试不了 ,前端代理是不起作用的 ,因为是插…

【JavaEE】——单例模式引起的多线程安全问题:“饿汉/懒汉”模式,及解决思路和方法(面试高频)

阿华代码,不是逆风,就是我疯,你们的点赞收藏是我前进最大的动力!!希望本文内容能够帮助到你! 目录 一:单例模式(singleton) 1:概念 二:“饿汉模…

JavaEE——多线程Thread 类及常见方法

目录 一、Thread(String name) 二、是否后台线程 isDeamon() 三、是否存活 isAlive() 四、run()方法和start()方法的区别 五、中断线程 法一: 法二: 六、线程等待join() 七、线程休眠sleep() 一、Thread(String name) 定义:这个东西…

期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟

在 AI 程序员的帮助下,一个几乎没有专业编程经验的初中生,在人头攒动的展台上从零开始,两分钟就做出了一个倒计时网页。 他需要做的,只是输入包含几句话的提示词。数秒钟后,大模型就生成了代码,还列出了环…

​地质图制图规范大全资料分享

我们在《2024年最新测绘地理信息规范在线查看下载》一文整理460个测绘地理信息相关规范的在线查看链接。 现在我们又整理了地质图制图规范大全分享给大家,你可以在文末查看该文档的领取方法。 地质图制图规范大全 这些地质图制图规范来自地质科学数据出版系统&am…

基于 IV 的因果中介分析模型及 Stata 实现

目录 一、文献综述 二、理论原理 三、实证模型 四、稳健性检验 五、程序代码及解释 一、文献综述 因果中介分析在众多学科领域中都占据着关键地位,其重要性日益凸显。在社会科学领域,如经济学和社会学中,研究者们常常致力于揭示各种因素之…

深度学习实战:UNet模型的训练与测试详解

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 1、云实例:配置选型与启动1.1 登录注册1.2 配置 SSH 密钥对1.3 创建实例1.4 登录云实例 2、云存储:数据集上传…

vue2 搜索高亮关键字

界面&#xff1a; 搜索 “成功” 附上代码&#xff08;开箱即用&#xff09; <template><div class"box"><input class"input-box" v-model"searchKeyword" placeholder"输入搜索关键字" /><div class"r…

tauri开发软件中,使用tauri自带的api用浏览器打开指定的url链接

有能力的可以看官方文档&#xff1a;shell | Tauri Apps 就是使用这个api来打开指定的url链接&#xff0c;要在tauri.config.json中配置打开这个api&#xff1a; 然后在前端页面中导入使用&#xff1a; import { open } from tauri-apps/api/shell; // opens the given URL o…

年轻用户对Facebook的使用趋势分析

在社交媒体的蓬勃发展中&#xff0c;Facebook作为全球最大的社交平台之一&#xff0c;尽管面临着来自新兴平台的竞争&#xff0c;仍然在年轻用户中扮演着重要角色。然而&#xff0c;年轻用户对Facebook的使用方式和趋势却在不断变化。本文将探讨年轻用户对Facebook的使用趋势&a…

代码随想录算法训练营Day14 | 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

目录 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度 226.翻转二叉树 题目 226. 翻转二叉树 - 力扣&#xff08;LeetCode&#xff09; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例1&#…

Redis 篇-深入了解 Redis 五种数据类型和底层数据结构(SDS、Intset、Dict、ZipList、SkipList、QuickList)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 Redis 底层数据结构 1.1 Redis 数据结构 - 动态字符串 SDS 1.2 Redis 数据结构 - Intset 1.3 Redis 数据结构 - Dict 1.3.1 Dict 的渐进式 rehash 1.4 Redis 数据…

双主轴精密纵切数控车床

双主轴精密纵切数控车床&#xff0c;作为一种先进的机械加工设备&#xff0c;融合了高精度、高效率与多功能性于一身&#xff0c;广泛应用于航空、航天、汽车、摩托车、通讯、制冷、光学、家电、微电子等多个行业。下面&#xff0c;我将从几个关键方面为您详细介绍这种机床的特…

DK5V100R10S 双引脚同步整流芯片12V 4A,10mΩ

DK5V100R10S是一款简单高效率的同步整流芯片&#xff0c;只有A&#xff0c;K两个引脚&#xff0c;分别对应肖特基二极管的PN管脚。芯片内部集成了100V功率NMOS管&#xff0c;可以大幅降低二极管导通损耗&#xff0c;提高整机效率&#xff0c;取代或替换目前市场上等规的肖特基整…