Redis集群的搭建

 

redis-cluster架构图

redis-cluster投票:容错

 

 

 

架构细节:
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.(
最少需要3个节点
(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集群的搭建

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

Redis集群至少需要6台服务器。

搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006

(1)创建一个redis-cluster目录作为集群目录

mkdir redis-cluster

(2)复制6个redis

[root@CentOS6 redis-cluster]# ll
总用量 4
drwxr-xr-x. 2 root root 4096 8月  23 05:13 redis01
[root@CentOS6 redis-cluster]# cp redis01 redis02 -r
[root@CentOS6 redis-cluster]# cp redis01 redis03 -r
[root@CentOS6 redis-cluster]# cp redis01 redis04 -r
[root@CentOS6 redis-cluster]# cp redis01 redis05 -r
[root@CentOS6 redis-cluster]# cp redis01 redis06 -r

(3)修改redis配置文件

解开注释才能配集群

端口号分别改为7001~7006

(4)编写启动脚本,启动所有redis

[root@CentOS6 redis-cluster]# vim startall.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 ..

创建好以后无法执行,因为权限不足,要授权

[root@CentOS6 redis-cluster]# chmod u+x startall.sh 

(5)执行

[root@CentOS6 redis-cluster]# ./startall.sh 
[root@CentOS6 redis-cluster]# ps aux|grep redis
root       2348  0.9  0.7 137444  7540 ?        Ssl  05:45   0:00 ./redis-server *:7001 [cluster]
root       2350  0.3  0.7 137444  7540 ?        Ssl  05:45   0:00 ./redis-server *:7002 [cluster]
root       2356  0.4  0.7 137444  7540 ?        Ssl  05:45   0:00 ./redis-server *:7003 [cluster]
root       2358  0.5  0.7 137444  7540 ?        Ssl  05:45   0:00 ./redis-server *:7004 [cluster]
root       2362  0.2  0.7 137444  7540 ?        Ssl  05:45   0:00 ./redis-server *:7005 [cluster]
root       2368  0.4  0.7 137444  7540 ?        Ssl  05:45   0:00 ./redis-server *:7006 [cluster]
root       2372  0.0  0.0 103332   852 pts/0    S+   05:45   0:00 grep redis

启动成功!

 

集群搭建环境

1.首先进入redis源代码src目录下

[root@CentOS6 src]# ll *.rb
-rwxrwxr-x. 1 root root 48141 4月   1 2015 redis-trib.rb


找到ruby脚本

复制到redis集群目录 redis-cluster

[root@CentOS6 src]# cd /usr/local/redis-cluster/
[root@CentOS6 redis-cluster]# ll
总用量 76
drwxr-xr-x. 2 root root  4096 8月  23 05:45 redis01
drwxr-xr-x. 2 root root  4096 8月  23 05:45 redis02
drwxr-xr-x. 2 root root  4096 8月  23 05:45 redis03
drwxr-xr-x. 2 root root  4096 8月  23 05:45 redis04
drwxr-xr-x. 2 root root  4096 8月  23 05:45 redis05
drwxr-xr-x. 2 root root  4096 8月  23 05:45 redis06
-rwxr-xr-x. 1 root root 48141 8月  23 05:49 redis-trib.rb
-rwxr--r--. 1 root root   259 8月  23 05:41 startall.sh

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

安装ruby

yum install ruby

yum install rubygems

3.安装ruby脚本运行使用的包

将redis-3.0.0.gem包上传到虚拟机

gem install redis-3.0.0.gem安装

[root@CentOS6 ~]# gem install redis-3.0.0.gem
Successfully installed redis-3.0.0
1 gem installed
Installing ri documentation for redis-3.0.0...
Installing RDoc documentation for redis-3.0.0...

安装后即可执行脚本

[root@CentOS6 redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.201:7001 192.168.25.201:7002 192.168.25.2
01:7003 192.168.25.201:7004 192.168.25.201:7005 192.168.25.201:7006

会询问以上分配是否容易 YES启动成功

 

集群的使用方法

 

注意,如果直接连接,redis01/redis-cli -p 7001 连接的不是集群 会报错 无法跳转

[root@CentOS6 redis-cluster]# redis01/redis-cli -p 7001
127.0.0.1:7001> set a 123
(error) MOVED 15495 192.168.25.201:7003

redis01/redis-cli -p 7001 -c  加-c后才会自动跳转存储

[root@CentOS6 redis-cluster]# redis01/redis-cli -p 7001 -c
127.0.0.1:7001> set a 123
-> Redirected to slot [15495] located at 192.168.25.201:7003
OK
192.168.25.201:7003> set c 123
-> Redirected to slot [7365] located at 192.168.25.201:7002
OK
192.168.25.201:7002> 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值