redis cluster的简单学习笔记

 redis cluster
(1)自动将数据进行分片,每个master上放一部分数据
(2)提供内置的高可用支持,部分master不可用时,还是可以继续工作的
redis cluster不用一致性hash,而是使用hash slots来替代。

为了实现效果:实现了读写分离(master-slave),高可用(redis-cluster本身的特性),多个master协同(水平扩容)。做如下试验:

在三台虚拟机上启动6个redis实例,3个为master,3个为slave

1),编写配置文件

redis cluster集群,要求至少3个master,去组成一个高可用,健壮的分布式的集群,每个master都建议至少给一个slave,
3个master,3个slave

3台虚拟机去搭建6个redis实例的redis cluster

不同虚拟机上创建目录,比如在虚拟机A上:

mkdir -p /etc/redis-cluster
mkdir -p /var/log/redis

mkdir -p /var/redis/7001

mkdir -p /var/redis/7002


每台虚拟机上都需要将配置文件修改一下选项,比如在虚拟机A上:
port 7001
cluster-enabled yes
cluster-config-file /etc/redis-cluster/node-7001.conf
cluster-node-timeout 15000
daemonize    yes                            
pidfile        /var/run/redis_7001.pid                         
dir         /var/redis/7001        
logfile /var/log/redis/7001.log
bind 192.168.0.101   
appendonly yes

将上面的配置文件,在/etc/redis下放6个,
分别为: 7001.conf,7002.conf,7003.conf,7004.conf,7005.conf,7006.conf

2),准备生产环境的启动脚本

在/etc/init.d下,放6个启动脚本,分别为:
 redis_7001, redis_7002, redis_7003, redis_7004, redis_7005, redis_7006。每个启动脚本内,都修改对应的端口号

3),分别在3台机器上,启动6个redis实例。redis-trib.rb是Redis Cluster的一个常用工具。使用redis-trib.rb需要ruby环境,下面就是安装ruby等环境

wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
tar -zxvf ruby-2.3.1.tar.gz
./configure -prefix=/usr/local/ruby
make && make install
cd ruby所在目录
cp "ruby所在目录"/bin/ruby /usr/bin
cp "ruby所在目录"/bin/gem /usr/bin

wget http://rubygems.org/downloads/redis-3.3.0.gem
gem install -l ./redis-3.3.0.gem
gem list check redis gem

cp “redis安装所在目录”/src/redis-trib.rb /usr/bin

--replicas: 每个master有几个slave

使用redis-tri.rb命令,
redis-trib.rb create --replicas 1 192.168.0.101:7001 192.168.0.101:7002 192.168.0.102:7003 192.168.0.102:7004 192.168.0.103:7005 192.168.0.103:7006

得到的结果如下:
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.0.101:7001
192.168.0.102:7003
192.168.0.103:7005
Adding replica 192.168.0.102:7004 to 192.168.0.101:7001
Adding replica 192.168.0.101:7002 to 192.168.0.102:7003
Adding replica 192.168.0.103:7006 to 192.168.0.103:7005
M: 20df2234e622fcadcce1d135e7458dcfd1c16ca2 192.168.0.101:7001
   slots:0-5460 (5461 slots) master
S: 5ac6d025af59500553df2ba13a265d9519f8865a 192.168.0.101:7002
   replicates 01d1bbd83ec5ec1586d831cfc0edbd0d2ac58b3f
M: 01d1bbd83ec5ec1586d831cfc0edbd0d2ac58b3f 192.168.0.102:7003
   slots:5461-10922 (5462 slots) master
S: ec8d3bd658982ba4180df00fc5ae0d2b79b2fe5b 192.168.0.102:7004
   replicates 20df2234e622fcadcce1d135e7458dcfd1c16ca2
M: cf13c8086fcba76bb9b97a6bf0699069da419e1d 192.168.0.103:7005
   slots:10923-16383 (5461 slots) master
S: 05e3e313c07b31a136bd50191324ba52f90c58a7 192.168.0.103:7006
   replicates cf13c8086fcba76bb9b97a6bf0699069da419e1d
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.0.101:7001)
M: 20df2234e622fcadcce1d135e7458dcfd1c16ca2 192.168.0.101:7001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 5ac6d025af59500553df2ba13a265d9519f8865a 192.168.0.101:7002
   slots: (0 slots) slave
   replicates 01d1bbd83ec5ec1586d831cfc0edbd0d2ac58b3f
S: 05e3e313c07b31a136bd50191324ba52f90c58a7 192.168.0.103:7006
   slots: (0 slots) slave
   replicates cf13c8086fcba76bb9b97a6bf0699069da419e1d
M: 01d1bbd83ec5ec1586d831cfc0edbd0d2ac58b3f 192.168.0.102:7003
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: cf13c8086fcba76bb9b97a6bf0699069da419e1d 192.168.0.103:7005
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: ec8d3bd658982ba4180df00fc5ae0d2b79b2fe5b 192.168.0.102:7004
   slots: (0 slots) slave
   replicates 20df2234e622fcadcce1d135e7458dcfd1c16ca2
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
从结果看得出,每个master虚拟机大概平均被分配了5461个slots

尝试 check 一下,输入:
redis-trib.rb check 192.168.0.101:7001

>>> Performing Cluster Check (using node 192.168.0.101:7001)
M: 20df2234e622fcadcce1d135e7458dcfd1c16ca2 192.168.0.101:7001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 5ac6d025af59500553df2ba13a265d9519f8865a 192.168.0.101:7002
   slots: (0 slots) slave
   replicates 01d1bbd83ec5ec1586d831cfc0edbd0d2ac58b3f
S: 05e3e313c07b31a136bd50191324ba52f90c58a7 192.168.0.103:7006
   slots: (0 slots) slave
   replicates cf13c8086fcba76bb9b97a6bf0699069da419e1d
M: 01d1bbd83ec5ec1586d831cfc0edbd0d2ac58b3f 192.168.0.102:7003
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: cf13c8086fcba76bb9b97a6bf0699069da419e1d 192.168.0.103:7005
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: ec8d3bd658982ba4180df00fc5ae0d2b79b2fe5b 192.168.0.102:7004
   slots: (0 slots) slave
   replicates 20df2234e622fcadcce1d135e7458dcfd1c16ca2
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

没问题,16384个slots全被分配了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值