redis3.0集群搭建
wget http://download.redis.io/releases/redis-3.0.4.tar.gz
tar redis-3.0.4.tar.gz
cd redis-3.0.4
make
make install
mv redis-3.0.4 /app/sinova/redis
cd /app/sinova/redis
mkdir bin,conf,rdb,log
mv redis.conf sentinel.conf conf
find -maxdepth 1 -type f -delete
cd src
mv mkreleasehdr.sh redis-benchmark redis-sentinel redis-server redis-cli redis-check-aof redis-check-dump redis-trib.rb ../bin/
mv redis-3.0.4 /app/sinova/redis
cp -r redis redis2
二、配置redis
redis.conf修改内容:
daemonize yes
pidfile /app/sinova/redis/log/redis.pid
port 7000 #不同实例用不同端口
logfile "/app/sinova/redis/log/redis.log" #不同实例定义不同路径
dir /app/sinova/redis/rdb #定义dump.rdb和appendonly.aof文件存放路径
appendonly yes #开启AOF持久化
cluster-enabled yes
cluster-config-file nodes-7000.conf #不同实例需修改端口
cluster-node-timeout 5000
/app/sinova/redis/bin/redis-server /app/sinova/redis/conf/redis.conf
/app/sinova/redis2/bin/redis-server /app/sinova/redis2/conf/redis.conf
/app/sinova/redis/bin/redis-trib.rb create --replicas 1 192.168.116.130:7000 192.168.116.129:7001 192.168.116.131:7002 192.168.116.130:7003 192.168.116.129:7004 192.168.116.131:7005
执行以上命令后redis-trib会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes , redis-trib 就会将这份配置应用到集群当中。



Connecting to node 192.168.116.131:7005: OK
Connecting to node 192.168.116.131:7002: OK
Connecting to node 192.168.116.130:7000: OK
Connecting to node 192.168.116.129:7001: OK
Connecting to node 192.168.116.130:7003: OK
Connecting to node 192.168.116.129:7004: OK
>>> Performing Cluster Check (using node 192.168.116.131:7005)
S: 93752d84dc8dd430a439644f0dd3288ff3b50a49 192.168.116.131:7005
slots: (0 slots) slave
replicates 794da90978e2bd501eb2a45e1f66458d9a4c70cf
M: 7c075df721b8e7524e4732174307ea724e4d49d0 192.168.116.131:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
M: 7bef1e428364f2323a300fc47553889117c6e2fa 192.168.116.130:7000
slots:10923-16383 (5461 slots) master
1 additional replica(s)
M: 794da90978e2bd501eb2a45e1f66458d9a4c70cf 192.168.116.129:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 8c36b569793c1580ae1fb6e7c198ea5d291abb56 192.168.116.130:7003
slots: (0 slots) slave
replicates 7bef1e428364f2323a300fc47553889117c6e2fa
S: c632d284b9ab38100984d15fa65c005ca12bb438 192.168.116.129:7004
slots: (0 slots) slave
replicates 7c075df721b8e7524e4732174307ea724e4d49d0
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.









当机器不够用了怎么办?就需要扩容集群了。根据新添加节点的种类, 我们需要用两种方法来将新节点添加到集群里面:
1>如果要添加的新节点是一个主节点, 那么我们需要创建一个空节点(empty node), 然后将某些哈希桶移动到这个空节点里面。
2>如果要添加的新节点是一个从节点, 那么我们需要将这个新节点设置为集群中某个节点的复制品(replica)。
接下来会对以上两种情况进行测试, 首先测试主节点的添加方法, 然后再测试从节点的添加方法。
无论添加的是那种节点, 第一步要做的总是添加一个空节点。
我们可以继续使用之前启动 192.168.116.130:7000 、 192.168.116.129:7001 等节点的方法, 创建一个端口号为 7006的新节点, 使用的配置文件也和之前一样, 只是记得要将配置中的端口号改为 7000 。
以下是启动端口号为 7006 的新节点的详细步骤:
在192.168.116.130这台服务器上安装一个新的redis实例,端口使用7006。
使用命令 ../../redis-server redis.conf 启动节点。
如果一切正常, 那么节点应该会正确地启动。
add-node 表示我们要让 redis-trib 将一个节点添加到集群里面, addnode 之后跟着的是新节点的 IP 地址和端口号, 再之后跟着的是集群中任意一个已存在节点的 IP 地址和端口号, 这里我们使用的是 192.168.116.131:7005 。
从上面的截图可以看到新节点现在已经连接上了集群, 成为集群的一份子, 并且可以对客户端的命令请求进行转向了, 但是和其他主节点相比, 新节点还有两点区别:
1>新节点没有包含任何数据, 因为它没有包含任何哈希桶。
2>尽管新节点没有包含任何哈希桶, 但它仍然是一个主节点, 所以在集群需要将某个从节点升级为新的主节点时, 这个新节点不会被选中。
redis-trib 程序, 将集群中的某些哈希桶移动到新节点里面, 新节点就会成为真正的主节点了。redis-trib 就会自动找到集群中的其他节点。redis-trib 会向你询问重新分片的源节点(source node), 也即是, 要从哪个节点中取出 4000 个哈希槽, 并将这些槽移动到目标节点上面。如果我们不打算从特定的节点上取出指定数量的哈希槽, 那么可以向 redis-trib 输入 all , 这样的话, 集群中的所有主节点都会成为源节点, redis-trib 将从各个源节点中各取出一部分哈希槽, 凑够 4000 个, 然后移动到目标节点上面.yes 并使用按下回车之后, redis-trib 就会正式开始执行重新分片操作, 将指定的哈希槽从源节点一个个地移动到目标节点上面


add-node 表示我们要让 redis-trib 将一个节点添加到集群里面, addnode 之后跟着的是新节点的 IP 地址和端口号, 再之后跟着的是集群中任意一个已存在节点的 IP 地址和端口号, 这里我们使用的是 192.168.116.131:7005 。



其中8d9502f97b416a566e0de1e33f665b7358fe807f 是主节点的ID。
验证7006和7007端口的redis实否为主从关系:

在新的从节点上面get 数据:

redis3.0集群搭建的更多相关文章
- Centos7:Redis3.0集群搭建
Redis集群中至少应该有三个节点.要保证集群的高可用,需要每个节点有一个备份机.Redis集群至少需要6台服务器. 搭建伪分布式.可以使用一台虚拟机运行6个redis实例. 修改redis的端口号7 ...
- Centos7 Redis3.0 集群搭建备忘
(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) 127.0.0.1:7000 127.0.0. ...
- Redis 3.0 集群搭建
Redis 3.0 集群搭建 开启两个虚拟机 分别在两个虚拟机上开启3个Redis实例 3主3从两个虚拟机里的实例互为主备 下面分别在两个虚拟机上安装,网络设置参照codis集群的前两个主机 分别关闭 ...
- redis3.0集群部署和测试
redis3.0集群部署和测试 环境介绍 两台Centos7的虚拟机模拟6个节点,A台3个master节点,B台3个slave节点A地址:172.16.81.140B地址:172.16.81.141r ...
- Redis 5.0 集群搭建
Redis 5.0 集群搭建 单机版的 Redis 搭建 https://www.jianshu.com/p/b68e68bbd725 /usr/local/目录 mkdir redis-cluste ...
- Ubuntu 12.04下Hadoop 2.2.0 集群搭建(原创)
现在大家可以跟我一起来实现Ubuntu 12.04下Hadoop 2.2.0 集群搭建,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机 ...
- Redis3.0集群方案分析
在Redis3.0集群出来之前,大家都对作者antirez寄予厚望,因为Redis从来没有让我们失望过.现在Redis3.0集群出来了,网上出了很多评论文章,都说他的功能多么强大,包括下面这张图是彻底 ...
- Dubbo入门到精通学习笔记(十八):使用Redis3.0集群实现Tomcat集群的Session共享
文章目录 1.单节点访问http://192.168.1.61:8082/pay-web-boss/: 2.增加多一个消费者节点:192.168.1.62,以同样的方式部署pay-web-boss工程 ...
- redis5.0.0集群搭建【实战经历】
redis集群搭建 作者:陈土锋 时间:2020年6月2日 目录 一.环境介绍... 1 1.机器准备... 1 2.关闭防护墙和selinux. 1 3.时间同步... 1 二.Redis Clus ...
随机推荐
- 11.10 noip模拟试题
1.第K小数 (number.cpp/c/pas) [问题描述] 有两个正整数数列,元素个数分别为N和M.从两个数列中分别任取一个数 相乘,这样一共可以得到N*M个数,询问这N*M个数中第K小数是多少 ...
- CSS画三角形引发的一些思考
今天刷知乎时看到了一个问题,有谁能详细讲一下css如何画出一个三角形?怎么想都想不懂? - 知乎.很巧,刚入前端坑的我前不久也遇到过这个问题,今天再来谈一谈这个问题则是因为知乎的一些答案引发了我的 ...
- 插件使用总结-jquery.pin.js
小伙伴们,俺昨天用了jquery.pin.js这个插件,发现了一些自以为是的使用问题.特此做个总结哈. 1.获取: 下载地址: http://www.bootcss.com/p/jquery.pin ...
- xml--小结④DTD的验证问题,不要用IE检验,IE不靠谱
可以自己写代码 <script type="text/javascript"> var xmldoc = new ActiveXObject("Microso ...
- ASP.NET MVC学习系列 WebAPI初探
转自http://www.cnblogs.com/babycool/p/3922738.html 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax( ...
- [XML] ResourceManager一个操作Resource的帮助类 (转载)
点击下载 ResourceManager.zip /// <summary> /// 类说明:Assistant /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更 ...
- Javascript基础学习(3)_对象和数组
一.对象是一种无序的属性集合,每个属性都有自己的名字和值. 1.创建对象 花括号内逗号分隔 var person = { "Name" : "LiCheng", ...
- oracle数据库的导出与导入
导出:exp devtest10/dev10@172.16.7.39:1521/WSRZ file=d:\WSRZ.dmp log=d:\WSRZ.log full=y 导入:imp testdb/t ...
- 隐藏TabBar的一些方法小结(适用与各种情况)
在项目中经常遇到隐藏tabBar,实力很多种方法,可以解决不同情况下问题 使用中涉及到view的层次关系,下面的使用方法 1.2不做说明:在使用3.4方法时注意要在tabBar所在的rootView中 ...
- OC细节 - 1.深拷贝与浅拷贝详解
概述 拷贝:复制一个与源对象内容相同的对象 实现拷贝,需要遵守以下两个协议 NSCopying NSMutableCopying 拷贝返回对象的种类 可变,mutableCopy消息返回的对象 不可变 ...