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 ...
随机推荐
- C#实现动态网站伪静态,使seo更友好
本教程将使用Visual Studio 2013手把手教你实现webform动态页面的伪静态.本教程配套的C#源码工程可通过我的github下载.地址:https://github.com/shell ...
- js 连续赋值
无意中网上发现的这个问题,预想的结果和真实的结果大相径庭. var a={n:1} var b=a; a.x=a={n:2} console.log(a.x); console.log(b.x); u ...
- [功能帮助类] 最新的Functions 类 (转载)
代码 using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptogr ...
- mysql - 查看Port
show global variables like 'port';
- Java Map集合按照key和value排序之法
一.理论基点 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black-Tre ...
- [学习笔记]设计模式之Chain of Responsibility
为方便读者,本文已添加至索引: 设计模式 学习笔记索引 写在前面 最近时间比较紧,所以发文的速度相对较慢了.但是看到园子里有很多朋友对设计模式感兴趣,我感觉很高兴,能够和大家一起学习这些知识. 之前的 ...
- Fedora 21 安装桌面环境
Mate桌面环境:$ sudo yum install @mate-desktop KDE桌面环境:$ sudo yum install @kde-desktop XFCE桌面环境:$ sudo yu ...
- 算法专题训练 搜索a-T3 Ni骑士(ni)
搞了半天八数码弄不出来就只好来打题解 这道题是在搜索a碰到的(链接: http://pan.baidu.com/s/1jG9rQsQ ) 感觉题目最大亮点就是这英文简写"ni", ...
- input 表单点击消失离开出现
效果1: <input type="text" name="textfield" value="这里是提示内容" onclick=&q ...
- 学渣也要搞 laravel(1)—— 安装篇
看到laravel(我叫它:拉瓦)那么热门,我也决定学上一学. Laravel 5.2 在 5.1 基础上继续改进和优化,添加了许多新的功能特性:多认证驱动支持.隐式模型绑定.简化Eloquent 全 ...