redis集群搭建教程及遇到的问题处理

这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口。这样的话,相当于模拟出了6台机器了,然后在以这6个实例组建redis集群就可以了。

前提:redis已经安装,目录为/usr/local/redis-4.0.1 如不会,可以参考一下文章  windows下安装redis    Linux下安装redis

redis集群是用的ruby脚本,所以要想执行该脚本,需要ruby环境.。对应redis的源码src目录下的redis-trib.rb,redis-trib.rb是redis官方推出的管理redis集群的工具,是基于redis提供的集群命令封装成简单、便捷、实用的操作工具。so

安装ruby环境:

  1.yum install ruby

   redis集群搭建教程及遇到的问题处理

  2.yum install rubygems

   redis集群搭建教程及遇到的问题处理

  3.gem install redis

     redis集群搭建教程及遇到的问题处理
 

  Centos默认支持ruby到2.0.0,redis需要最低是2.2.2。解决办法是 先安装rvm 再把ruby版本升级到2.3.3 

1.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

 redis集群搭建

  创建redis-cluster目录,再创建redis-8001,redis-8002,redis-8003节点目录,再把redis-conf分别复制到节点目录下

  redis集群搭建教程及遇到的问题处理

分别修改节点下redis-conf文件,由于在一台机器(192.16819.129)上,因此每个实例应该有不同的端口;同时,每个实例显然会有自己的存放数据的地方;开启AOF模式;开启集群配置;开启后台模式;

  redis集群搭建教程及遇到的问题处理

  开启redis服务,看看是否能启动。ok没问题。

  redis集群搭建教程及遇到的问题处理

  创建startall.sh脚本(提示permission denied说明权限不足,执行命令chmod 777 startall.sh修改权限)

  redis集群搭建教程及遇到的问题处理

  启动startall.sh脚本

  redis集群搭建教程及遇到的问题处理

  创建stopall.sh脚本

  redis集群搭建教程及遇到的问题处理

  redis集群搭建教程及遇到的问题处理

  创建集群

  接下来,我们要通过Ruby脚本来创建集群了。

  redis集群搭建教程及遇到的问题处理
  

  可以看到redis-trib.rb具有以下功能:

  1. create :创建集群
  2. check :检查集群
  3. info :查看集群信息
  4. fix :修复集群
  5. reshard :在线迁移slot
  6. rebalance :平衡集群节点slot数量
  7. add-node :将新节点加入集群
  8. del-node :从集群中删除节点
  9. set-timeout :设置集群节点间心跳连接的超时时间
  10. call :在集群全部节点上执行命令
  11. import :将外部redis数据导入集群

redis-trib.rb主要有两个类: ClusterNode 和 RedisTrib 。 ClusterNode 保存了每个节点的信息, RedisTrib 则是redis-trib.rb各个功能的实现

  redis集群搭建教程及遇到的问题处理

  注意:提示最少3个master cluster nodes,前面说是创建6个,但实际操作我只创建了3个节点,所以可以得出我们创建redis集群是最少三个主节点,而且应该是奇数个,so,不要偷懒,再创建三个吧。

  特别注意:这里关键是可选replicas参数,--replicas 2 意思为为每个 master 分配 2 各 slave,replicas表示需要有几个slave。不填写这个参数是可以创建成功的,这样是三个master 。关于replicas参数后面再介绍吧

  redis集群搭建教程及遇到的问题处理

  redis集群搭建教程及遇到的问题处理

首先,--replicas 1   1其实代表的是一个比例,就是主节点数/从节点数的比例。那么想一想,在创建集群的时候,哪些节点是主节点呢?哪些节点是从节点呢?答案是将按照命令中IP:PORT的顺序,先是3个主节点,然后是3个从节点。

其次,注意到图中slot的概念。slot对于Redis集群而言,就是一个存放数据的地方,就是一个槽。对于每一个Master而言,会存在一个slot的范围,而Slave则没有。在Redis集群中,依然是Master可以读、写,而Slave只读。数据的写入,实际上是分布的存储在slot中,这和以前1.X的主从模式是不一样的(主从模式下Master/Slave数据存储是完全一致的),因为Redis集群中3台Master的数据存储并不一样。这个将在后续的随笔中验证。

时间: 2017-09-03

Redis集群搭建全记录

Redis集群是一个提供在多个Redis节点间共享数据的程序集. Redis集群中不支持处理多个keys的命令. Redis集群通过分区来提供一定程度的可用性.在某个节点宕机或者不可用的时候可以继续处理命令. Redis集群数据分片 在Redis集群中,使用数据分片(sharding)而不是一致性hash(consistency hashing)来实现,一个Redis集群包含16384个哈希槽(hash slot),数据库中的每个键都存在这些哈希槽中的某一个,通过CRC16校验后对16384取模

redis数据结构之intset的实例详解

redis数据结构之intset的实例详解 在redis中,intset主要用于保存整数值,由于其底层是使用数组来保存数据的,因而当对集合进行数据添加时需要对集合进行扩容和迁移操作,因而也只有在数据量不大时redis才使用该数据结构来保存整数集合.其具体的底层数据结构如下: typedef struct intset { // 编码方式 uint32_t encoding; // 集合包含的元素数量 uint32_t length; // 保存元素的数组 int8_t contents[]; }

redis数据类型_动力节点Java学院整理

Redis支持5种数据类型,它们描述如下: Strings - 字符串 Redis的字符串是字节序列.在Redis中字符串是二进制安全的,这意味着他们有一个已知的长度,是没有任何特殊字符终止决定的,所以可以存储任何东西,最大长度可达512兆. 例子 redis 127.0.0.1:6379> SET name "yiibai" OK redis 127.0.0.1:6379> GET name "yiibai" 在上面的例子使用Redis命令set和ge

Redis 实现队列原理的实例详解

Redis 实现队列原理的实例详解 场景说明: ·用于处理比较耗时的请求,例如批量发送邮件,如果直接在网页触发执行发送,程序会出现超时 ·高并发场景,当某个时刻请求瞬间增加时,可以把请求写入到队列,后台在去处理这些请求 ·抢购场景,先入先出的模式 命令: rpush + blpop 或 lpush + brpop rpush : 往列表右侧推入数据 blpop : 客户端阻塞直到队列有值输出 简单队列: simple.php $stmt = $pdo->prepare('select id, c

python脚本实现Redis未授权批量提权

前言 本文主要给大家介绍了关于redis未授权批量提权的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 安装依赖 sudo easy_install redis 使用 redis python hackredis.py usage: hackredis.py [-h] [-l IPLIST] [-p PORT] [-r ID_RSAFILE] [-sp SSH_PORT] For Example: -----------------------------------

Linux Redis 的安装步骤详解

 Linux Redis 的安装步骤详解 前言: Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询. redis 是完全开源免费的,是一个高性能的key-value数据库.Re

MySql 5.7.14 解压版安装步骤详解

下面主要分为五大步给大家介绍mySql 5.7.14 解压版安装教程.感兴趣的朋友一起看看吧. 第一步:下载最近的MySQL文件并且解压: 下载最新版的MySQL–mysql-5.7.12下载地址 将下载到的文件解压缩到自己喜欢的位置,例如我自己的位置是D:\MySQL\mysql-5.7.12-winx64 第二步:配置环境变量 这里不多说,bin目录配置到path下面就行了. 第三步:添加配置文件 直接复制一个解压路径下面的 my-default.ini文件,重命名为my.ini然后编辑该文

python的mysqldb安装步骤详解

python的mysqldb安装步骤详解 安装MySQLdb: 一. 什么是MySQLdb? 解释:MySQLdb是Python操作MySQL的一个接口包.这里要理解一个概念,python操作数据库,都是需要一个类似MySQLdb这样的中间层,这些中间层抽象了具体的实现,提供了统一的API供开发者使用. 二. 如何安装MySQLdb? python2环境下: sudo pip install MySQL-python. MySQL-python目前暂时还不支持python3,有些小问题,可以安装

XenServer XenDesktop安装步骤详解(图文)

一.安装测试前准备 1. 硬件 至少两台物理机器,一台CPU必须支持Intel VT 或 AMD-V. 2. 软件 XenDesktop5.5 XenServer5.6或以上版本 Windows Server 2008 SP2或者R2版本 二.测试拓扑图 说明:XenServer必须安装在实际物理机上,否则虚拟机无法启动.AD,XenCenter,XenDesktop可以安装在虚拟机上.本试验将XenCenter,XenDesktop分别安装在虚拟机里,同时XenCente可以和AD,XenDe

Mysql 5.7.17 解压版(ZIP版)安装步骤详解

下载 解压版下载地址(需要登录) :http://dev.mysql.com/downloads/mysql/ 下载后解压到你想要安装的目录就可以了 配置环境变量 为了方便使用,不必每次都进入bin目录 就添加环境变量,如果不嫌麻烦就不必添加了 增加系统环境变量: MYSQL_HOME ,值就是你的MySQL目录了 例如:D:\tools\database\mysql-5.7.17-winx64 在path变量后追加 %MYSQL_HOME%\bin; 注意前面加分号: 初始化数据库得到data

Visual Studio 2015安装步骤详解

亲身经历记录下来,以备后用.也希望能够帮助到有需要的朋友们! 1.安装之前首先下载VS2015,下载地址: [VS2015社区版官方中文版下载]:http://download.microsoft.com/download/B/4/8/B4870509-05CB-447C-878F-2F80E4CB464C/vs2015.com_chs.iso [VS2015专业版官方中文版下载]:http://download.microsoft.com/download/B/8/9/B898E46E-CBA

tomcat 5.0 + apache 2.0 完全安装步骤详解

安装JDK:下载: j2sdk-1_4_1_02-linux-i586.bin把jdk 安装在/usr/local/j2sdk1.4.1_02在/usr/local 下建立 软连接 jdk#ln -s /usr/local/j2sdk1.4.1_02 /usr/local/jdk[user@host]# cat /etc/profile.d/java.sh# set java environmentexport JAVA_HOME=/usr/local/jdkexport PATH=$PATH:

mysql 5.7.20解压版安装方法步骤详解(两种方法)

我来讲解下window64位下MySQL的安装,MySQL是在5.7开始安装版就只有32位下载服务了,这里我讲解解压版的MySQL如何安装,在安装MySQL解压版时对于新手的小编来说也是头疼得很,各种问题各种来没有安装版的一键轻松搞定的方便,安装时需要注意三点:1.路径配置,2.安装时MySQL端口被占用这时需要关闭被占用端口,3.cmd必须是在管理员环境下设置MySQL信息. MySQL官网: https://www.mysql.com/downloads/ http://www.jb51.n

redhat7.1 安装mysql 5.7.10步骤详解(图文详解)

在redhat下安装MySQL,步骤如下 Mysql目录安装位置:/usr/local/mysql 数据库保存位置:/data/mysql 日志保存位置:/data/log/mysql 下载安装包 http://downloads.mysql.com/archives/community/ 1. 获取mysql安装包,mysql-5.7.10-Linux-glibc2.5-x86_64.tar解压后目录如下. 2. 解压mysql-5.7.10-linux-glibc2.5-x86_64.tar

Redis 对比 Memcached 并在 CentOS 下进行安装配置详解

Redis 是一个开源.支持网络.基于内存.键值对的 Key-Value 数据库,本篇文章主要介绍了Redis 对比 Memcached 并在 CentOS 下进行安装配置详解,有兴趣的可以了解一下. 了解一下 Redis Redis 是一个开源.支持网络.基于内存.键值对的 Key-Value 数据库,使用 ANSI C 编写,并提供多种语言的 API ,它几乎没有上手难度,只需要几分钟我们就能完成安装工作,并让它开始与应用程序顺畅协作.换句话来说,只需投入一小部分时间与精力,大家就能获得立竿