`
corejava2008
  • 浏览: 295901 次
  • 性别: 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-集群部署文档

    本文档将详细介绍如何在CentOS 6.5环境下搭建Redis 3.0集群,并通过具体的步骤指导用户完成整个部署过程。 #### 二、环境准备与要求 **系统环境**: CentOS 6.5 **硬件要求**: 至少3台主机或虚拟机(为了简化示例...

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

    Redis 3.0 集群环境安装手册 Redis 3.0 集群环境安装手册是指在 Linux 操作系统中安装和配置 Redis 3.0 集群的步骤指南。Redis 是一个开源、基于内存的数据结构存储系统,可以用作数据库、消息队列、缓存层等。 ...

    redis3.0widows集群+spring整合jedis

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

    redis -3.0.501 -windows x64

    虽然Redis 3.0.501不支持官方的集群模式,但可以通过社区开发的工具如Twemproxy或Redis Sentinel实现分布式部署。在更高版本的Redis中,原生集群功能已经加入,能提供更强大的扩展性和高可用性。 通过了解并熟练...

    redis64-3.0.501.rar

    在描述中提到,此Redis版本可以用于搭建nginx+tomcat集群。Nginx是一款高性能的HTTP和反向代理服务器,而Tomcat是一款开源的Java应用服务器,主要用于部署Java Web应用。将Redis与Nginx和Tomcat结合,可以构建高可用...

    redis3.0集群安装

    本章节主要介绍如何搭建一个基本的Redis 3.0集群环境,包括必要的软件安装以及集群的配置过程。 ##### 2.1 环境要求 - **操作系统**:Linux(推荐CentOS 7+) - **硬件资源**:至少三台物理或虚拟服务器 - **网络...

    Redis-x64-3.0.501

    Redis 还支持主从复制,可以轻松搭建高可用集群。主节点负责数据写入,从节点复制主节点的数据,当主节点故障时,可以从节点接管服务,保证服务不间断。此外,Redis 3.0 版本引入了 Cluster 模式,允许在多节点间...

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

    然而,"Redis-x64-3.0.504windows集群已经配置好的版本"提供了一个便捷的解决方案,特别适合那些希望快速搭建Redis集群而又不想花费太多时间在配置上的用户。 该压缩包包含的内容如下: 1. **Redis on Windows....

    redis集群工具redis-trib.rb

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

    windows Redis-x64-3.0.504.zip

    8. **集群搭建**:如果你需要扩展Redis的处理能力,可以搭建Redis集群。这涉及到多个Redis实例的部署和配置,以及集群的初始化和维护。 9. **监控与性能优化**:使用Redis内置的INFO命令获取服务器状态信息,监控...

    搭建Redis缓存高可用集群环境搭建

    #### 二、Redis高可用集群搭建步骤 接下来,我们将详细介绍如何搭建一个包含三个Master节点及其对应的Slave节点的Redis高可用集群。 ##### 2.1 Redis安装 首先需要在服务器上安装Redis。以下是详细的安装步骤: ...

    redis-3.0 Linux版本亲测可用.zip

    7. **集群搭建** - Redis 3.0引入了集群功能,支持多节点分布式部署。通过`redis-trib.rb`脚本可以创建和管理集群。 - 集群可以自动处理节点间的数据分片和故障转移,提升系统的可用性和扩展性。 8. **内存管理与...

    redis-3.0.0.zip

    总结来说,要搭建Redis-3.0.0集群,你需要安装Ruby环境和Redis客户端库,然后编写脚本初始化和配置集群。Redis-3.0.0版本引入了集群支持和一系列新功能,极大地增强了其在分布式环境下的应用能力。在使用过程中,...

    redis最新版5.0.2高可用集群搭建

    ### Redis 5.0.2 高可用集群搭建详解 #### 一、Redis集群方案比较 Redis 是一种高性能的键值存储系统,在多种场景中被广泛应用于缓存、消息队列以及实时分析等领域。随着应用规模的增长,单一的 Redis 实例往往...

    redis集群以及Spring-data-redis操作集群

    **集群搭建** Redis集群的搭建通常包括以下几个步骤: 1. **准备节点**:至少需要三个独立的Redis实例作为集群的初始节点。 2. **启动节点**:启动每个Redis实例,并配置集群模式。 3. **创建集群**:使用`redis-...

    redis-stable.tar.gz

    Redis,全称Remote Dictionary Server,是一款高性能的键值存储系统,常被用于数据库、缓存和消息中间件等...在实际应用中,我们需要熟练掌握Redis集群的搭建、管理和维护技巧,以便更好地利用这一强大的数据存储系统。

    Redis Cluster集群部署搭建详解附件

    以上是关于Redis Cluster集群部署的详细步骤和知识点,通过学习和实践,您可以掌握如何搭建和管理自己的Redis分布式环境。请确保在实际环境中根据具体需求调整配置,并做好数据备份,以防万一。

    redis-5.0.3.zip

    6. 集群模式:从Redis 3.0开始引入了Cluster集群,可以自动分片,处理海量数据。 在Redis-5.0.3版本中,可能包含以下文件和目录: - `redis-server.exe`: Redis服务器的可执行文件,用于启动Redis服务。 - `redis-...

    完整搭建redis-cluster

    - Redis 3.0 或以上版本,因为 Redis Cluster 在这个版本中被引入。 - Ruby,因为 `redis-trib.rb` 是用于创建和管理 Redis Cluster 的工具。 - 至少三台服务器或虚拟机,每个节点运行一个 Redis 实例。 ### 2. ...

Global site tag (gtag.js) - Google Analytics