redis-cluster集群适用于缓存数据量比价大,需要分片存储的场景
下面记录了下测试实验过程
安装环境: centos6.6,redis3.x
redis-cluster集群架构图
2、redis-cluster集群环境搭建
- 将 redis-3.0.0.gem,redis-3.0.0.tar.gz上传到服务器/opt/soft/redis_soft
并解压redis-3.0.0.tar.gz
- 将 redis-3.0.0.gem,redis-3.0.0.tar.gz上传到服务器/opt/soft/redis_soft
[root@localhost redis_soft]# ls
redis-3.0.0.gem redis-3.0.0.tar.gz
[root@localhost redis_soft]# tar -zxvf redis-3.0.0.tar.gz
- 安装ruby环境
#yum install ruby
#yum install rubygems
- 先安装一个单机版本
需要安装gcc:yum install gcc-c++
安装好gcc后进入redis3.0源码包下
#cd /opt/soft/redis_soft/redis-3.0.0/src
#make
安装到下面目录下ls
#make install PREFIX=/usr/local/redis
安装 redis-3.0.0.gem 注意要先安装好ruby环境
- 第一步:创建6个redis实例,端口号从7001~7006
进入redis01
[root@localhost redis_cluster]# cd redis01/
[root@localhost redis01]# ls
dump.rdb redis-benchmark redis-check-aof redis-checcd ..k-dump redis-cli redis.conf redis-sentinel redis-server
[root@localhost redis01]# rm -rf dump.rdb
修改端口号
[root@localhost redis01]# vim redis.conf ./
开启集群功能:
再复制5个出来
[root@localhost redis_cluster]# ls
redis01
[root@localhost redis_cluster]# cp -r redis01/ redis02
[root@localhost redis_cluster]# cp -r redis01/ redis03
[root@localhost redis_cluster]# cp -r redis01/ redis04
[root@localhost redis_cluster]# cp -r redis01/ redis05
[root@localhost redis_cluster]# cp -r redis01/ redis06
[root@localhost redis_cluster]# ls
redis01 redis02 redis03 redis04 redis05 redis06
[root@localhost redis_cluster]#
将redis02....redis06的端口改掉7002....7006
将创建redis集群的ruby脚步复制到redis_cluster下
[root@localhost redis06]# cd /opt/soft/redis_soft/redis-3.0.0/src/
[root@localhost src]# ls
。。。。。
[root@localhost src]# cp redis-trib.rb /usr/local/redis_cluster/
启动6个redis 实例 redis 后台启动要将redis.conf 的
daemonize no 改为
daemonize yes
- 在 redis_cluster/ 下 启动6个实例的脚步
#vim startAll.sh
保存,运行脚本后启动6个实例
#./startAll.sh
- 通过创建集群脚本 redis-trib.rb 创建集群
./redis-trib.rb create --replicas 1 192.168.1.136:7001 192.168.1.136:7002 192.168.1.136:7003 192.168.1.136:7004 192.168.1.136:7005 192.168.1.136:7006
>>> Creating cluster
Connecting to node 192.168.1.136:7001: OK
Connecting to node 192.168.1.136:7002: OK
Connecting to node 192.168.1.136:7003: OK
Connecting to node 192.168.1.136:7004: OK
Connecting to node 192.168.1.136:7005: OK
Connecting to node 192.168.1.136:7006: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.1.136:7001
192.168.1.136:7002
192.168.1.136:7003
Adding replica 192.168.1.136:7004 to 192.168.1.136:7001
Adding replica 192.168.1.136:7005 to 192.168.1.136:7002
Adding replica 192.168.1.136:7006 to 192.168.1.136:7003
M: c9f6193c8643a938e0256e550d9787c0c4612dc4 192.168.1.136:7001
slots:0-5460 (5461 slots) master
M: 6ae74156a5171bd64c548dd5d5cd97e644e6f644 192.168.1.136:7002
slots:5461-10922 (5462 slots) master
M: aba4d0209c74002a2f6a342354c71a2424c3c526 192.168.1.136:7003
slots:10923-16383 (5461 slots) master
S: e7d679f2a5189fafbef61c800c15b9ead792cddf 192.168.1.136:7004
replicates c9f6193c8643a938e0256e550d9787c0c4612dc4
S: 48e225a8512607903060aa3b274e7feda05fea8a 192.168.1.136:7005
replicates 6ae74156a5171bd64c548dd5d5cd97e644e6f644
S: 1e11b06f450a24b13ae63e202cfe5345ccc105de 192.168.1.136:7006
replicates aba4d0209c74002a2f6a342354c71a2424c3c526
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.1.136:7001)
M: c9f6193c8643a938e0256e550d9787c0c4612dc4 192.168.1.136:7001
slots:0-5460 (5461 slots) master
M: 6ae74156a5171bd64c548dd5d5cd97e644e6f644 192.168.1.136:7002
slots:5461-10922 (5462 slots) master
M: aba4d0209c74002a2f6a342354c71a2424c3c526 192.168.1.136:7003
slots:10923-16383 (5461 slots) master
M: e7d679f2a5189fafbef61c800c15b9ead792cddf 192.168.1.136:7004
slots: (0 slots) master
replicates c9f6193c8643a938e0256e550d9787c0c4612dc4
M: 48e225a8512607903060aa3b274e7feda05fea8a 192.168.1.136:7005
slots: (0 slots) master
replicates 6ae74156a5171bd64c548dd5d5cd97e644e6f644
M: 1e11b06f450a24b13ae63e202cfe5345ccc105de 192.168.1.136:7006
slots: (0 slots) master
replicates aba4d0209c74002a2f6a342354c71a2424c3c526
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
好了,到这里集群环境就算搭建好了,3个主 3个备
- 测试集群(连接登录):
#redis01/redis-cli -h 192.168.25.153 -p 7002 -c
注:-c 必修有
关闭redis
#redis01/redis-cli -p 7001 shutdown
编写批量关闭脚本
注意点:
开启redis远程访问
redis默认只能localhost登录,所以需要开启远程登录。解决方法如下:
在redis的配置文件redis.conf中,找到#bind localhost注释掉。
注释掉本机,局域网内的所有计算机都能访问。
band localhost 只能本机访问,局域网内计算机不能访问。
bind 局域网IP 只能局域网内IP的机器访问, 本地localhost都无法访问。
还要把 protected-mode yes 改为protected-mode no
参考:
http://blog.csdn.net/xu470438000/article/details/42971091