1.下载redis源码包

wget http://download.redis.io/releases/redis-3.2.4.tar.gz

2.解压并安装
tar xvf redis-3.2..tar.gz
cd redis-3.2.4
make && make instal

3.将src文件夹将可执行文件拷贝到/usr/local/bin目录下,因为已经有redis2版本了,所以复制过去之后命名带上3

cp src/redis-server /usr/local/bin/redis-server3
cp src/redis-cli /usr/local/bin/redis-cli3
cp src/redis-trib.rb /usr/bin/redis-trib.rb3

4.创建节点配置文件,至少要6个节点才能创建一个集群【这里示范在同一台机器上创建6个节点来搭建集群,当然你也可以选择两台机器做成3个master和3个slave的形式】

创建6个文件夹并将redis.conf文件复制过去并修改,以7001文件配置为例,后面同步修改7001为7002-7006就可以了

mkdir -p cluster/7001 cluster/7002 cluster/7003 cluster/7004 cluster/7005 cluster/7006
cp redis.conf cluster/7001
vim cluster/7001/redis.conf

主要修改以下几处

port  7001                                 //端口7000,7002,7003
bind 127.0.0.1 //默认ip为127.0.0.1,所以本机可以不写,如果是多台机器需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes //redis后台运行
pidfile /var/run/redis_7001.pid //pidfile文件对应7000,7001,7002
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7001.conf //集群的配置 配置文件首次启动自动生成 7001
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志

5.启动刚刚创建的节点

redis-server3 cluster/7001/redis.conf
redis-server3 cluster/7002/redis.conf
redis-server3 cluster/7003/redis.conf
redis-server3 cluster/7004/redis.conf
redis-server3 cluster/7005/redis.conf
redis-server3 cluster/7006/redis.conf

6.查看redis节点启动情况,出现以下信息说明启动正常

ps -ef|grep redis
root 6106 1 0 15:49 ? 00:00:00 redis-server3 127.0.0.1:7001 [cluster]
root 6112 1 0 15:49 ? 00:00:00 redis-server3 127.0.0.1:7003 [cluster]
root 6116 1 0 15:49 ? 00:00:00 redis-server3 127.0.0.1:7004 [cluster]
root 6120 1 0 15:49 ? 00:00:00 redis-server3 127.0.0.1:7005 [cluster]
root 6124 1 0 15:49 ? 00:00:00 redis-server3 127.0.0.1:7006 [cluster]
root 6689 1 0 15:50 ? 00:00:00 redis-server3 127.0.0.1:7002 [cluster] netstat -tnlp|grep redis
tcp        0      0 127.0.0.1:7001              0.0.0.0:*                   LISTEN      6106/redis-server3  
tcp        0      0 127.0.0.1:7002              0.0.0.0:*                   LISTEN      6689/redis-server3  
tcp        0      0 127.0.0.1:7003              0.0.0.0:*                   LISTEN      6112/redis-server3  
tcp        0      0 127.0.0.1:7004              0.0.0.0:*                   LISTEN      6116/redis-server3  
tcp        0      0 127.0.0.1:7005              0.0.0.0:*                   LISTEN      6120/redis-server3  
tcp        0      0 127.0.0.1:7006              0.0.0.0:*                   LISTEN      6124/redis-server3  
tcp        0      0 127.0.0.1:17001             0.0.0.0:*                   LISTEN      6106/redis-server3  
tcp        0      0 127.0.0.1:17002             0.0.0.0:*                   LISTEN      6689/redis-server3  
tcp        0      0 127.0.0.1:17003             0.0.0.0:*                   LISTEN      6112/redis-server3  
tcp        0      0 127.0.0.1:17004             0.0.0.0:*                   LISTEN      6116/redis-server3  
tcp        0      0 127.0.0.1:17005             0.0.0.0:*                   LISTEN      6120/redis-server3  
tcp        0      0 127.0.0.1:17006             0.0.0.0:*                   LISTEN      6124/redis-server3

6.创建集群

出现错误,看提示信息原来这个工具是基于ruby实现的,所以需要先安装ruby

redis-trib.rb3 create --replicas 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
/usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/bin/redis-trib.rb3:25:in `<main>'

安装ruby,查看yum提供ruby的安装,那直接用yum安装就行了

yum list|grep ^ruby
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis

还是报错,因为直接通过yum安装的ruby版本是2.0.0,而redis集群需要2.2.2+

开始使用源码包安装ruby2.2.2+,但是还是出问题,因为2.0.0版本冲突的问题吧,百度了一下可以使用rvm来安装同时卸载掉原来的2.0.0

yum install curl
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 //一定先执行这一步,不然下一步可能会报错
curl -L get.rvm.io | bash -s stable
source /usr/local/rvm/scripts/rvm
rvm list known //查看可安装的版本 可以看到有2.3.3,就安装这个吧
rvm install 2.3.3
rvm remove 2.0.0 //干掉就版本
rvm remove 2.7.9 //干掉就版本
ruby --version //ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux] 成功

重新执行gem install redis,成功

重新执行redis-trib.rb3 create --replicas 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006还是报错

带上一个参数redis-trib.rb3 create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

否则会提示

输入yes后最终出现如图界面,表示成功了

验证是否成功,集群链接带-c参数,如下显示成功了

追加一下碰到的几个异常情况
报错: Node xx.xx.xx.xx:7001 is not empty. Either the node already exists (check with CLUSTER NODES) or contains some key in database 0. 
方案:清除该节点下的 x.aof x.rdb nodes.conf(即redis.conf 中配置的的cluster-config-file)文件,并连接所有节点执行 flushdb, 之后重新执行redis-trib.rb3 create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
 
报错:ERR: Slot xx is alredy busy (Redis: CommandError) 
方案:连接所有节点执行 flushall 和cluster reset, 之后重新执行redis-trib.rb3 create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

如何创建redis集群的更多相关文章

  1. 四十.创建Redis集群 管理集群

    环境准备 准备 6台(51-56) redis服务器  以默认配置运行redis服务即可  一.创建Redis集群 1.启用集群功能( 51-56 都要配置) ]#  netstat -antupl ...

  2. 重新创建redis集群的注意事项

    一.重新创建redis集群的注意事项 1.将每个节点下aof.rdb.nodes.conf本地备份文件删除: 2.127.0.0.1:7001> flushdb #清空当前数据库(这一步可以省略 ...

  3. AWS 创建redis 集群模式遇到的问题

    问题描述 前几天在aws 平台创建了Redis 集群模式,但是链接集群的时候发现无法连接,返回信息超时. 通过参数组创建redis的时候提示报错:Replication group with spec ...

  4. 创建redis集群

    假设你已经安装好了redis ,如果还没有请安装 将多个实例跑起来 创建一个目录,比如 redis-cluster 把redis-server拷贝到这个目录下 在目录下为每一个实例创建一个文件夹 在每 ...

  5. docker创建Redis集群

    开始工作: yum install wegt ##安装下载工具 yum install net-tools ##安装网络工具 yum install tree ##安装tree命令(方便查看集群配置文 ...

  6. k8s第一个实例创建redis集群服务

    1.创建redis-master-controller.yaml apiVersion: v1 kind: ReplicationController metadata: name: redis-ma ...

  7. redis-trib.rb创建Redis集群时失败报错解决方案

    问题描述: [root@eshop-cache01 init.d]# redis-trib.rb create --replicas 1 192.168.1.110:7001 192.168.1.11 ...

  8. window下使用Redis Cluster部署Redis集群

    日常的项目很多时候都需要用到缓存.redis算是一个比较好的选择.一般情况下做一个主从就可以满足一些比较小的项目需要.在一些并发量比较大的项目可能就需要用到集群了,redis在Windows下做集群可 ...

  9. [个人翻译]Redis 集群教程(中)

    上一篇:http://www.cnblogs.com/li-peng/p/6143709.html 官方原文地址:https://redis.io/topics/cluster-tutorial  水 ...

随机推荐

  1. python3爬取淘宝商品(失效)

    最近有人反映淘宝的搜索功能要登录才能用,原先的直接爬取的方法挂了.稍微把之前的代码修改了一下,登录采用最简单的复制cookie来解决. 顺便说一下,这只是根据搜索的的索引界面获取的信息,并未深入的获取 ...

  2. 【转】Java Future 怎么用 才算是真正异步

    接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果.        Callable接口类似于Runnable,从名字就可以看出来了,但 ...

  3. linux安装php-laravel环境

    1.运用传说中的宝塔面板安装(https://www.bt.cn/download/linux.html)网站地址 在xshell软件中安装一下命令 1.1 宝塔centos安装 wget -O in ...

  4. Tomcat的使⽤

    准备 1.官⽹地址:http://tomcat.apache.org下载. 2.解压文件,并放到指定路径,给该文件授权. chmod -R 755 3.启动和停止 进入到/Users/lucas/Do ...

  5. SIFT算法原理(3)-确定关键点的主方位,构建关键点描述符

    介绍官网:https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_sift_intro/py_sift_intro.html ...

  6. 呼叫到达率100%,网易云信信令SDK免费上线!

    近期,网易云信推出一款稳定可靠.到达率高.扩展性较强的信令通道产品--信令SDK.它能够提供可靠的消息通道,可用于搭建音视频场景下的呼叫邀请机制.信令SDK目前兼容市面上所有主流的音视频SDK,呼叫到 ...

  7. 《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(3)-- 命令

    3 命令 Fabrics命令用于创建队列和初始化controller.Fabrics命令的Opcode字段填写0x7F.无论controller是否处于使能状态(CC.EN)Fabrics命令都会被处 ...

  8. Linux监控工具nmon

    Linux监控工具 nmon nmon是一种在Linux操作系统上广泛使用的监控与分析工具,nmon所记录的信息是比较全面的,它能在系统运行 过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中 ...

  9. C++——绪论

    计算机语言的发展 1.机器语言(二进制).汇编语言.比较难以理解和识记,与人类语言之间的差距太大: 2.高级语言,可以写出类似于人类思维的语句,可以有人们习惯的表达方式: 3.面向对象的语言,描述客观 ...

  10. Hackintosh Issues 10.13.x

    Issuses 1: 出现禁行: (-v:) allcating 0x800 pages at 0x2000000 alloc type 2 Load kernal from stream Load ...