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 ...
随机推荐
- MyTask4
最近稍微做了点修改,把几处bug修复了下,另外新增了授权码功能和数据缓冲功能 先看看效果图 1. 如果要把软件做的高大上一些,你可以加一个授权验证,授权码以字符串形式存放在程序里面,当然你也可以另外开 ...
- cas系列(一)--cas单点登录基本原理
(这段时间打算做单点登录,因此研究了一些cas资料并作为一个系列记录下来,一来可能会帮助一些人,二来对我自己所学知识也是一个巩固.) 一.为什么要实现单点登录 随着信息化不断发展,企业的信息化过程是一 ...
- iOS截屏代码
转载自:http://m.open-open.com/m/code/view/1420469506375 1.普通界面 /** *截图功能 */ -(void)screenShot{ UIGraphi ...
- 神经网络中的XOR问题
XOR问题 解决办法: 网络如图 其中激活函数 ReLU,令 即可解决XOR问题.
- 3D math primer for graphics and game development
三角网格(Triangle Mesh) 最简单的情形,多边形网格不过是一个多边形列表:三角网格就是全部由三角形组成的多边形网格.多边形和三角网格在图形学和建模中广泛使用,用来模拟复杂物体的表面,如建筑 ...
- JavaScript各种遍历方式详解
为了方便例子讲解,现有数组和json对象如下 var demoArr = ['Javascript', 'Gulp', 'CSS3', 'Grunt', 'jQuery', 'angular']; v ...
- failure injection
(1)malloc穷尽的情况: 假设下面的代码是测试代码,里面含有被测函数fmalloc,其中含有一个malloc语句,在一般情况下,是很难走到malloc失败的分支的,因为很难模拟系统内存耗尽的情况 ...
- DataTable 无法转换的错误
目前基本上检索都已经离不开Linq了.所以最近在Linq的过程中出现了一些意外情况,特此记录下来. 先描述一下场景: 有一个查询的要求是这样的,检索出Status > 1 的数据.因为要根据其他 ...
- PHPStorm——配置修改
字体修改: FiraCode字体:https://github.com/tonsky/FiraCode 1.双击安装字体 2. 关闭错别字检测
- css3 3D盒子效果
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...