redis集群环境搭建-Linux

大家看这个之前可以先看我的单机版安装,因为我是在那个条件下继续弄这个集群的,

首先看一下集群架构图:(网上应该也有)

redis集群环境搭建-Linux

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

疑问:集群,那么每个节点上的数据都是不一样的那么通过什么来区分呢,slot(槽的概念)。

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

 redis-cluster投票:容错:没有备用库的情况

redis集群环境搭建-Linux

(1)如何判断某个节点是否有效?

判断集群中某个节点是否可用是所有的节点参与投票的过程,如果是半数以上的主节点向某一个节点发送ping命令没有收到回复的话,就会认为当前节点已经挂掉。


(2)什么时候整个集群不可用(cluster_state:fail),也就是整个集群状态为fail ? 

    如果集群任意主节点挂掉,且当前主节点没有备用节点.集群进入fail状态,也可以理解成集群的哈希槽映射[0-16383]不完成时进入fail状态。

  如果集群超过半数以上主节点挂掉,无论是否有备用节点。集群进入fail状态。

  ps:当集群不可用时,所有对集群的操作做都不可用,客户端会收到((error) CLUSTERDOWN The cluster is down)错误。

集群的搭建:(三个节点),每个节点有一个主节点一个备用节点=》一共六个节点

我这里就使用六个redis实例来做:

1):先决条件:ruby脚本

redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境:
安装ruby命令:
yum install ruby

yum install rubygems

下面看我的截图安装目录:这个/usr/local/redis/bin目录下我之前安装着一个redis单机版,所以我们把脚本环境都安装到这个目录下面

redis集群环境搭建-Linux

上面两个命令都运行成功之后截图如下:

redis集群环境搭建-Linux

接下来,安装redis集群管理工具依赖包。

脚本下载地址:https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem 

使用sftp协议,拷贝redis-3.x.x.gem至/usr/local下如下图:

redis集群环境搭建-Linux

redis集群环境搭建-Linux

以上我们可以得知上传成功,

  执行:gem install /usr/local/redis-3.x.x.gem进行安装,如下图:

redis集群环境搭建-Linux

集群管理工具ruby脚本的位置;

redis集群环境搭建-Linux

我们把它复制到到/usr/local目录下:cp ./redis-trib.rb /usr/local

redis集群环境搭建-Linux

实例复制

redis集群环境搭建-Linux

删除不相关文件并修改配置,以第一个实例为列:

redis集群环境搭建-Linux

redis集群环境搭建-Linux

vi redis.conf,修改内容

1)端口号:7001-7006

redis集群环境搭建-Linux

2)删除注释;如下图 删除# 注释

redis集群环境搭建-Linux

:wq保存并退出编辑,下面几个实例都是一样的操作,端口不同而已。

3)拷贝集群管理脚本:如下图,用起来更方便。

redis集群环境搭建-Linux

4)启动实例:创建脚本启动

命令:vi startall.sh

然后i进入编辑模式

内容如下:

redis集群环境搭建-Linux

然后:wq保存并退出

redis集群环境搭建-Linux

指定执行权限 chmod +x statrall.sh

启动./startall.sh 如下图:

redis集群环境搭建-Linux

5):创建集群

命令:注意你自己的ip地址

./redis-trib.rb create --replicas 1192.168.1.254:7001 192.168.1.254:7002 192.168.1.254:7003 192.168.1.254:7004 192.168.1.254:7005 192.168.1.254:7006

redis集群环境搭建-Linux

redis集群环境搭建-Linux

6):集群测试

redis01/redis-cli -h 192.168.1.254 -p 7002 -c

解释一下:-h 任何一个redis下都有一个客户端我们可以任意进一个  

                -p 选择一个ip地址

                 -c 表示我们需要链接集群

redis集群环境搭建-Linux

上面可以看到链接的7002数据到了7003 所以证明成功了。

关闭指定redis服务器命令;

redis集群环境搭建-Linux