1,redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境:
1.1,安装ruby
[root@localhost ~]# yum install ruby
[root@localhost ~]# yum install rubygems
1.2,安装ruby和redis的接口程序
下载 https://rubygems.org/gems/redis/:redis-3.0.0.gem。上传到Linux。
拷贝redis-3.0.0.gem至/usr/local下 ,执行:
[root@localhost ~]# gem install /usr/local/redis-3.0.0.gem
2,创建集群
(这里在同一台虚拟机用不同的端口表示6台不同的redis服务器)
主节点:192.168.84.128:9001 192.168.84.128:9002 192.168.84.128:9003
从节点:192.168.84.128:9004 192.168.84.128:9005 192.168.84.128:9006
2.1, 在/usr/local下创建redis-cluster目录,其下创建redis1、redis2、redis3、....redis6目录,
[root@localhost ~]# cd /usr/local
[root@localhost ~]# mkdir redis-cluster
[root@localhost ~]# cd redis-cluster
[root@localhost redis-cluster]# mkdir redis1 redis2 redis3 redis4 redis5 redis6
[root@localhost redis-cluster]# ll
total 0
drwxr-xr-x 2 root root 6 Jun 21 17:18 redis1
drwxr-xr-x 2 root root 6 Jun 21 17:18 redis2
drwxr-xr-x 2 root root 6 Jun 21 17:18 redis3
drwxr-xr-x 2 root root 6 Jun 21 17:18 redis4
drwxr-xr-x 2 root root 6 Jun 21 17:18 redis5
drwxr-xr-x 2 root root 6 Jun 21 17:18 redis6
2.2,将redis安装目录bin下的文件拷贝到每个刚刚新建redis1-redis6目录内,同时将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下。
2.2.1拷贝redis.conf
[root@localhost redis-cluster]# cp /usr/local/redis/bin /usr/local/redis-cluster/redis1 -rf
[root@localhost redis-cluster]# cp /usr/local/redis/bin /usr/local/redis-cluster/redis2 -rf
[root@localhost redis-cluster]# cp /usr/local/redis/bin /usr/local/redis-cluster/redis3 -rf
[root@localhost redis-cluster]# cp /usr/local/redis/bin /usr/local/redis-cluster/redis4 -rf
[root@localhost redis-cluster]# cp /usr/local/redis/bin /usr/local/redis-cluster/redis5 -rf
[root@localhost redis-cluster]# cp /usr/local/redis/bin /usr/local/redis-cluster/redis6 -rf
2.2.2,修改redis1-redis6每一个目录下的redis.conf配置文件(每一个文件都要修改)
[root@localhost redis-cluster]# vim /usr/local/lyxlove/redis6/bin/redis.conf
修改下面内容:
port 900X //修改端口号,900X 对应自己定义的端口
cluster-enabled yes //去掉注释
:wq 保存退出。
2.3,启动每个结点redis服务
可以编辑命令启动:
[root@localhost redis-cluster]# vim startall.sh
命令内容(用编写文件方式启动多个redis,不用每一个都启动):
cd ./9001
./bin/redis-server ./bin/redis.conf
cd ..
cd ./9002
./bin/redis-server ./bin/redis.conf
cd ..
cd ./9003
./bin/redis-server ./bin/redis.conf
cd ..
cd ./9004
./bin/redis-server ./bin/redis.conf
cd ..
cd ./9005
./bin/redis-server ./bin/redis.conf
cd ..
cd ./9006
./bin/redis-server ./bin/redis.conf
cd ..
2.4,执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。(/usr/local/redis-cluster 目录下需要有 redis-trib.rb 文件,否则执行出错。
[root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.84.128:9001 192.168.84.128:9002 192.168.84.128:9003 192.168.84.128:9004 192.168.84.128:9005 192.168.84.128:9006
注意:如果以前去安装过redis的。执行时报如下错误:
[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0
解决方法:是删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb
2.5, 连接集群中的某个节点。
[root@localhost redis-cluster]#./redis1/bin/redis-cli -c -h 192.168.84.128 -p 9001
其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号
如果没有-c,连接上了以后也不能set,get 数据。
cluster nodes 查询集群结点信息
cluster info 查询集群状态信息
2.6 关闭redis集群。
编写shutdown.sh命令:
[root@localhost redis-cluster]# vim shutdown.sh
./7001/bin/redis-cli -p 9001 shutdown
./7002/bin/redis-cli -p 9002 shutdown
./7003/bin/redis-cli -p 9003 shutdown
./7004/bin/redis-cli -p 9004 shutdown
./7005/bin/redis-cli -p 9005 shutdown
./7006/bin/redis-cli -p 9006 shutdown
简单总结(4步):
(1)安装ruby和接口
(2)复制bin和redis-trib.rb
(3)修改redis.conf
(4)启动