Redis3.0.7 cluster/集群 安装配置教程

2023-11-10

原文地址:http://blog.csdn.net/ouchuquan/article/details/50884479

参考地址:http://doc.redisfans.com/topic/cluster-tutorial.html

http://www.cnblogs.com/langtianya/archive/2013/01/31/2883867.html


1、前言


环境:CentOS-6.7-i386-LiveDVD 安装的CentOs系统

节点: 6个节点,3个主节点、3个从节点(由于redis默认需要3个主节点,如果想每个主节点有一个从节点,这是最低配要求)

配置:端口都采用默认的6379

redis版本:目前官网最新的redis stable版本为:3.0.7(时间点:2016年3月10日)。

 

2、获取源码
在每台机器用命令:webget  http://download.redis.io/releases/redis-3.0.7.tar.gz  获取redis3.0.7源码到你linux某目录。

 

3、修改配置
执行命令 tar -xvf redis-3.0.7.tar.gz  解压得到redis-3.0.7文件夹,修改其下的redis.conf,主要修改下面几项:

daemonize yes                                          # redis默认不是后台启动,这里修改成后台启动
cluster-enabled yes                                    # 允许redis支持集群模式
cluster-config-file nodes.conf                         # 节点配置文件
cluster-node-timeout 15000                             # 节点超时毫秒
appendonly yes
#port 7000                                             #如果你需要自定义端口可以用这个选项

 

注意:6个节点下的redis.conf都需要修改,可以修改一个之后拷贝过去。

 

4、编译源码
然后在6个节点的redis-3.0.7目录下执行 make 命令,编译源码,编译好后会在src文件夹生成redis-server等二进制文件

 

5、启动实例
在6个节点的redis-3.0.7目录下分别执行命令 src/redis-server,默认会使用redis.conf配置 ,这样每个节点就启动了一个实例。

 

6、搭建redis集群(在其中一个节点操作就可以了)
       通过使用 Redis 集群命令行工具 redis-trib 创建集群, redis-trib 位于 Redis 源码的 src 文件夹中, 它是一个 Ruby 程序, 这个程序通过向实例发送特殊命令来完成创建新集群, 检查集群, 或者对集群进行重新分片(reshared)等工作。请先来到redis解压目录,cd src  进入src目录,然后执行下面命令:

./redis-trib.rb create --replicas 1 xxx.xxx.xxx.1:6379 xxx.xxx.xxx.2:6379 xxx.xxx.xxx.3:6379 xxx.xxx.xxx.4:6379 xxx.xxx.xxx.5:6379 xxx.xxx.xxx.6:6379

 

注意ip修改成自己的~~
命令的意义如下:
    给定 redis-trib.rb 程序的命令是 create , 这表示我们希望创建一个新的集群。
    选项 --replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
    之后跟着的其他参数则是实例的地址列表, 我们希望程序使用这些地址所指示的实例来创建新集群。

简单来说, 以上命令的意思就是让 redis-trib 程序创建一个包含三个主节点和三个从节点的集群。

接着, redis-trib 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes , redis-trib 就会将这份配置应用到集群当中:

>>> Creating cluster
Connecting to node xxx.xxx.xxx.1:6379: OK
Connecting to node xxx.xxx.xxx.2:6379: OK
Connecting to node xxx.xxx.xxx.3:6379: OK
Connecting to node xxx.xxx.xxx.4:6379: OK
Connecting to node xxx.xxx.xxx.5:6379: OK
Connecting to node xxx.xxx.xxx.6:6379: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
xxx.xxx.xxx.1:6379
xxx.xxx.xxx.2:6379
xxx.xxx.xxx.3:6379
xxx.xxx.xxx.1:6379 replica #1 is xxx.xxx.xxx.4:6379
xxx.xxx.xxx.2:6379 replica #1 is xxx.xxx.xxx.5:6379
xxx.xxx.xxx.3:6379 replica #1 is xxx.xxx.xxx.6:6379
M: 9991306f0e50640a5684f1958fd754b38fa034c9 xxx.xxx.xxx.1:6379
slots:0-5460 (5461 slots) master
M: e68e52cee0550f558b03b342f2f0354d2b8a083b xxx.xxx.xxx.2:6379
slots:5461-10921 (5461 slots) master
M: 393c6df5eb4b4cec323f0e4ca961c8b256e3460a xxx.xxx.xxx.3:6379
slots:10922-16383 (5462 slots) master
S: 48b728dbcedff6bf056231eb44990b7d1c35c3e0 xxx.xxx.xxx.4:6379
S: 345ede084ac784a5c030a0387f8aaa9edfc59af3 xxx.xxx.xxx.5:6379
S: 3375be2ccc321932e8853234ffa87ee9fde973ff xxx.xxx.xxx.6:6379
Can I set the above configuration? (type 'yes' to accept): yes


7、测试集群
redis-cli -c -h xxx.xxx.xxx.1(集群中任意一个ip) -p 6379

 

8、附

好吧,最后我承认我是用虚拟机测试的,并且在单台虚拟机机器上启动6个实例,而以上是接近生产的配置流程,方便参考。下面配上一些图,是我当时测试的实际情况,如下

 

启动集群:

 

让各个节点开始互相通讯:

 

测试集群:

 

转载请注明:http://www.cnblogs.com/langtianya/p/5254856.html

参考:http://blog.csdn.net/jthink_/article/details/50373959

官方文档中文版(翻译):教程

官方英文版请看:Redis cluster tutorial


此文首发博客园:http://www.cnblogs.com/langtianya/p/5254856.html


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis3.0.7 cluster/集群 安装配置教程 的相关文章

  • 使用 Hibernate 用瞬态对象更新持久对象

    每天 数据都是通过网络服务导入的 我创建一个新的 暂时的 实例我通过 JPA 注释在 hibernate 中映射的 pojo 的 我将数据从 Web 服务填充到瞬态实例中 我从数据库加载持久对象 我想用瞬态实例中的数据更新该持久对象 我以某
  • 可序列化对象的 ArrayList 的加密保存和解密加载

    我在 SD 卡中保存并加载一个文件 其中包含ArrayList使用这两种方法的可序列化对象 保存方法 public static void saveUserList ArrayList
  • JSF2.0 中的空白输入字段未设置为 NULL

    我有一个支持 bean 其中 fileld 为 Long Double Integer String 当我没有在输入字段中指定任何内容时 长整型 整数和双精度值将被视为零 而不是空 我正在使用 tomcat 来部署我的应用程序 有什么解决办
  • 错误:无法下载存储库“appstream”的元数据:无法准备内部镜像列表:镜像列表中没有 URL

    我正在尝试使用我在 Dockerfile 中指定的 centOs 上的 yum 下载 java 拉取 centOs 镜像后 运行崩溃并抛出此错误 还要提一下 我的服务器实例是AWS EC2 Step 2 9 RUN yum install
  • 序列化 ArrayList

    我正在尝试编写一个 Android 游戏 即使用户想要返回主菜单或者活动被系统终止 我也希望能够暂停游戏 onSaveInstanceState 似乎并没有给我很大的控制权来决定何时可以读回捆绑包 而且据我所知 捆绑包仅在短时间内有效 所以
  • import java 导入错误:没有名为 java 的模块

    我似乎遇到了障碍 根本无法解决这个问题 任何人都可以帮我弄清楚为什么我无法导入 java 模块吗 Error Traceback most recent call last File datasource config py line 3
  • 在 JList 中写一些东西

    嘿 我还有另一个问题 我创建JList在我的主窗口中 现在我想向其中添加一些内容 我这样做 private void jButton2ActionPerformed java awt event ActionEvent evt Dodaj
  • 将更改(永久)保存在数组列表中?

    那可能吗 例如 用户将新的项目 元素添加到数组列表 缓冲读取器进程 中 并且肯定会发生更改 我的问题是 即使用户多次更改数组列表 它也可能会永久存在 即使他们关闭程序并再次打开它 它也会一直存在 注意 不使用 txt 很抱歉问这样的问题 但
  • 如何在 Java 中复制对象?

    考虑下面的代码 DummyBean dum new DummyBean dum setDummy foo System out println dum getDummy prints foo DummyBean dumtwo dum Sys
  • bean 的 CDI @TransactionAttribute

    我正在尝试CDI在测试应用程序上 我有一个DAO它注入一个托管的容器JTA像这样的持久化上下文 public class TestDAO implements Serializable PersistenceContext private
  • 如何确定 JDialog 显示在哪个屏幕上

    我有一个非常大的应用程序 有多个对话框 我的任务是确保不完全可见的对话框 因为用户将其从可见屏幕区域拉出 移回屏幕中心 当我只处理一个屏幕时 这没问题 它工作得很好 但是 该应用程序的大多数用户的桌面上都有两个屏幕 当我尝试找出对话框显示在
  • TableModel setCellEditable 并自动将值设置回 false

    我目前正在尝试在 JTable 中实现 JPopupMenu 它允许解锁单元格以进行编辑 Override public void actionPerformed ActionEvent e if e getActionCommand Un
  • 竞争条件和 Clojure Atoms

    clojure atom 的文档指出 Changes to atoms are always free of race conditions 然而 竞争条件不仅是根据更改定义的 而且是在不同线程中并行逻辑操作的上下文中定义的 我想知道 保证
  • 基于磁盘的 HashMap [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Java 是否有 或者是否有可用的库 允许我拥有基于磁盘的 HashMap 它不需要是原子的或任何东西
  • 如何在不冒 StackOverflowError 风险的情况下使用 CompletableFuture?

    我想遍历异步函数的搜索空间 我将逻辑编码如下 Assuming that a function maps a range of inputs to the same output value minimizes the input valu
  • org.apache.poi 中的异常

    我试图编写一个可以读取和写入的程序 xlsx文件中 下面提供的代码旨在能够编写其第一个 Excel 程序 package excel reader import java io FileOutputStream import java io
  • SFTP Java - 管道关闭 Jsch 异常

    我正在研究一种 java 方法 将文件从一个位置复制到另一个远程位置 我的代码如下 我尝试使用jsch 0 1 42 0 1 50 0 1 54 public static void processFiles ArrayList
  • 如何预先填充 JFileChooser 将“文件名”?

    我打算用数据库中的名称填充 JFileChooser 但使用标准 JFileChooser 对话框进行加载 删除 保存和另存为 我想给用户留下这样的印象 他们正在处理文件系统 而在后端使用数据库来保存更改 用户不应该能够浏览到不同的目录进行
  • 不鼓励在Web应用程序中使用线程吗?

    我们与同事就在 Java 的 Web 应用程序中使用线程进行了激烈的讨论 他们的观点是 不建议在 Java Web 应用程序中使用线程 因为它们不受容器管理 一般来说 我对此表示同意 因为线程可能会干扰容器 但是 如果它不是 Java EE
  • 优雅地避免 Java 中的 NullPointerException

    考虑这一行 if object getAttribute someAttr equals true 显然这一行是一个潜在的错误 属性可能是null我们会得到一个NullPointerException 因此我们需要将其重构为以下两个选择之一

随机推荐

  • FFmpeg进阶: 音频变声滤镜

    声音最重要的两个元素就是语速和语调 改变声音的辨识度主要也是从这两方面入手 我们可以通过对音频数据进行插值或者抽值修改 以达到降低语速和增加语速的目的 同时我们也可以通过对数据进行线性拉伸来调节音调 语速调整 语调调整 就可以让我们的声音千
  • QtCreator编译 fatal error: Killed signal terminated program cc1plus问题解决

    原因 编译器消耗的内存超过了系统的限制 强制停止了 解决方式 减少编译时进程数量 make j4
  • 数学建模 层次分析法 python计算权重

    这里用python语言来计算判断矩阵的权重 网上大部分是matlab语言 里面也包含一致性检验的函数 具体各函数使用方法详见代码注释的部分 import numpy as np a np array 1 1 4 2 1 3 4 1 8 2
  • ==和equals的区别

    1 在八种基本类型中 比较的是值的本身 eg public class Damo2 public static void main String args int str 10 int str1 10 System out println
  • ROS navigation的学习和分析

    ROS navigation功能包简单来说就是输入传感器信息和机器人位姿 通过导航算法输出机器人的速度控制指令实现机器人的2D路径规划 贴出代码库 navigation github官方仓库 以下是ROS官方的文档 navigation官方
  • avue-crud 组件,form中实现树形下拉框联动输入框数据,省市区字典联动

    1 需要实现的功能是 当我选择一条数据的时候 后面几个输入框会自动带入 使用的是avue crud组件 参数配置
  • 数据结构--环形队列的介绍与实现

    数据结构 环形队列实现 一 环形队列实现原理 环形队列的几个判断条件 二 代码实现 1 环形队列类 CircleQueue 2 环形队列类测试类 3 程序运行结果 4 完整代码 环形队列可以用数组实现 也可以使用循环链表实现 在使用数组实现
  • 2023前端面试题总结(vue,react)

    Vue 1 MVC与MVVM的区别 MVC和MVVM的区别并不是VM完全取代了C ViewModel存在目的在于抽离Controller中展示的业务逻辑 而不是替代Controller 其它视图操作业务等还是应该放在Controller中实
  • Vue-条件渲染和循环渲染

    文章目录 条件渲染 循环渲染 条件渲染 条件渲染指令是用来辅助开发者控制DOM的显示与隐藏 条件渲染指令有如下两个 分别是 v show和v if v show和v if的区别 v show是通过动态的为元素添加或移除display non
  • 【计算机视觉】ViT:Vision Transformer 讲解

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 在阅读本篇之前建议先学习 自然语言处理 Attention 讲解 自然语言处理 Transformer 讲解 自然语言处理 BERT 讲解 ViT Vision Transforme
  • 眼光独到便能发现刷脸支付带来的商机

    2020年 属于扫码支付的时代已经过去 刷脸支付时代悄然而至 在5G和数字化时代的引领下 刷脸支付将充满无限可能 率先发现商机并加入刷脸支付的人 可以早日占据移动支付刷脸支付市场的一片天空 在现金支付还是主流的时代 人们对扫码支付的概念十分
  • 坦克大战JAVA程序(韩顺平老师)

    坦克大战java程序 目前程序完成的功能 1 打开游戏选择继续上一局游戏还是重新开始 2 页面打开后有一段背景音乐 增加体验感 3 页面显示击毁的敌方坦克数量 4 玩家坦克由wasd键控制方向 j键控制射击 敌方坦克被击中后 出现爆炸效果
  • Codeforces Round #752 (Div. 2) C. Di-visible Confusion (思维暴力))

    题解 根据题意如果2 i 1范围内没法整除就删掉嘛 所以这题其实最多暴力前100就行 证明 因为如果前100有不能整除的 那么这个数一定可以删掉 但是如果前100都能被整除 也就是前100每个数都是这个数的因子 那么这个数就太大了绝对超过了
  • 力扣简单算法题

    简单题 一分类 数组 1 两数之和 哈希表 给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 target 的那 两个 整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同
  • 数据结构作业:时间复杂度和二叉树

    计算时间复杂度 int x 0 i j 1 for i 1 i
  • 小程序可以通过以下几种方式下发消息

    1 模板消息 小程序可以通过模板消息向用户发送通知 例如订单状态更新 活动提醒等 开发者需要先在小程序后台设置好模板消息 并获取到模板消息的模板ID 然后在代码中调用相应的API 将模板消息的内容填充并发送给用户 以下是一个示例代码 用于发
  • CSS开发技巧(四):解决flex多行布局的行间距异常、子元素高度拉伸问题

    在使用flex布局时 若出现换行 有两种较为特殊的现象是值得我们研究的 子元素高度被拉伸 其实际高度大于它的内容高度 各行子元素之间的行间距过大 甚至我们根本没有给子元素设置margin 现在我们将要探究引发这两种现象的原因及解决方案 一
  • for循环三种跳出循环的方法(retrun、continue、break)Mark

    1 continue 指的是跳出当前循环 即不执行continue后的语句 直接进入下次循环 continue语句和break语句差不多 不同的是 它不是退出一个循环 而是跳出当前循环 进行下一轮循环 public static void
  • mac 下的 bash gradle command not found

    最近在用android studio 使用命令行打包的时候出现 bash gradle command not found这个问题 其实也就是因为自己唑gradle的环境变量给弄丢了 但是由于来自大山的孩子对于mac不是很熟 所以不知道咋去
  • Redis3.0.7 cluster/集群 安装配置教程

    原文地址 http blog csdn net ouchuquan article details 50884479 参考地址 http doc redisfans com topic cluster tutorial html http