目录
1、准备条件
Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机(主机出错,备份机替补)。
Redis集群至少需要6台服务器。搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006
2、在虚拟机中创建六个redis实例
- 查询redis开启的端口号
ps aux|grep redis
- 退出客户端命令------------shutdown,返回命令行------------quit
- 复制redis到redis-luster集群目录中
cp -r redis/bin redis-cluster/redis01
- 进入第一个redis文件夹中
cd redis-cluster/redis01
- 删除原来的数据文件
rm -rf dump.rdb
- 修改配置文件redis.conf
Vim redis.conf
- 快寻找端口号,
/port
- 键盘---i字母进入插入模式,插入后Esc退出插入模式
- 修改后,查找cluster,
/cluster
- 开启集群模式,把cluster-enabled yes前的注释去掉
- 最后退出
:WQ
- 配置第二个redis。复制redis01
Cp -r redis01/ redis02 …….到redis06
- 修改每个redis的端口号
如上代码
- 启动每个redis实例,采用批量脚本的方式
Vim start-all.sh
- 键盘 I 字母,进入insert 模式,输入以下信息
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 ..
- 完成后退出insert模式,退出并保存。
- 赋给批量脚本start-all.sh可执行权限
chmod +x start-all.sh
3、启动每个redis实例,并且使用ruby脚本搭建集群
3.1 启动六个redis实例(执行批量脚本)
./start-all.sh
3.2 使用ruby脚本搭建集群
3.2.1 ruby的运行环境
yum install ruby
yum install rubygems
3.2.2 将ruby脚本运行使用的包上传至linux服务器
Alt + P 进入上传SFTP文件传输模式
安装包
[root@localhost ~]# 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...
3.2.3 通过redis-trib.rb 搭建集群
本来需要将安装的redis-3.0.0.gem中的src下的 redis-trib.rb 放到redis-cluster文件夹中进行搭建六个redis实例的。
但是由于找不到redis-3.0.0这个文件夹,所以不能够正常运行以下语句
[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
所以本次采用的以下语句,经过测试是成功的。
[root@itcast redis-3.0.0]# find / -name redis-trib.rb
/usr/local/redis/redis-3.0.7/src/redis-trib.rb
[root@itcast redis-3.0.0]# cd /usr/local/redis/redis-3.0.7/src/redis-trib.rb
-bash: cd: /usr/local/redis/redis-3.0.7/src/redis-trib.rb: 不是目录
[root@itcast redis-3.0.0]# cd /usr/local/redis/redis-3.0.7/src/
[root@itcast src]# ./redis-trib.rb create --replicas 1 192.168.93.88:7001 192.168.93.88:7002 192.168.93.88:7003 192.168.93.88:7004 192.168.93.88:7005 192.168.93.88:7006
成功信息
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.93.88:7001
192.168.93.88:7002
192.168.93.88:7003
Adding replica 192.168.93.88:7004 to 192.168.93.88:7001
Adding replica 192.168.93.88:7005 to 192.168.93.88:7002
Adding replica 192.168.93.88:7006 to 192.168.93.88:7003
M: 12bedbf0aacea1aa9bd181f804cc3b40059e0b46 192.168.93.88:7001
slots:0-5460 (5461 slots) master
M: f5cd4e70cf304643546ce5679f9961a63edafdab 192.168.93.88:7002
slots:5461-10922 (5462 slots) master
M: b65c255766c1a40bb2a9128012ee1c0a1c1857bb 192.168.93.88:7003
slots:10923-16383 (5461 slots) master
S: 8e06946baf2dd07af31792037a7a33e626a5c2dc 192.168.93.88:7004
replicates 12bedbf0aacea1aa9bd181f804cc3b40059e0b46
S: 7026c98859062058fb4db08898e23a11128e12e5 192.168.93.88:7005
replicates f5cd4e70cf304643546ce5679f9961a63edafdab
S: 7b44d793116419d5e3752e9b17eb6aa2ef4bdda3 192.168.93.88:7006
replicates b65c255766c1a40bb2a9128012ee1c0a1c1857bb
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.93.88:7001)
M: 12bedbf0aacea1aa9bd181f804cc3b40059e0b46 192.168.93.88:7001
slots:0-5460 (5461 slots) master
M: f5cd4e70cf304643546ce5679f9961a63edafdab 192.168.93.88:7002
slots:5461-10922 (5462 slots) master
M: b65c255766c1a40bb2a9128012ee1c0a1c1857bb 192.168.93.88:7003
slots:10923-16383 (5461 slots) master
M: 8e06946baf2dd07af31792037a7a33e626a5c2dc 192.168.93.88:7004
slots: (0 slots) master
replicates 12bedbf0aacea1aa9bd181f804cc3b40059e0b46
M: 7026c98859062058fb4db08898e23a11128e12e5 192.168.93.88:7005
slots: (0 slots) master
replicates f5cd4e70cf304643546ce5679f9961a63edafdab
M: 7b44d793116419d5e3752e9b17eb6aa2ef4bdda3 192.168.93.88:7006
slots: (0 slots) master
replicates b65c255766c1a40bb2a9128012ee1c0a1c1857bb
[OK] All nodes agree about slots configuration.
3.3 集群使用方法
- Redis-cli连接集群。
[root@localhost redis-cluster]# redis01/redis-cli -p 7002 -c
-c:代表连接的是redis集群
-h:代表连接的是host的ip地址
- 包含地址的连接方式
redis01/redis-cli -h192.168.93.88 -p 7002 -c
- Cluster info 查看当前集群的而状态
- Cluster nodes 查看当前节点的信息