`
corejava2008
  • 浏览: 292369 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Redis3.0-集群环境搭建

阅读更多

 

 Redis3.0已经发布一段时间了,趁着周末抓紧研究下,重点关注下相关的新功能及稳定性。性能及压力测试情况后续慢慢更新。目前公司使用的是2.8.7版本,非常的稳定。

 

Redis Cluster: 

支持多节点数据集自动分片

提供一定程度的分区可用性,部分节点挂掉或者无法连接其他节点后,服务可以正常运行

集群中的每个Redis节点需要2个TCP连接端口,如6379端口用于Client连接,16379端口用于集群数据通信

集群采用Hash Slot方案,而不是一致性哈希,共16384个Hash slot。如果有3台机器,那么NodeA在0-5500,NodeB 在5501-11000,NodeC在11001-16384.这种设计下,添加,删除新Node比较方便。

例如添加新节点D,只需移动A,B,C上的slot到节点D即可。

如需移除节点A,将A上的slot迁移到B和C即可。

由于HashSlot在节点间的迁移无需停止操作,集群新增或者删除节点,改变集群内部节点占用的Slot比例等都可在线完成。

 

Redis Cluster Master-Slave Model

为保证某些节点挂掉或无法连接其他节点的情况下可正常提供服务,Redis Cluster提供了主从模式的数据副本机制,每个Hash Slot都可以设置1-N个从节点。

由A,B,C三节点组成的集群中,可以设置A1,B1,C1分别为A,B,C的从节点,如B挂掉后,原B1从节点被提升为主节点,从而保证集群服务正常。

 

集群在一致性方面的问题,可能存在写数据丢失情况发生,如

1.Client写入数据到NodeA

2.NodeA答复Client写入成功

3.NodeA在写入从节点A1时蹦溃掉了

4.A1被提升为Master节点后,但是数据丢失了!!!

为解决这个问题,Redis集群提供了同步写支持。

 

集群配置参数

所有的集群配置参数都存在于redis.conf中,主要几个如下:

Cluster-enabled:是否开启集群模式

Cluster-config-file:集群配置变更后会自动写入改文件

Cluster-node-timeout:节点超时时间,超过该时间无法连接主要Master节点后,会停止接受查询服务

Cluster-slave-validity-factor:控制从节点FailOver相关的设置

设为0,从节点会一直尝试启动FailOver.

设为正数,失联大于一定时间(factor*节点TimeOut),不再进行FailOver

Cluster-migration-barrier:最小从节点连接数

Cluster-require-full-coverage:默认为Yes,丢失一定比例Key后(可能Node无法连接或者挂掉),集群停止接受写操作

设置为No,集群丢失Key的情况下仍提供查询服务

 

集群环境搭建方式一:

    集群环境至少需要3个节点。推荐使用6个节点配置,即3个主节点,3个从节点。

    首先启动6个独立Redis节点,然后进行集群关联配置。

    最小化的Redis配置文件:

 

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

 

   

   1.创建6个空的文件夹 

 

mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005

    2.分别创建配置文件并启动6个单点服务

 

    配置文件Redis.conf参考上文配置

 

cd 7000
../redis-server ./redis.conf

    ....

 

 

cd 7005
../redis-server ./redis.conf

   3.启动后会看到以下日志信息,提示Node.conf不存在,并且每个节点创建了一个NodeID

 

 

[82462] 26 Nov 11:56:55.329 * No cluster configuration found, I'm 97a3a64667477371c4479320d683e4c8db5858b1

   4.组建集群配置

 

    源码src文件下提供了一个叫做redis-trib.rb的脚本文件,是一个Ruby脚本用于创建集群,检测及重新分片等 

 

./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

   create表示创建一个新的集群

 

   replicas 1表示指定集群中的副本集为1  

   出现以下消息,表示只有一个主节点完成了HashSlot的初始化并可以提供服务

 

[OK] All 16384 slots covered

  

集群环境搭建方式二:

    更简单的集群搭建方式,使用Create-Cluster脚本! 

    脚本位于utils/create-cluster目录西,执行以下命令

1.create-cluster start
2.create-cluster create

   启动后默认第一个节点端口为30001,完成后执行以下命令  

1.create-cluster stop.

 

 

 验证集群是否搭建成功:

$ redis-cli -c -p 7000
redis 127.0.0.1:7000> set foo bar
-> Redirected to slot [12182] located at 127.0.0.1:7002
OK
redis 127.0.0.1:7002> set hello world
-> Redirected to slot [866] located at 127.0.0.1:7000
OK
redis 127.0.0.1:7000> get foo
-> Redirected to slot [12182] located at 127.0.0.1:7002
"bar"
redis 127.0.0.1:7000> get hello
-> Redirected to slot [866] located at 127.0.0.1:7000
"world"

 

OK,环境搭建完成,今天先更新到这里,后续继续....

 

 

 

分享到:
评论
1 楼 harim 2016-01-19  
不错,我试了一下,果然是负载 均衡+失效转移机制。
不过关了2台redis后,cluster就关闭了。

相关推荐

    redis3.0.集群环境安装手册

    redis3.0集群正式版出来啦,redis3.0.集群环境安装手册

    redis3.0widows集群+spring整合jedis

    redis3.0 widows集群 spring整合jedis redis搭建window集群代码和文档rubygems-2.5.1和rubyinstaller-2.2.3-x64软件下载

    Redis-x64-3.0.504windows集群已经配置好的版本

    这个是windows已经配置好的版本,讲道理你下载过去只需要执行几条命令,redis集群就能搭建起来,懒癌的福音。 注意:基于windows,支持windows离线安装

    redis64-3.0.501.rar

    redis下载,可使用搭建nginx+tomcat集群.也可以使用Java项目进行缓存使用。

    redis集群工具redis-trib.rb

    搭建redis集群的工具,先试试下面的方法https://raw.githubusercontent.com/MSOpenTech/redis/3.0/src/redis-trib.rb 打开该链接如果没有下载,而是打开一个页面,那么将该页面保存为redis-trib.rb 建议保存到Redis...

    详解CentOS 6.5搭建Redis3.2.8单机分布式集群

    最近在服务器上搭建了一套Redis3.0伪分布式集群,发现一个问题,就是Shell脚本编写能力和运维工具的重要性亟待提高。 集群环境安装 1.安装Redis $ cd /usr/local #安装目录 $ wget ...

    redis集群搭建

    在redis3.0以前,提供Sentinel工具来监控各Master的状态,如果Master异常,则会做主从切换,将slave作为master, 将master作为slave。其配置也是稍微的复杂,并且各方面表现一般。...redis3.0如何搭建集群。

    Redis 3.x 分布式集群搭建.pdf

    redis从3.0开始支持集群功能。redis集群采用无中心节点方式实现,无需proxy代理,客户端直接与redis集群的每个节点连接,根据同样的hash算法计算出key对应的slot,然后直接在slot对应的redisj节点上执行命令。在...

    Redis集群搭建及维护文档.docx

    redis cluster 是redis官方提供的分布式解决方案,在3.0版本后推出的,有效地解决了redis分布式的需求,当一个redis节点挂了可以快速的切换到另一个节点。当遇到单机内存、并发等瓶颈时,可以采用分布式方案要解决...

    redis集群(网上资源很多,不需要下载此资源!!)

    redis单机+ruby安装包+Redis-x64-3.0.500+3主3从集群+redis-trib.rb+redis-3.0.5.gem+windows集群搭建文档

    Redis集群策略及集群实例(集群节点新增、删除、重新分配slot实战)

    redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis3.0.0版本; redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点; redis集群是没有统一的入口的,客户端(client...

    Redis Cluster的图文讲解

    1.1 Redis-Cluster简介 1.1.1 什么是Redis-Cluster ...Redis集群搭建的方式有多种,例如使用客户端分片、Twemproxy、Codis等,但从redis 3.0之后版本支持redis-cluster集群,它是Redis官方提出的解决方案,Redi

    redis集群

    redis单机+3主3从redis集群+ruby安装包+Redis-x64-3.0.500.zip+redis-3.0.5.gem+redis-trib.rb+windows集群搭建(网上资源很多,不需要下载此资源!)

    Redis Cluster部署文档.docx

    redis3.0版本cluster安装部署配置和管理,样例演示, 集群操作常用命令 CLUSTER INFO 打印集群的信息 CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。

    Redis3.0.2Cluster:杰迪斯·杰迪斯·雷迪斯

    #Redis 3.0 集群搭建 开启两个虚拟机 分别在两个虚拟机上开启3个Redis实例 3主3从两个虚拟机里的实例互为主备 下面分别在两个虚拟机上安装,网络设置参照codis集群的前两个主机 分别关闭防火墙 1安装ruby rubygems ...

    Windows环境下Redis Cluster环境搭建(图文)

    搭建 Redis集群,三个主节点,三个从节点,多主节点为了分布集群,从节点是为了高可用性。 1. 下载redis 地址:https://github.com/MicrosoftArchive/redis/releases 此次案例中使用的版本为3.0.503 Source code...

    Redis集群的相关详解

    要求使用的都是redis3.0以上的版本,因为3.0以上增加了redis集群的功能。 1.redis介绍 1.1什么是redis Redis是用C语言开发的一个开源的高性能键值对(key-value)的非关系型数据库。通过多种键值数据类型来适应不同...

    Eclipse开发分布式商城系统+完整视频代码及文档

    ├─补充1:拔高课程(Redis3.0持久化、集群、MySQL5.6优化、Tomcat7优化) │ │ 打开必读.txt │ │ │ ├─课前资料 │ │ ├─MySQL5.6优化 │ │ │ MySql5.6性能优化.docx │ │ │ │ │ ├─Redis集群 │ ...

    关于主机连通虚拟机(Ubuntu)部署的Redis和Rabbitmq

    关于redis的部署,你可以在网上找一篇搭建redis部署的博客好来参考,一般上不是搭建集群的redis都很好搭的。这时候我们重点在于修改redis.conf的文件。 修改文件,将bind 127.0.0.1给注释掉,然后绑定你的虚拟机的...

Global site tag (gtag.js) - Google Analytics