Redis-03-Redis集群的搭建

2017-12-29 19:42:31来源:CSDN作者:eagleuniversityeye人点击

分享

一.Redis集群理论基础

redis-cluster架构

1)redis-cluster架构的结构:

Redis集群使用redis-cluster架构,redis-cluster架构的原理是,部署多个Redis数据库,每个Redis数据库都是一个架构中的结点,每个结点和其他所有结点相连,即若使用n个Redis数据库搭建一个redis-cluster架构的Redis集群,那么这个集群中的每个数据库都要和连接集群中的其余n-1个数据库连接。
redis-cluster架构的Redis集群所需的结点(Redis数据库)的最小数量为3个。
redis-cluster架构示意图如下所示:

这里写图片描述

Redis集群中各个结点相互连接,应用客户端只需要与集群中的一个数据库连接即可使用整个集群

2)redis-cluster架构的查错机制

redis-cluster架构通过投票机制进行错误排查,投票机制:集群中的所有结点相互连接,每个结点都会检测与其他结点的连接情况,如果连接出现问题,所有的结点一起产生一个错误报告,和其他结点都不能连接的结点就是出错结点,确认出错结点后,集群会停止运行

这里写图片描述

3)redis-cluster架构其他细节:

  1. 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽
  2. 节点的fail是通过集群中超过半数的节点检测失效时才生效
  3. 客户端与redis节点直连,不需要中间proxy层,客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
  4. redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster
    负责维护node<->slot<->value

3)redis-cluster架构给结点分配存储数据的方式:

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据结点数量大致均等的将哈希槽映射到不同的节点

如下图,由3个结点组成的Redis集群,结点1存储哈希值在0-5000内的数据,结点2存储哈希值在5001-10000内的数据,结点3存储哈希值在10001-16383内的数据,存储key为Hello1的数据时,通过crc16算法算出Hello1的哈希值为1500,则这条数据存储在结点1上,同理Hello3哈希值为7500,存储在结点2上…

这里写图片描述

二.Redis集群的搭建

Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。因此,一个Redis集群至少需要6台服务器。由于没有足够的服务器,所以这里我选择搭建一个伪分布式集群,即使用一台虚拟机运行6个Redis实例,通过修改Redis的端口号为7001-7006区分不同的结点。

2.1 准备Redis集群需要的环境

搭建Redis集群需要用到Rudy语言编写的脚本,所以要先准备Rudy的运行环境

1)准备Rudy的运行环境

安装ruby,使用yum,执行以下命令:
yum install ruby
yum install rubygems

2)安装Rudy脚本运行需要使用的包redis-3.0.0.gem

redis-3.0.0.gem库文件可以从这里下载:Redis集群搭建
执行命令:
gem install redis-3.0.0.gem

2.2 Redis集群搭建

1)准备Redis应用

将Redis应用做部分修改后复制6份到redis-cluster目录下
Redis应用的安装参考博客: Redis-01-NoSQL简介及Redis数据库安装

这里写图片描述

如上图所示,bin目录即一个Redis应用目录,需要做部分修改使Redis应用符合搭建集群的条件:
1,删除dump.rdb文件
2,修改redis.conf文件,将端口后修改为7001-7006,并将文件中cluster-enabled yes前的注释去掉

这里写图片描述

修改端口

这里写图片描述

去掉注释“#”

接着执行命令
cp redis/bin redis-cluster/redis_01
cp redis/bin redis-cluster/redis_02
cp redis/bin redis-cluster/redis_03
cp redis/bin redis-cluster/redis_04
cp redis/bin redis-cluster/redis_05
cp redis/bin redis-cluster/redis_06

2)准备Redis集群所需要的配置文件

redis源码包src目录下有一个redis-trib.rb文件,将其复制到redis-cluster目录下,执行命令:
cd redis-3.0.0
cp src/redis-trib.rb ../redis-cluster

3)使用Ruby脚本搭建Redis集群

运行命令执行Ruby脚本搭建集群,我的虚拟机IP地址为192.168.25.153,搭建时按照自己虚拟机的IP进行更改(查看主机IP地址的Linux命令:ifconfig

./redis-trib.rb create –replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006

4)启动Redis集群

启动集群需要逐个启动每个Redis数据库,连续执行命令

cd redis_01./redis-server redis.confcd ..cd redis_02./redis-server redis.confcd ..cd redis_03./redis-server redis.confcd ..cd redis_04./redis-server redis.confcd ..cd redis_05./redis-server redis.confcd ..cd redis_06./redis-server redis.confcd ..

三.Redis集群的使用

使用redis-cli连接Redis数据库,连接Redis集群时,只用连接集群中的一个数据库即可使用整个集群

连接一个Redis数据库:
执行命令: ./redis-cli -p 6379
连接一个Redis数据库集群:
执行命令: ./redis-cli -p 7001 -c
与连接一个数据库的不同点是在命令后部加了一个-c指令,-c指令代表连接的是Redis集群

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台