【Redis】集群搭建

1. redis-cluster架构认识

 1.1 redis集群架构图

  redis集群不像其它集群,它没有一个同意的入口,每个redos客户端都可以连接到集群中任意节点(可以用redis0的客户端连接到redis1的服务)

 1.2 redis集群通信原理

  redis集群中两两节点之间直接通信,它是通过一种叫做投票的机制进行通信的,作用:发现集群中出错的节点

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

  Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点(因此数据被平均的分配到各个节点。无论redis集群中有多少节点,集群总共就有16384个槽,所以redis集群最多有16384个节点)

 1.3数据存储到redis集群的过程

 假设redis集群有3个结点,
 1) 初始态:

 2) 存放第一个值Hello,经crc16计算后得到500,500/16384=500,第500个槽在server1中,所以被放进了server1

 3) 存放第二个值Hello1,经crc16计算后得到15000,15000/16384=15000,第15000个槽在server3中,所以被放进了server3

  值计划是被平均的分配到每个节点


2. redis集群搭建过程

  Redis集群中至少应该有三个节点(如果一个节点坏了,两外两个可通过投票机制(2 > 2/3),判定那个节点已坏)。要保证集群的高可用,需要每个节点有一个备份机。Redis集群至少需要6台服务器。搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006

 2.1环境准备:

  要想进行redis集群搭建,需要使用redis/src/redis-trib.rb 脚本进行搭建,(rb为ruby,是一种脚本语言),要运行这种脚本语言,需要ruby的运行环境,安装ruby:

[root@localhost ~]yum install ruby
[root@localhost ~]yum install rubygems

 2.2 安装ruby脚本运行使用的包

  ruby运行需要依赖第三方包,即redis-3.0.0.gem,将它包放到linux中,进行安装:[root@localhost ~]# gem install redis-3.0.0.gem,如果安装成功会显示successfully安装成功提示

 2.3 搭建步骤

  需要6台redis服务器。这搭建伪分布式,需要6个redis实例,需要运行在不同的端口7001-7006
  1)第一步:创建6个redis实例,每个实例运行在不同的端口。需要修改redis.conf配置文件,即需要修改端口号,还需要把cluster-enabled yes前的注释去掉(直接将redis下的bin文件进行赋值到不能的文件加中,即可创建了6个redis实例。注意赋值时不能有存数据文件,如appendonly.aof或dump.rdb文件,如果有,则删除)
  2) 第二步:启动每个redis实例(因为我们有6个redis实例,一个一个的启动不太方便,所以我们可以写一个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 ..

  3)第三步:此步真正的运行ruby脚本,进行集群的搭建了,运行

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

  (因为replicas 1表示一个节点有一个备份,所以它会根据节点数量分配主节点和从节点)回车运行,会出现如下界面,在连接每个节点成功后,它会自动分配,然后询问这样分配你是否同意

  输入yes即可完成集群的搭建,出现如下图:

  到此redis集群已成功搭建啦!!!

  4)第四步:创建一个关闭集群的脚本:[root@localhost redis-cluster]# vim shutdow-all.sh,内容如下:

redis01/redis-cli -p 7001 shutdown
redis01/redis-cli -p 7002 shutdown
redis01/redis-cli -p 7003 shutdown
redis01/redis-cli -p 7004 shutdown
redis01/redis-cli -p 7005 shutdown
redis01/redis-cli -p 7006 shutdown

  4)第五步:给刚建的shutdow-all.sh脚本文件提权,否则无法执行:[root@localhost redis-cluster]# chmod u+x shutdow-all.sh
  4)第六步: 测试:(同下面的使用方法)


3. 集群的使用方法

  (前提,每个redis节点实例都开启了服务)
  1)连接到客户端:[root@localhost redis-cluster]# redis01/redis-cli -p 7005 -c

  2)添加一个数据:set str abc,会显示数据分配到了哪个节点

  3)192.168.20.216:7001> keys * 可查看当前所在节点存入的键


【 总结】

  其实过程也就两步:创建redis节点,并开启每个redis节点;运行ruby脚本进行集群的搭建连接

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值