Redis集群搭建

1 Redis集群的搭建

1.1 redis-cluster架构图


架构细节:

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

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.通过投票机制

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

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

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

 

https://redis.io/topics/cluster-spec

 

1.2 Redis集群的搭建   

master --slave

至少3个节点,为了集群的高可用,为每一个节点增加一个备份机。(总共6台服务器)。

 

搭建伪分布式集群方案:在一台机器里面运行6个redis实例。端口需要不同(7001-7006)

 

 

 

1.2.1 集群搭建环境

 

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

安装ruby:

 

yum -y install ruby

yum -y install rubygems

 

2、上传redis-3.0.0.gemlinux中



3、安装ruby运行时所使用的包

[root@localhost ~]# gem install redis-3.0.0.gem

Successfully installed redis-3.0.0

1 gem installed

Installing ri documentation forredis-3.0.0...

Installing RDoc documentation forredis-3.0.0...

[root@localhost ~]#

 

查看redis-trib.rb 脚本所在的目录:

 

[root@localhost ~]# cd redis-3.0.0/src

[root@localhost src]# ll *.rb

-rwxrwxr-x. 1 root root 48141 Apr  1 2015  redis-trib.rb

 

1.2.2 搭建步骤

需要6台redis服务器。搭建伪分布式。

需要6个redis实例。

需要运行在不同的端口7001-7006

 

使用之前搭建好的redis实例作为模板。

 

注意:搭建前如果节点里有数据,需要删除(rdb文件,aof文件)

 

第一步:创建6个redis实例,每个实例运行在不同的端口。需要修改redis.conf配置文件。配置文件中还需要把cluster-enabled yes前的注释去掉。

 

Ø  cd到/usr/local下并创建目录:

[root@localhost local]# mkdir redis-cluster

Ø  copy 之前搭建好的redis 并改名为redis01

[root@localhost local]# cp redis/ redis-cluster/redis01 -r

Ø  进入redis-cluster目录中cd到redis01的bin目录,删除数据文件

[root@localhost local]# cd redis-cluster/redis01/bin

[root@localhost bin]# rm -rf *.rdb *.aof

Ø  修改redis.conf,取消注释,如图

[root@localhost bin]# vim redis.conf


按ESC    :wq 

保存退出。

Ø  cd到redis-cluster目录

Ø  copy六份并分别命名为redis02,redis03,redis04,redis05,redis06

[root@localhost redis-cluster]# cp redis01 redis02 -r

[root@localhost redis-cluster]# cp redis01 redis03 -r

[root@localhost redis-cluster]# cp redis01 redis04 -r

[root@localhost redis-cluster]# cp redis01 redis05 -r

[root@localhost redis-cluster]# cp redis01 redis06 -r

 

Ø  cd到每一个实例的bin目录,修改每一个redis实例的端口分别改为7001-7006

[root@localhost bin]# vim redis.conf

 

第二步:启动每个redis实例。

vim redis-cluster-start-all.sh

添加如下文字到文件中:

cd /usr/local/redis-cluster/redis01/bin

./redis-server redis.conf

 

cd /usr/local/redis-cluster/redis02/bin

./redis-server redis.conf

 

cd /usr/local/redis-cluster/redis03/bin

./redis-server redis.conf

 

cd /usr/local/redis-cluster/redis04/bin

./redis-server redis.conf

 

cd /usr/local/redis-cluster/redis05/bin

./redis-server redis.conf

 

cd /usr/local/redis-cluster/redis06/bin

./redis-server redis.conf

 

Ø  修改文件:redis-cluster-start-all.sh的权限,让其可执行。

chmod u+x redis-cluster-start-all.sh

 

Ø  执行启动

[root@localhost redis-cluster]#./redis-cluster-start-all.sh

 

第三步:使用ruby脚本搭建集群。

Ø  从解压目录下的src下的拷贝redis-trib.rb文件到redis-cluster目录中

Ø  执行创建:脚本如下:

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

 

输入命令执行:

[root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005  192.168.25.153:7006

>>> Creating cluster

Connecting to node 192.168.25.153:7001: OK

Connecting to node 192.168.25.153:7002: OK

Connecting to node 192.168.25.153:7003: OK

Connecting to node 192.168.25.153:7004: OK

Connecting to node 192.168.25.153:7005: OK

Connecting to node 192.168.25.153:7006: OK

>>> Performing hash slots allocation on 6 nodes...

Using 3 masters:

192.168.25.153:7001

192.168.25.153:7002

192.168.25.153:7003

Adding replica 192.168.25.153:7004 to 192.168.25.153:7001

Adding replica 192.168.25.153:7005 to 192.168.25.153:7002

Adding replica 192.168.25.153:7006 to 192.168.25.153:7003

M: 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 192.168.25.153:7001

   slots:0-5460 (5461 slots) master

M: 8cd93a9a943b4ef851af6a03edd699a6061ace01 192.168.25.153:7002

   slots:5461-10922 (5462 slots) master

M: 2935007902d83f20b1253d7f43dae32aab9744e6 192.168.25.153:7003

   slots:10923-16383 (5461 slots) master

S: 74f9d9706f848471583929fc8bbde3c8e99e211b 192.168.25.153:7004

   replicates 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3

S: 42cc9e25ebb19dda92591364c1df4b3a518b795b 192.168.25.153:7005

   replicates 8cd93a9a943b4ef851af6a03edd699a6061ace01

S: 8b1b11d509d29659c2831e7a9f6469c060dfcd39 192.168.25.153:7006

   replicates 2935007902d83f20b1253d7f43dae32aab9744e6

Can I set the above configuration? (type 'yes' to accept): yes

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join.....

>>> Performing Cluster Check (using node 192.168.25.153:7001)

M: 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 192.168.25.153:7001

   slots:0-5460 (5461 slots) master

M: 8cd93a9a943b4ef851af6a03edd699a6061ace01 192.168.25.153:7002

   slots:5461-10922 (5462 slots) master

M: 2935007902d83f20b1253d7f43dae32aab9744e6 192.168.25.153:7003

   slots:10923-16383 (5461 slots) master

M: 74f9d9706f848471583929fc8bbde3c8e99e211b 192.168.25.153:7004

   slots: (0 slots) master

   replicates 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3

M: 42cc9e25ebb19dda92591364c1df4b3a518b795b 192.168.25.153:7005

   slots: (0 slots) master

   replicates 8cd93a9a943b4ef851af6a03edd699a6061ace01

M: 8b1b11d509d29659c2831e7a9f6469c060dfcd39 192.168.25.153:7006

   slots: (0 slots) master

   replicates 2935007902d83f20b1253d7f43dae32aab9744e6

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

[root@localhost redis-cluster]#

 

 

第四步创建关闭集群的脚本

首先使用:vim 命令创建一个文件 redis-cluster-stop-all.sh

编辑文件,添加如下:

 

cd /usr/local/redis-cluster/redis01/bin

./redis-cli -p 7001 shutdown

 

cd /usr/local/redis-cluster/redis02/bin

./redis-cli -p 7002 shutdown

 

cd /usr/local/redis-cluster/redis03/bin

./redis-cli -p 7003 shutdown

 

cd /usr/local/redis-cluster/redis04/bin

./redis-cli -p 7004 shutdown

 

cd /usr/local/redis-cluster/redis05/bin

./redis-cli -p 7005 shutdown

 

cd /usr/local/redis-cluster/redis06/bin

./redis-cli -p 7006 shutdown

 

修改文件:redis-cluster-stop-all.sh的权限,让其可执行。

 

chmod u+x redis-cluster-stop-all.sh

 

1.3 集群的使用方法

Redis-cli连接集群。

[root@localhost redis-cluster]#redis01/bin/redis-cli -p 7002 -c

-c:代表连接的是redis集群

-p:表示连接哪一个端口

-h:表示host 表示连接哪一个台服务器 默认是本地

使用命令操作redis是和单机版的一样。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值