Redis集群的搭建
集群中有三个节点的集群,每个节点有一主一从。需要6台虚拟机。
搭建一个伪分布式的集群,需要使用6个redis实例来模拟
- 开发环境的搭建
搭建环境需要使用官方提供的ruby脚本。因此需要安装ruby的环境。 - 安装ruby
redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境:
安装ruby
yum install ruby
yum install rubygems
安装ruby和redis的接口程序
拷贝redis-3.0.0.gem至(指定的目录下面) 例如(/usr/local)下
注:redis-3.0.0.gem这个文件是需要自己下载的
执行:
gem install /usr/local/redis-3.0.0.gem
- 集群节点的规划
这里在同一台服务器用不同的端口表示不同的redis服务器,如下:
语法:ip地址:端口(查看ip地址的命令为ifconfig)
主节点:192.168.152.130 :7001192.168.152.130 :7002 192.168.152.130 :7003
从节点:192.168.152.130 :7004 192.168.152.130 :7005 192.168.152.130 :7006
在/usr/local下创建redis-cluster目录,其下创建7001、7002。。7006目录,如下:
操作方法,就是将单机版本的bin目拷贝到redis-clusster下面
注意:拷贝完毕之后要移除快照dump.rdb
将redis安装目录bin下的文件拷贝到每个700X目录内,同时将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下。
修改每个700X目录下的redis.conf配置文件:
端口
port XXXX
bind 192.168.152.130 (ip地址)
cluster-enabled 改为yes
- 启动每一个节点
采用脚本的方式来启动6个redis实例
命令:vim startall.sh
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
执行脚本命令:
chmod +x startall.sh
- 执行创建集群命令
执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。
./redis-trib.rb create --replicas 192.168.152.130:7001 192.168.152.130:7002 192.168.152.130:7003 192.168.152.130:7004 192.168.152.130:7005 192.168.152.130:7006
说明:redis集群至少需要3个主节点,每个主节点有一个从节点总共6个节点
replicas指定为1表示每个主节点有一个从节点
注意:
如果执行时报如下错误:
[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
- 测试
集群创建成功登陆任意redis结点查询集群中的节点情况。
客户端以集群方式登陆:
说明:
./redis-cli -c -h 192.168.152.130 -p 7001 ,其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号
cluster nodes 查询集群结点信息
cluster info 查询集群状态信息
- 关闭集群
可以编写一个redis集群的关闭脚本
vim stopall.sh
redis01/redis-cli -c -h 192.168.152.130 -p 7001 shutdown
redis01/redis-cli -c -h 192.168.152.130 -p 7002 shutdown
redis01/redis-cli -c -h 192.168.152.130 -p 7003 shutdown
redis01/redis-cli -c -h 192.168.152.130 -p 7004 shutdown
redis01/redis-cli -c -h 192.168.152.130 -p 7005 shutdown
redis01/redis-cli -c -h 192.168.152.130 -p 7006 shutdown
chmod +x stopall.sh