Redis Cluste部署
一.原生搭建篇Cluster了解cluster的架构
Redis-cluster是使用的是一致性哈希算法来切分数据存储,总计16383个槽,分成16383/N(redis节点)个分区,存取时将key转换成int,key/16383来决定存取在哪个分区。
1.redis.conf配置文件中开启支持cluster集群,改名字为redis-cluster-7000.conf(方便后面集群管理)
port 7000
daemonize yes
pidfile /var/run/redis-7000.pid
dir /opt/module/redis-cluster/data
logfile "7000.log"
dbfilename "dump-7000.rdb"
#开启集群
cluster-enabled yes
#集群中本节点配置文件名 自动生成
cluster-config-file nodes-7000.conf
#当集群中某个节点挂了,整个集群是否停止服务,设置成no 继续提供服务
cluster-require-full-coverage no
2.用上面的配置文件启动redis,确保配置文件没问题
3.用sed命令生成其他节点的配置文件
sed "s/7000/7001/g" redis-cluster-7000.conf >redis-cluster-7001.conf
sed "s/7000/7002/g" redis-cluster-7000.conf >redis-cluster-7002.conf
sed "s/7000/7003/g" redis-cluster-7000.conf >redis-cluster-7003.conf
sed "s/7000/7004/g" redis-cluster-7000.conf >redis-cluster-7004.conf
sed "s/7000/7005/g" redis-cluster-7000.conf >redis-cluster-7005.conf
sed "s/7000/7006/g" redis-cluster-7000.conf >redis-cluster-7006.conf
4.启动每个节点 redis-server redis-cluster-700(1~6).conf
启动后会生成相应的nodes-700(0~6).conf文件。该文件列出了群集中其他节点,它们的状态,持久变量等等。 由于某些消息的接收,通常会将此文件重写并刷新到磁盘上。
5.每个节点互通(meet)
meet通信,保证每个节点能够知道其他节点负责的槽区间。
结构图:

官方:
请注意,Redis 群集需要形成完整的网格(每个节点与其他节点相连,如上图),但为了创建群集,不需要发送形成完整网格所需的所有 CLUSTER MEET 命令。重要的是发送足够的 CLUSTER MEET 消息,以便每个节点都可以通过一系列已知节点到达每个其他节点。
所以只需要有一条通路就可以
进去7000的节点,执行cluster meet 与其他节点通信
redis-cli -p
CLUSTER MEET 127.0.0.1
CLUSTER MEET 127.0.0.1
CLUSTER MEET 127.0.0.1
CLUSTER MEET 127.0.0.1
CLUSTER MEET 127.0.0.1
CLUSTER MEET 127.0.0.1
6.查看是否连通
redis-cli -p cluster info
#结果:
cluster_state:fail #集群状态
cluster_slots_assigned: #被分配的槽位数
cluster_slots_ok: #正确分配的槽位
cluster_slots_pfail:
cluster_slots_fail:
cluster_known_nodes: #当前集群下的所有节点,包括主从节点,7说明通了
cluster_size: #当前集群下的有槽位分配的节点,即主节点
cluster_current_epoch:
cluster_my_epoch:
cluster_stats_messages_ping_sent:
cluster_stats_messages_pong_sent:
cluster_stats_messages_meet_sent:
cluster_stats_messages_sent:
cluster_stats_messages_ping_received:
cluster_stats_messages_pong_received:
cluster_stats_messages_received:
7.分配槽
采用的是一致性哈希算法,来分配总共给定的16383个槽,此处为了方便就均分了,实际开发中建议根据服务器配置分配。
这里使用7001-7003作为主节点 7004-7006做从节点
#此处的分配规则
7001 0~5000
7002 5001~10000
7003 10001~16383
#代码:
redis-cli -p 7001 CLUSTER ADDSLOTS 5000
redis-cli -p 7002 CLUSTER ADDSLOTS 10000
redis-cli -p 7003 CLUSTER ADDSLOTS 16838
结构图:
8.配置主从
这里需要用到Nodeid,第一步中配置生成的文件中可以看
#第一步的配置 可以查看nodes-7000.conf这个文件
cluster-config-file nodes-7000.conf
一一对应:红框为Nodeid

进入每个主节点用 cluster replicate <从Nodeid>
redis-cli -p 7001 cluster replicate da47d14c9e4079ad0973546027f598aab3596fff
查看结果
redis-cli -p 7001 cluster nodes
到此原生配置完成。
下一篇开始Ruby快速搭建Cluster集群。
由于Redis5+移除掉了Ruby,官方说明Redis-trib.rb移到Redis-cli -cluster命令,下一篇没了。

使用redis-cli --cluster快速搭建集群
#前面步骤一样
1.配置主从
多个主从使用"\"隔离开 <几个从>指定多少个从节点
# redis-cli --cluster create <主:port> <从1:port> <从2:port> \ <主1> > <从1> \.... --cluster-replicas <几个从>
./redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7004 \ 127.0.0.1:7002 127.0.0.1:7005 \ 127.0.0.1:7003 127.0.0.1:7006 --cluster-replicas 1 2.分配槽
#reshard host:port
# --cluster-from <arg>
# --cluster-to <arg>
# --cluster-slots <arg>
# --cluster-yes
# --cluster-timeout <arg>
# --cluster-pipeline <arg>
# --cluster-replace
./redis-cli --cluster reshard 127.0.0.1:7001 --cluster-from 0 --cluster-to 5000
Redis Cluste部署的更多相关文章
- Redis笔记(二)Redis的部署和启动
Linux下Redis的部署和启动 下载安装介质 Redis官网地址:http://www.redis.io/目前最新版本是redis-3.0.3. 可以访问 http://download.redi ...
- Redis分布式部署,一致性hash
一致性哈希 由于hash算法结果一般为unsigned int型,因此对于hash函数的结果应该均匀分布在[0,2^32-1]区间,如果我们把一个圆环用2^32 个点来进行均匀切割,首先按照hash( ...
- Window Redis分布式部署方案 java
Redis分布式部署方案 Window 1. 基本介绍 首先redis官方是没有提供window下的版本, 是window配合发布的.因现阶段项目需求,所以研究部署的是window版本的,其实都 ...
- windows下安装Redis并部署成服务
windows下安装Redis并部署成服务 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 一:下载 下载地址: windows版本: http ...
- 第一章· Redis入门部署及持久化介绍
Redis简介 Redis安装部署 Redis持久化 Redis简介 软件说明: Redis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品. ...
- VMware虚拟机安装CentOS6.4、部署web项目全过程(设置固定IP、安装JDK、Tomcat、Redis、部署项目)
概述:该篇随笔介绍了在VMware上安装centOS.在centOS上安装JDK.安装Tomcat.安装Redis并部署项目的全过程,虽然参考了很多优秀的文章,但实践.整理.补充都很用心,若要复制粘贴 ...
- Redis 主从部署
Redis 主从部署 http://www.xuchanggang.cn/archives/978.html
- Redis单机部署、添加开机自启、配置参数
1.Redis简介 redis是使用C语言编写的开源的,支持网络,基于内存,可持久性的键值对存储数据库,2013年5月之前,Redis是最流行的键值对存储数据库,Redis采用内存数据集,支持多种数据 ...
- Redis的部署使用文档
Redis的部署使用文档 简述: redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符 串).list(链表).set( ...
随机推荐
- magento中的getBaseUrl函数
(转)本文地址:http://www.popo4j.com/magento/mage_getbaseurl.html 在magento中如果要获取JS,media,skin目录,我们可以使用magen ...
- R语言 环境设置
尝试在线环境 你真的不需要设置自己的环境来开始学习R编程语言. 原因很简单,我们已经在线设置了R编程环境,以便您可以在进行理论工作的同时在线编译和执行所有可用的示例. 这给你对你正在阅读的信心,并用不 ...
- cdq分治·三维偏序问题
转载自FlashHu大佬的博客CDQ分治总结(CDQ,树状数组,归并排序),在讲述部分有部分删改,用了自己的代码 CDQ分治的思想 CDQ分治是基于时间的离线分治算法.这一类分治有一个重要的思想——用 ...
- [JZOJ 5812] 区间
题意:求经过多少次操作可以使得序列达到给定状态. 思路: 好像和\(CF\)某次比赛的题差不多啊... 差分统计每个点的值,将临近的\(+1\)和\(-1\)匹配即可. #include <bi ...
- Flex birdeye笔记
1.将官网示例demo运行起来 新建Flex项目,直接将官网src下的demo拷贝到新建的项目的src下 .将官网example-binaries目录下的文件拷贝到新建项目的bin-debug下即可 ...
- (转)python基础之迭代器协议和生成器(一)
一 递归和迭代 二 什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前 ...
- OCP—051试题
FROM: http://blog.itpub.net/26736162/viewspace-1252569/?page=2 http://blog.csdn.net/elearnings/artic ...
- hash值的计算与转换 分类: ACM TYPE 2015-05-07 17:49 36人阅读 评论(0) 收藏
#include <bits/stdc++.h> using namespace std; const int MAXN = 100; const int X = 3; long long ...
- sift-高斯金字塔
一.高斯金字塔 金字塔的层是由降采样得到的,而每一层又有多张图像,其他的图像是由初始的一张经过高斯模糊的得到的. 注意的是:高斯金字塔有层,而金字塔的每一层有一组图像,这一组图像也形成了层.注意两个层 ...
- python批量运行py文件
import os path="E:\\python" #批量的py文件路径 for root,dirs,files in os.walk(path): #进入文件夹目录 for ...
