Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便

(1)像操作单个redis一样操作key,不用操心key在哪个节点上
(2)在线动态添加、删除redis节点,不用停止服务
(3)根据节点性能,动态分配不同数量的key到不同redis节点

(4)每个节点都配有slave,并自动监测和切换

Redis3 cluster 中增加了一个重要概念:

hash slot(哈希槽),共有16384个slot
key不是直接放入redis中了,而是放入slot中,再把slot放入redis中

根据keyhash值计算其所在的slot,再根据slot和redis节点的对应关系,找到此slot所在的节点,然后到这个节点对key进行操作

例如现有3个redis节点,每个节点各负责一半数量的slot,16384/3 = 5461个
现在想添加一个redis节点,可以从 节点1、节点2、节点3 中各拿出一部分的slot,移到新节点
每个redis节点中的slot数量可以不一致,根据节点性能适当分配

进入集群需要用redis -c -p 7000    -c是enable cluster   p指定进入端口
搭建集群遇到的问题:
由于教程里面给出的集群的地址是127.0.0.1:7000、......,在java程序访问的时候是无法获取节点信息的,所以我需要重新搭建集群,然后停掉所有节点,重新搭建的时候,报出了如下错误,可知是因为有些配置文件以及数据没有删除。将其全部删除干净即可。
[ERR] Node 172.168.63.202:7001 is not empty.
Either the nodealready knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
find / -name dump.rdb 
rm -f /usr/redis/cluster/7002/redis7002/src/dump.rdb 
rm -f /usr/redis/cluster/7004/redis7004/src/dump.rdb
rm -f /usr/redis/cluster/7005/redis7005/src/dump.rdb
rm -f /usr/redis/cluster/7001/redis7001/src/dump.rdb
rm -f /usr/redis/cluster/7000/redis7000/src/dump.rdb
rm -f /usr/redis/cluster/7003/redis7003/src/dump.rdb
rm -f /usr/redis/master/redis-3.0.7/src/dump.rdb
find / -name dump.rdb
find / -name appendonly.aof
rm -f /usr/redis/cluster/7002/redis7002/src/appendonly.aof
rm -f /usr/redis/cluster/7004/redis7004/src/appendonly.aof
rm -f /usr/redis/cluster/7005/redis7005/src/appendonly.aof
rm -f /usr/redis/cluster/7001/redis7001/src/appendonly.aof
rm -f /usr/redis/cluster/7000/redis7000/src/appendonly.aof
rm -f /usr/redis/cluster/7003/redis7003/src/appendonly.aof
find / -name appendonly.aof
find / -name nodes.conf
rm -f /usr/redis/cluster/7002/redis7002/src/nodes.conf
rm -f /usr/redis/cluster/7004/redis7004/src/nodes.conf
rm -f /usr/redis/cluster/7005/redis7005/src/nodes.conf
rm -f /usr/redis/cluster/7001/redis7001/src/nodes.conf
rm -f /usr/redis/cluster/7000/redis7000/src/nodes.conf
rm -f /usr/redis/cluster/7003/redis7003/src/nodes.conf
find / -name nodes.conf
 
#创建集群
#!/bin/sh
cd /usr/redis/cluster/7000/redis7000/src/
./redis-server ../redis.conf
cd /usr/redis/cluster/7001/redis7001/src/
./redis-server ../redis.conf
cd /usr/redis/cluster/7002/redis7002/src/
./redis-server ../redis.conf
cd /usr/redis/cluster/7003/redis7003/src/
./redis-server ../redis.conf
cd /usr/redis/cluster/7004/redis7004/src/
./redis-server ../redis.conf
cd /usr/redis/cluster/7005/redis7005/src/
./redis-server ../redis.conf
cd /usr/redis/cluster/7000/redis7000/src/
./redis-trib.rb create --replicas 1 192.168.10.102:7000 192.168.10.102:7001 192.168.10.102:7002 192.168.10.102:7003 192.168.10.102:7004 192.168.10.102:7005
 

#集群启动关闭:
#!/bin/sh
/usr/redis/cluster/7000/redis7000/src/redis-cli -p 7000 shutdown
/usr/redis/cluster/7001/redis7001/src/redis-cli -p 7001 shutdown
/usr/redis/cluster/7002/redis7002/src/redis-cli -p 7002 shutdown
/usr/redis/cluster/7003/redis7003/src/redis-cli -p 7003 shutdown
/usr/redis/cluster/7004/redis7004/src/redis-cli -p 7004 shutdown
/usr/redis/cluster/7005/redis7005/src/redis-cli -p 7005 shutdown
if [ $(ps -ef | grep -c redis | grep -cv grep) -gt 1 ]
then echo "集群关机失败,请检查节点"
else
 echo "集群全部关闭,ok"
fi
 
//集群搭建教程 http://redis.io/topics/cluster-tutorial

//集群搭建教程 http://blog.csdn.net/yubinpll9110/article/details/51373890

这里创建6个redis节点,其中三个为主节点,三个为从节点。

redis和端口对应关系:

主服务器

127.0.0.1:7000

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

步骤:
    1,下载redis。官网下载3.0.0版本,之前几的版本不支持集群模式

下载地址:http://download.redis.io/releases/redis-3.0.0.tar.gz
    2:上传服务器,解压,编译
    tar -zxvf redis-3.0.0-rc2.tar.gz
    mv redis-3.0.0-rc2.tar.gz redis3.0
    cd /usr/local/redis3.0
    make & make install

3:创建集群需要的目录并拷贝redis
    mkdir -p /usr/local/cluster
    mkdir -p /usr/local/cluster/7000
    mkdir -p /usr/local/cluster/7001
    mkdir -p /usr/local/cluster/7002
    mkdir -p /usr/local/cluster/7003
    mkdir -p /usr/local/cluster/7004
    mkdir -p /usr/local/cluster/7005
    cp -rf /usr/local/redis3.0/* /usr/local/cluster/7000/
    cp -rf /usr/local/redis3.0/* /usr/local/cluster/7001/
    cp -rf /usr/local/redis3.0/* /usr/local/cluster/7002/
    cp -rf /usr/local/redis3.0/* /usr/local/cluster/7003/
    cp -rf /usr/local/redis3.0/* /usr/local/cluster/7004/
    cp -rf /usr/local/redis3.0/* /usr/local/cluster/7005/

4:修改配置文件redis.conf

vi /usr/local/cluster/7000/redis.conf

##修改配置文件中的下面选项
    port 7000
    daemonize yes
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    appendonly yes

#同样再对其它配置文件进行修改
    vi /usr/local/cluster/7001/redis.conf
    vi /usr/local/cluster/7002/redis.conf
    vi /usr/local/cluster/7003/redis.conf
    vi /usr/local/cluster/7004/redis.conf
    vi /usr/local/cluster/7005/redis.conf
    ##注意:不同的目录配置不同的redis.conf中的port

5:启动6个redis

cd /usr/local/cluster/7000/src
    redis-server ../redis.conf
    cd /usr/local/cluster/7001/src
    redis-server ../redis.conf
    cd /usr/local/cluster/7002/src
    redis-server ../redis.conf
    cd /usr/local/cluster/7003/src
    redis-server ../redis.conf
    cd /usr/local/cluster/7004/src
    redis-server ../redis.conf
    cd /usr/local/cluster/7005/src
    redis-server ../redis.conf

##启动之后使用命令查看redis的启动情况ps -ef|grep redis

6,创建redis集群
    cd /usr/local/redis3.0/src
    ./redis-trib.rb create --replicas 1 127.0.0.1:7000 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

6.1执行上面的命令的时候会报错,因为是执行的的脚本,需要
    错误内容:/usr/bin/env: ruby: No such file or directory
    所以需要安装ruby的环境,这里推荐使用yum install ruby

yum install ruby

6.2然后再执行第步的创建集群命令,还会报错,提示缺少rubygems组件
    错误内容:
    ./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
    from ./redis-trib.rb:24
    yum install rubygems

6.3再次执行第步的命令,还会报错,提示不能加载redis,是因为缺少redis的接口
    错误内容:
    /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)
    from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from ./redis-trib.rb:25

gem install redis
    这里可能无法安装,因为无法连接gem服务器:
    [@zw_22_90 src]# gem install redis --version 3.0.0
    ERROR: Could not find a valid gem 'redis' (= 3.0.0) in any repository
    ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)

如何使用?
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l
*** CURRENT SOURCES ***https://ruby.taobao.org
# 请确保只有 ruby.taobao.org
$ gem install rails

6.4 再次执行第步的命令,正常执行
    输入yes,然后配置完成。
    [@zw_22_90 src]# ./redis-trib.rb create --replicas 1 127.0.0.1:7000 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
    >>> Creating cluster
    Connecting to node 127.0.0.1:7000: OK
    Connecting to node 127.0.0.1:7001: OK
    Connecting to node 127.0.0.1:7002: OK
    Connecting to node 127.0.0.1:7003: OK
    Connecting to node 127.0.0.1:7004: OK
    Connecting to node 127.0.0.1:7005: OK
    >>> Performing hash slots allocation on 6 nodes...
    Using 3 masters:
    127.0.0.1:7000
    127.0.0.1:7001
    127.0.0.1:7002
    Adding replica 127.0.0.1:7003 to 127.0.0.1:7000
    Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
    Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
    M: 2022f24d581b4a7c3342e3245c32927cbd5ec16d 127.0.0.1:7000
    slots:0-5460 (5461 slots) master
    M: 37b7008f80f8c21a698da8cb1f1b32db8c0c415c 127.0.0.1:7001
    slots:5461-10922 (5462 slots) master
    M: ac6dc5fa96e856b34c1ba4c3814394e4ebb698dd 127.0.0.1:7002
    slots:10923-16383 (5461 slots) master
    S: b5b76d70bbb0dbf3e7df8a38f1259e95e2054721 127.0.0.1:7003
    replicates 2022f24d581b4a7c3342e3245c32927cbd5ec16d
    S: 6881f8fef9c25da486f320ebf2ead39c1502db4c 127.0.0.1:7004
    replicates 37b7008f80f8c21a698da8cb1f1b32db8c0c415c
    S: f090526d32cced97731eef2a2e1722a7bac7d9ea 127.0.0.1:7005
    replicates ac6dc5fa96e856b34c1ba4c3814394e4ebb698dd
    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 127.0.0.1:7000)
    M: 2022f24d581b4a7c3342e3245c32927cbd5ec16d 127.0.0.1:7000
    slots:0-5460 (5461 slots) master
    M: 37b7008f80f8c21a698da8cb1f1b32db8c0c415c 127.0.0.1:7001
    slots:5461-10922 (5462 slots) master
    M: ac6dc5fa96e856b34c1ba4c3814394e4ebb698dd 127.0.0.1:7002
    slots:10923-16383 (5461 slots) master
    M: b5b76d70bbb0dbf3e7df8a38f1259e95e2054721 127.0.0.1:7003
    slots: (0 slots) master
    replicates 2022f24d581b4a7c3342e3245c32927cbd5ec16d
    M: 6881f8fef9c25da486f320ebf2ead39c1502db4c 127.0.0.1:7004
    slots: (0 slots) master
    replicates 37b7008f80f8c21a698da8cb1f1b32db8c0c415c
    M: f090526d32cced97731eef2a2e1722a7bac7d9ea 127.0.0.1:7005
    slots: (0 slots) master
    replicates ac6dc5fa96e856b34c1ba4c3814394e4ebb698dd
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.

至此redis集群即搭建成功!

7,redis-cli命令进入集群环境
    [@zw_22_90 src]# redis-cli -c -p 7000

127.0.0.1:7000> quit;

转载于:https://www.cnblogs.com/ClearX/p/5803515.html

Redis 3.0.2集群搭建以及相关问题汇总相关推荐

  1. redis 3.0的集群部署

    2019独角兽企业重金招聘Python工程师标准>>> redis 3.0的集群部署 博客分类: 缓存 文章转载自:http://hot66hot.iteye.com/blog/20 ...

  2. 技术实践|Redis基础知识及集群搭建(上)

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.本篇文章围绕Redis基础知识及集群搭建相关内容进行了分享,希 ...

  3. redis 3.0 cluster 集群 学习之路篇 [3]

    周氏一族,整理技术文档,给下一代留点教程...... redis 3.0 cluster 安装篇,请看 http://zhoushouby.blog.51cto.com/9150272/1560400 ...

  4. csrediscore访问redis集群_搭建文档 | centos7.6环境下redis5.0.8集群搭建

    " 本文作者:墨篱弦 " 一.做基础配置 a) 首先创建3个空文件 mkdir -p /server/redis_cluster/7001/datamkdir -p /server ...

  5. Redis5.0.x集群搭建

    前言: 本文将介绍Redis5.0三主三从集群搭建以及集群配置. 一.资源配置(3主3从集群) 1.以下为生产环境下,集群搭建所需资源配置: 资源 配置 cpu 4核*6 内存 16G*6 硬盘 20 ...

  6. 【NOSQL】redis哨兵模式、集群搭建

    目录 一.redis高可用 一.Redis主从复制 1.1主从复制的作用 1.2主从复制流程 二.搭建Rdeis主从复制 2.1安装redis 2.1.1环境准备 2.1.2安装redis 2.1.3 ...

  7. Redis哨兵机制 哨兵集群搭建

    本文讲解,基于Redis版本:5.0.3  2021-12-24更新:本教程 Redis-6.2.1 同样适用 本文是在Redis集群的基础之上,通过Redis哨兵机制来完成Redis集群的高可用方案 ...

  8. elasticsearch7.0.1集群搭建(最后有ES6.7的配置)

    ** ES集群搭建 **: 说明:首先要讨论搭建几个集群,集群搭建很简单,只需要配置做好就ok; 一 : 在搭建集群之前,我们首先要了解一个es中的相关内容 cluster : 代表一个集群,集群中有 ...

  9. Nacos2.0.3集群搭建

    集群搭建 前置条件 JDK 1.8 MySQL 5.7.29 Nacos 2.0.3 搭建过程 将Nacos安装包上传至三个服务器,本次搭建使用三个端口来模拟三个不同的主机 解压: tar -zvxf ...

最新文章

  1. 测试mysql安装成功_MySQL安装之“测试”
  2. CM3计算板安装硬件时钟DS3231
  3. php mysql存中文,PHP+MySQL存储数据常见中文乱码问题小结
  4. ida 字符串查找_IDA 搜索中文字符串
  5. 友盟渠道统计mysql_cnzz友盟怎么安装网站统计代码监控网站流量
  6. python里自带的绘画库是_Python绘图Turtle库详解
  7. Windows运维的学习笔记
  8. linux下搭建博客day3-git安装
  9. 1-2月热点:度目发布煤矿电子封条解决方案,AI助力生产安全,推进煤矿智能化建设
  10. html5注册页面样式,HTML5一款小清新风格的登录/注册表单界面模板
  11. 逻辑结构与存储结构关系
  12. 普渡大学计算机科学本科,美国普渡大学计算机科学CS本科申请条件及案例
  13. 执念斩长河暑期出发录
  14. APP开发接入广告平台及应用市场(应用分发平台)记录
  15. 写法更自由的Table表格--BeeGridTable
  16. Scrum立会报告+燃尽图(Final阶段第七次)
  17. 支付宝扫码到银行卡的收款码(隐藏卡号)静态+动态 制作教程分享
  18. linux分区表mbr改gtp,免重装系统 手把手教你MBR转GPT分区表
  19. 购房卖方违约 买方如何维护自己的合法权益?
  20. 怎样使用nat和桥接方式解决虚拟机联网问题

热门文章

  1. 一个立即关闭显示器的小软件(Masm开发,只有3KB大小)
  2. 关于EMF模型的操作,赶紧记下来
  3. WIN2003设完C盘权限后终端连不上。
  4. 阿里云服务器一分价钱一分货,切记!
  5. zookeeper伪集群(在一台机器上集群)
  6. PHP_Smarty
  7. 读书笔记:《时间投资法》之一
  8. ComponentName知识
  9. 安装nginx及fastdfs-nginx-module
  10. 用计算机怎样给文章分解,计算机试卷6分解..pdf