redis集群搭建

Redis集群

基本介绍

Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施installation

Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 Redis 节点之间移动数据, 并且在高负载的情况下, 这些命令将降低Redis集群的性能, 并导致不可预测的行为。

Redis 集群通过分区partition来提供一定程度的可用性availability: 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。

Redis集群提供了以下两个好处:

  • 将数据自动切分split到多个节点的能力。
  • 当集群中的一部分节点失效或者无法进行通讯时, 仍然可以继续处理命令请求的能力。

集群原理

redis-cluster架构图

redis-cluster架构图

  1. 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。

  2. 节点的fail是通过集群中超过半数的节点检测失效时才生效。

  3. 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

  4. redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

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

redis-cluster投票:容错

redis-cluster投票:容错

  1. 投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超时(cluster-node-timeout),认为当前master节点挂掉.

  2. 什么时候整个集群不可用(cluster_state:fail)?

    • 如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态. 
      • redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.
    • 如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态

集群搭建

             Redis 集群中至少需要有三个节点。要保证集群的高可用性,需要每个节点有一个备份节点

             所以redis集群至至少需要6台服务器,在这里就在一台机器上搭建6个redis 修改端口为7001-7006

在local目录下面创建 redis-cluster 目录:mkdir redis-cluster

复制 redis/bin/ 到 redis-cluster/redis01: cp -r redis/bin/ redis-cluster/redis01

                                                               cd redis-cluster/redis01 查看是否存在dump.rdb(数据库快照文件)

 

dump.rdb存在的话删除此文件: rm -rf dump.rdb

编辑 redis.conf: vim redis.conf 修改端口为7001

放开cluster-enabled yes的注释:打开集群模式

复制redis01 到其他5份: cp -r redis01/ redis02

修改各自对应的端口:vim redis02/redis.conf 

重复上面操作5次 修改每个redis.conf的端口

启动每个服务太复杂了,创建启动所有服务的脚本:vim start-all.sh

下面贴出命令,方便复制:

cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..

查看start-all.sh 权限不足 

添加权限:chmod +x start-all.sh

启动服务:./start-all.sh

到这里服务启动完成

Ruby安装:

使用ruby脚本搭建集群,需要ruby的运行环境

查看是否安装ruby:

安装ruby:

yum install ruby


yum install rubygems

上传ruby需要的脚步软件到服务器

安装脚本:gem install redis-3.0.0.gem

进入redis-3.0.0 src目录:

复制*.rb到redis-cluster目录:cp *.rb /usr/local/redis-cluster/

redis-cluster应该多了个文件:

使用ruby创建集群:

replicas 后面的数字表示每个redis节点有几个备份节点  我们这里就一份 所以为1

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

上图显示了6个节点 , 同时 7004 为7001的从节点,7005为7002从节点 ,7006为7003的从节点 以及7001 7002 7003各自的槽位

下面我们输入yes继续

到这里集群就搭建完毕了

连接测试:redis01/redis-cli -p 7001 -c 

注意上面的 -c 连接单机版是没有的 集群必须有

使用cluster info查看集群信息: cluster info

 cluster nodes查看节点信息: cluster nodes

quit退出连接:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值