Redis-Cluster集群搭建

   本教程是利用redis5.0版本进行搭建的集群方式,由于redis发布了5.0以后推出了不少新的特性,其中一点就是放弃Ruby的集群方式,改用的C语言编写的redis-cli,使redis集群构建方式复杂度大大下降
Redis官网搭建集群教程连接:https://redis.io/topics/cluster-tutorial
redis-cluster架构图(三主三从6个节点的配置)

image


redis-cluster架构总结:

  1)、无中心化就是所谓的去中心化(客户端与redis节点直连,不须要中间proxy层.客户端不须要链接集群全部节点,链接集群中任何一个可用节点便可)

  2)、在线自动扩容缩容

  3)、自动failover(节点的fail是经过集群中超过半数的节点检测失效时才生效.经过投票机制)

  4)、单层框架相应时间短

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

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

node

  注意:因为Redis的容错投票机制是集群中过半数的节点认为某个节点检测失效时才生效,因此搭建最小集群模式至少须要三个节点,可是为了集群的高可用,就须要为每个节点增长一个备份机,因此就须要六台服务器。
搭建redis集群

一、单机的redis搭建就不说了,公众号中有一篇从零开始搭建redis的文章,教你从零开始安装虚拟机到redis安装完成

  公众号:

image

二、redis集群配置

  1)、在redis的文件夹下面建立一个redis-cluster文件夹

image
程序员


  2)、将redis.conf文件拷贝到当前文件夹下

image
redis


  3)、修改刚刚拷贝的redis.conf配置文件

image

  protected-mode no 禁止保护模式

  port端口号为6379
算法


image

  将ip改为 bind 0.0.0.0 任何ip都能访问到bind的IP(也能够注释掉,这样任何桌面客户端均可以链接了)(把防火墙关闭了)
ruby


image

  指定文件存放路径 ( .rdb .aof nodes-xxxx.conf 这样的文件都会在此路径下)
服务器


image

  启动集群模式
微信


image

  cluster-config-file 集群节点配置文件
架构


image

  daemonize yes 后台启动
app


image

  cluster-node-timeout 15000 指定集群节点超时时间
框架


image

  appendonly yes 指定持久化方式


  注意:我是在我本机建立了6个虚拟机,每一台虚拟机上都配置了一个redis,因此配置集群的时候全部的redis的端口均可以是6379,每一台虚拟机都须要和以上步骤的配置文件过程保持一致

image

  写好一份copy 6份以后,每台都搞一份就能够了


image

  分别启动每一台redis,启动成功


image

  建立集群,此种方式是redis5.0版本的,以前3.0版本的不是这样的,网上有不少例子了,官网也有说明我就不介绍了

image


  注意:报错了? [ERR] Node 172.16.178.2:6379 NOAUTH Authentication required.

  解析:看错误是没有权限,有多是没有设置链接密码,配置一下试试


image

  配置链接master的密码


image

  配置链接我须要的密码


image

  此时建立集群成功,注意输入命令最后面加上密码 -a redis ,图中能够看出3个主机Master,3个从机Slave ,分配的槽点区间为[0 - 5460、5461 - 1092二、10923 - 16383]


image


image

  链接其中一个节点查看集群信息,cluster_state:ok 集群状态:OK,一共16384个槽点(slots),cluster_slots_ok:16384 全部节点都是好的,6个节点等等


image

  集群节点信息, 三个主机节点,三个从机节点


image

  查看redis进程


image

  干掉一个集群中的一个主节点,查看集群信息,cluster:fail,集群状态fail,一共16384个槽点(slots),cluster_slots_ok:10923


image

  集群节点信息,172.16.178.2节点的master 宕机了,fail, [0 - 5460] 个插槽失去了链接


image

  将刚刚干掉的redis启动起来


image

  再一次查看集群信息,cluster_state:ok 集群状态:OK,一共16384个槽点(slots),cluster_slots_ok:16384 全部节点都是好的,6个节点等等


image
  再一次查看集群节点信息,此时172.16.178.6再也不是slave了变成了master,并且172.16.178.2也不是master了变成了slave,且以前失去链接的 [0 - 5460] 槽恢复了链接

帮忙关注一下 微信公众号一块儿学习 :chengxuyuan95(不同的程序员)image

相关文章
相关标签/搜索