Redis集群及其中间遇到的坑

2023-05-16

Redis集群

集群准备

  • 下载并解压Resis:wget http://download.redis.io/releases/redis-4.0.0.tar.gz
  • 进入Redis目录下make && make install
    可能会报错

    /bin/sh: cc: 未找到命令
    make[1]: *** [adlist.o] 错误 127

    原因是没有gcc,安装gcc就好yum install gcc
    建议下版本高一点的

  • /opt/redis-4.0.0/src/redis-trib.rb复制到/usr/local/bin
  • /opt/redis-4.0.0/目录下创建redis_cluster
  • /opt/redis-4.0.0/redis_cluster下创建7001,7002,7003节点目录
  • 拷贝/opt/redis-4.0.0/redis.conf到节点目录

    [root@localhost redis-4.0.0]# cp redis.conf redis_cluster/7000
    [root@localhost redis-4.0.0]# cp redis.conf redis_cluster/7001
    [root@localhost redis-4.0.0]# cp redis.conf redis_cluster/7002
  • 分别修改这3个目录下的redis.conf配置文件
port  7000                                        //端口7000,7002,7003        
bind 本机ip                                       //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7000.pid          //pidfile文件对应7000,7001,7002
cluster-enabled  yes                           //开启集群  把注释#去掉
cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志
  • 在例外一台机器上进行上步操作,端口为7003,7004,7005
  • 启动2个服务器的redis
redis-server /opt/redis-4.0.0/redis_cluster/7000/redis.conf
redis-server /opt/redis-4.0.0/redis_cluster/7001/redis.conf
redis-server /opt/redis-4.0.0/redis_cluster/7002/redis.conf
redis-server /opt/redis-4.0.0/redis_cluster/7003/redis.conf
redis-server /opt/redis-4.0.0/redis_cluster/7004/redis.conf
redis-server /opt/redis-4.0.0/redis_cluster/7005/redis.conf
  • 查看2台服务器的Redis是否开启ps -ef| grep redis

集群开始

  • 这里使用到/opt/redis-x.x.x/src/redis-trib.rb,但是redis-trib.rb是使用ruby写的,这里还要下载ruby工具: yum -y install ruby ruby-devel rubygems rpm-build
  • 使用gem安装redis接口gem install redis

    • 可能会遇到的问题

      ERROR:  Error installing redis:
              redis requires Ruby version >= 2.2.2.
      
    • 解决方案

          1.安装curl
      
          sudo yum install curl
      
          2. 安装RVM
      
          curl -L get.rvm.io | bash -s stable
      
          3.
      
          source /usr/local/rvm/scripts/rvm
      
          4. 查看rvm库中已知的ruby版本
      
          rvm list known
      
          5. 安装一个ruby版本
      
          rvm install 2.3.3
      
          6. 使用一个ruby版本
      
          rvm use 2.3.3
      
          7. 设置默认版本
      
          rvm remove 2.0.0
      
          8. 卸载一个已知版本
      
          ruby --version
      
          9. 再安装redis就可以了
      
          gem install redis
  • create (确保每个redis都是启动的)
/opt/redis-4.0.0/src/redis-trib.rb create --replicas 1 192.168.115.132:7000  192.168.115.132:7001  192.168.115.132:7002 192.168.115.130:7003 192.168.115.130:7004 192.168.115.130:7005
  • 注意补充
    –replicas 1 表示 自动为每一个master节点分配一个slave节点 上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)防火墙一定要开放监听的端口,否则会创建失败
  • 可能出现问题

    [root@localhost src]# ./redis-trib.rb create --replicas 1 192.168.115.132:7000  192.168.115.132:7001  192.168.115.132:7002 192.168.115.130:7003 192.168.115.130:70
    >>> Creating cluster
    [ERR] Sorry, can't connect to node 192.168.115.130:7003
    
    解决方案:另外一服务器机子7003端口没有对外开放
    firewall-cmd --zone=public --add-port=7003/tcp --permanent
    firewall-cmd --zone=public --add-port=7004/tcp --permanent
    firewall-cmd --zone=public --add-port=7005/tcp --permanent
    firewall-cmd --reload
    最后你会发现终究OK了
    • 这可能是最后一个坑
      集群一直处于等待状态
      Sending CLUSTER MEET messages to join the cluster
        Waiting for the cluster to join...........

    在/etc/profil/iptables中添加开放端口

    • 如果上面失败,清楚每个Redis中的缓存文件,例如我的在:
      /opt/redis-4.0.0/redis_cluster/7000目录下的 *.aof nodes* 等文件:rm -rf *.aof nodes*

    集群开启与关闭

    Redis集群没有重启或者关闭操作,解决方案,清楚数据重新集群

    • rm -rf **/*.aof **/*.rdb **/nodes*

      /opt/redis-4.0.0/src/redis-trib.rb create --replicas 1 192.168.115.132:7000  
      192.168.115.132:7001  
      192.168.115.132:7002 
      192.168.115.130:7003 
      192.168.115.130:7004 
      192.168.115.130:7005
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis集群及其中间遇到的坑 的相关文章

  • 如何将 ActionController::Live 与 Resque + Redis 一起使用(用于聊天应用程序)

    我正在尝试为我的 Rails 应用程序构建聊天功能 我在用ActionController Live Puma Resque Redis为了这 所以基本上在这种情况下 redissubscribe方法正在后台运行 使用resque 到目前为
  • Caffeine Expiry 中如何设置多个过期标准?

    我正在使用 Caffeine v2 8 5 我想创建一个具有可变到期时间的缓存 基于 值的创建 更新以及 该值的最后一次访问 读取 无论先发生什么都应该触发该条目的删除 缓存将成为三层值解析的一部分 The key is present i
  • 在 Kubernetes/Openshift 中将客户端-服务器流量保持在同一区域的最佳方法?

    我们运行兼容 Kubernetes OKD 3 11 的本地 私有云集群 其中后端应用程序与用作缓存和 K V 存储的低延迟 Redis 数据库进行通信 新的架构设计将在两个地理上分布的数据中心 区域 之间平均划分工作节点 我们可以假设节点
  • Redis Docker compose无法处理RDB格式版本10

    我无法在 docker compose 文件中启动 redis 容器 我知道docker compose文件没问题 因为我的同事可以成功启动项目 我读到有一个删除 dump rdb 文件的解决方案 但我找不到它 我使用Windows机器 任
  • Redis发布/订阅:查看当前订阅了哪些频道

    我目前有兴趣查看我拥有的 Redis 发布 订阅应用程序中订阅了哪些频道 当客户端连接到我们的服务器时 我们将它们注册到如下所示的通道 user user id 这样做的原因是我希望能够看到谁 在线 目前 我在不知道客户端是否在线的情况下盲
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo
  • Redis Cluster 与 Pub/Sub 中的 ZeroMQ,用于水平扩展的分布式系统

    如果我要设计一个巨大的分布式系统 其吞吐量应随系统中的订阅者数量和通道数量线性扩展 哪个会更好 1 Redis集群 仅适用于Redis 3 0 alpha 如果是集群模式 您可以在一个节点上发布并在另一个完全不同的节点上订阅 消息将传播并到
  • 为什么 Redis TimeSeries 不捕获聚合中的最后一个元素?

    我试图了解 Redis 的时间序列规则创建的工作原理 但我很困惑为什么 Redis 会忽略聚合中的最后一项 并想知道这是否是预期的行为 我在中创建了示例代码redis cli为了显示 127 0 0 1 6379 gt FLUSHALL O
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • 有没有办法让特定的key在集群模式下定位到特定的redis实例上?

    我想让我的多锁位于不同的redis实例上 我发现redission可以指定一个实例来执行命令 但是如果该命令与key相关 则指定的实例会将命令传输到另一个实例 你能给我一些建议吗 你可以 但这并不是微不足道的 首先 Redis 在键中使用大
  • 使用 Celery 通过 Gevent 进行实时、同步的外部 API 查询

    我正在开发一个 Web 应用程序 该应用程序将接收用户的请求 并且必须调用许多外部 API 来编写对该请求的答案 这可以直接从主 Web 线程使用 gevent 之类的东西来扇出请求来完成 或者 我在想 我可以将传入的请求放入队列中 并使用
  • redis dump.rdb / 保存小文件

    Context 我正在使用redis 数据库小于 100 MB 但是 我想进行每日备份 我也在 Ubuntu Server 12 04 上运行 当输入 redis cli save 我不知道 dump rdb 保存到哪里 因为 redis
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • 使用redis进行树形数据结构

    我需要为基于树的键值开发一个缓存系统 与Windows注册表编辑器非常相似 其中缓存键是字符串 表示树中到值的路径 可以是原始类型 int string bool double 等 或子树本身 例如 key root x y z w val
  • Spring Redis删除不删除key

    我正在尝试删除一个 Redis 键 但由于某种原因它没有删除 但也没有抛出异常 这是我要删除的代码 import com example service CustomerService import com example model Cu
  • 节点应用程序之间共享会话?

    我目前有两个独立的节点应用程序在两个不同的端口上运行 但共享相同的后端数据存储 我需要在两个应用程序之间共享用户会话 以便当用户通过一个应用程序登录时 他们的会话可用 并且他们似乎已登录到另一个应用程序 在本例中 它是一个面向公众的网站和一
  • 如何延长 django-redis 中的缓存 ttl(生存时间)?

    我正在使用 django 1 5 4 和 django redis 3 7 1 我想延长缓存的 ttl 生存时间 当我取回它时 这是示例代码 from django core cache import cache foo cache get
  • Spring Redis 排序键

    我在 Redis Spring Data Redis 中有以下键 localhost gt Keys 1 id 1 Name C5796 Site DRG1 2 id 2 Name CX1XE Site DG1 3 id 3 Name C5
  • Redis 是否使用用户名进行身份验证?

    我已经在我的环境中设置了Redis 并且只看到了通过密码授权的部分 有没有办法也设置用户名 还是只能通过密码验证 Redis 6 上有 ACL 这些都有一个用户名 查看https redis io topics acl https redi
  • nginx/uwsgi 服务器的持久内存中 Python 对象

    我怀疑这是否可能 但这是问题和提出的解决方案 提出的解决方案的可行性是这个问题的对象 我有一些需要可用于所有请求的 全局数据 我将这些数据保存到 Riak 并使用 Redis 作为缓存层以提高访问速度 目前 数据被分为约 30 个逻辑块 每

随机推荐

  • iOS,面试必看,最全梳理

    序言 目前形势 xff0c 参加到iOS队伍的人是越来越多 xff0c 甚至已经到供过于求了 今年 xff0c 找过工作人可能会更深刻地体会到今年的就业形势不容乐观 xff0c 加之 xff0c 培训机构一火车地向用人单位输送iOS开发人员
  • Android-自定义View集合

    学习安卓几个月了 xff0c 也有点自己的体会 xff0c 然而我发现自己真正喜欢的是数据方面的东西 xff0c 当然android自定义view也很好玩 xff0c 很体验一些技巧性的东西 也不想自己以前学习过程总结的东西就此淹没 xff
  • 新版本VSCode的eslint使用指导

    1 VSCode版本 xff1a 2 VSCode插件栏搜索 eslint 安装 xff1b 3 开启eslint xff1a 在首选项的用户设置里搜索formatOnSave 勾选 xff1b 4 安装eslint npm install
  • crontab、flock、timeout的配合使用实现定时任务超时及报警

    需求场景 开发后台的同学 xff0c 经常需要写一些脚本定时启动运行 xff0c 通常使用crontab来实现 有时候还有更加苛刻的需求 xff1a 脚本不仅需要定时启动 xff0c 而且还需要保证互斥 xff08 同一时间只有一个进程在跑
  • (原创)Flutter基础入门:手把手教你搭建Flutter混合项目:AAR方式集成

    前言 上一篇博客讲了如何用 模块代码依赖模式 这种方式去搭建Flutter混合项目 因为篇幅原因 xff0c AAR集成方式来搭建项目的步骤和注意点放到这篇博客来讲 如果你没看过上篇博客 xff0c 建议先阅读上一篇 xff1a xff08
  • Linux基础知识之systemd详解

    0x00 Systemd 简述 1 Linux 启动流程 2 主角登场 0x01 Systemd Unit 1 配置文件 2 启动流程 3 进程树 Process tree 4 运行级别 0x02 Systemd Manager 1 Sys
  • IntelliJ IDEA中有什么让你相见恨晚的好用插件?

    hello xff0c 大家好 xff0c 我是 Jackpop xff0c 硕士毕业于哈尔滨工业大学 xff0c 曾在华为 阿里等大厂工作 xff0c 如果你对升学 就业 技术提升等有疑惑 xff0c 不妨交个朋友 xff1a 我是Jac
  • Android串口的使用(转载+移植)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 移植java文件二 移植jni文件总结 前言 最近需要在上层app使用串口 发送指令对底层硬件进行操作 xff0c 因此
  • webstorm 代码格式检测

  • Android NFC基础入门

    说道NFC 是Near Field Communication缩写 xff0c 就是近距离无线通讯技术 NFC采用主动和被动两种通信模式 工作的模式有三种 xff0c 读写标签 xff0c 点对点 xff0c 仿真卡模式 xff0c 今天我
  • 嵌入式系统实践 12 ——基于ARM汇编 Keil5 MSP432 P401R开发板

    物联网实验1 阿里云远程控制小灯 span class token comment span span class token comment span span class token comment MSP432P401 span sp
  • Linux下使用rpm包安装MySQL数据库

    root 64 Hadoop102 df h df 34 34 没有那个文件或目录 df 34 h 34 没有那个文件或目录 root 64 Hadoop102 df h 文件系统 容量 已用 可用 已用 挂载点 dev mapper ce
  • Linux下SSH登录的三种方式

    SSH登录 SSH密钥登录 xff1a SSH默认采用密码登录 xff0c 这种方法有很多缺点 xff0c 简单的密码不安全 xff0c 复杂的密码不容易记忆 xff0c 每次手动输入也很麻烦 密钥登录是更好的解决方案 接下来介绍三种SSH
  • 在失望中重找希望——我的2013年工作总结

    时间过的真的是快 来广州已整整工作了一年啦 从2012年长沙工作离职后 为了我的女朋友 我毅然踏上了南下广州的征途 来到羊城后 很快 xff0c 一个礼拜就找到了现在工作的这家公司 现在回想一下 真觉得当初没有好好斟酌一下 2013年里 x
  • ubuntu root开机自登录 与 ros 节点自启

    1 systemctl命令及开机自启 新建a sh文件 放入 cd etc vim a sh xff01 usr bin env bash bash c 34 source opt ros melodic setup bash amp am
  • (原创)详解Glide图片加载库常用方法

    前言 Glide作为安卓开发常用的图片加载库 xff0c 有许多实用而且强大的功能 xff0c 那么 xff0c 今天就来总结一番 xff0c 这次把比较常见的都写出来 xff0c 但并不是全部哦 在介绍之前 xff0c 先来说说什么是Gl
  • 如何将本地windows文件复制到远程windows服务器

    如何使用windows自带的远程桌面连接程序将文件复制到远程服务器内 运行中输入mstsc xff0c 点击确定 输入服务器的IP和端口 xff0c 点击右下角的选项 然后点击本地资源选项卡 点击详细信息按钮 此时勾选你所要连接到服务器上的
  • 强国的语言与语言强国

    强国的语言与语言强国 作者 xff1a 教育部语言文字信息管理司司长 教育部语言文字应用研究所所长 中国社会科学院研究生 李宇明 理论上语言是一律平等的 xff0c 现实中语言是有强有弱的 语言的强弱与语言所属社团的强弱盛衰呈正相关 古罗马
  • 前端post请求报400错误

    前端post请求报400错误 发布时间 xff1a 2019 06 05 18 28 54 400的错误是由于发送请求参数没有成功 原因 xff1a 参数名称类型没有对上 xff1b 或者参数格式不正确 参数格式不正确 xff0c 解决方法
  • Redis集群及其中间遇到的坑

    Redis集群 集群准备 下载并解压Resis xff1a wget http download redis io releases redis 4 0 0 tar gz进入Redis目录下make amp amp make install