简言
1. redis5.0版本以前的集群部署是使用ruby脚本完成的,ruby脚本的安装少略麻烦(主要原因是系统自动安装的版本太低,无法部署集群,必须手动安装)
2. redis5.0版本以后的集群部署集成到了create_cluster中(位置:redis根目录/utils/create-cluster/create-cluster),更简单,几条简单的命令即可部署一个简单版的集群,具体示例见笔者的这篇博客,https://blog.csdn.net/yzf279533105/article/details/105563361
示范(第一种情况,也就是redis5.0版本以前的)
版本:笔者使用的redis版本是redis4.0.14,下载地址见:https://download.csdn.net/download/yzf279533105/12050914
使用的ruby版本是ruby-2.6.5,下载地址见:https://download.csdn.net/download/yzf279533105/12043129
使用的rubygem对redis的管理包,下载地址见:https://download.csdn.net/download/yzf279533105/12051029
原理:开启6个独立的redis服务器,然后使用ruby脚本把它们连接起来,ruby会自动帮我们分配好6个节点的主从关系
1. 在目录 /usr/local下新建一个文件夹 redis-cluster-4.0.14,该目录用来存放我们所有的redis节点示例
2. 在新建的目录redis-cluster-4.0.14 中创建一个文件夹 redis01,这个目录用来存放redis示例节点1的文件
3. 在新建的目录 redis01 中放入以下文件,如下图,注意这些文件原来的位置,这是笔者安装redis4.0.14的目录,大都是redis4.0.14编译出来的
redis-benchmark 原位置: /usr/local/redis/redis-4.0.14/src/
redis-check-aof 原位置: /usr/local/redis/redis-4.0.14/src/
redis-check-rdb 原位置: /usr/local/redis/redis-4.0.14/src/
redis-cli 原位置: /usr/local/redis/redis-4.0.14/src/
redis.conf 原位置: /usr/local/redis/redis-4.0.14/
redis-server 原位置: /usr/local/redis/redis-4.0.14/src
redis-sentinel 我们自建的软连接,即命令 ln -s redis-server redis-sentinel
4. 修改文件 redis01/redis.conf,修改redis.conf完毕后,记得保存。具体修改如下:
4.1 绑定的IP地址,改为本机的局域网IP,bind属性,比如笔者的测试机器IP是 192.168.127.130,如下图
4.2 绑定的端口号,port属性, 默认是6379,改为8001,如下图
4.3 打开集群模式,即cluster-enabled 属性设置为yes,如下图
5. 把文件夹redis01目录,复制在同目录下,即redis-cluster-4.0.14目录下,分别命名redis02, redis03, redis04, redis05, redis06,这便是我们的6个redis节点,如下图
6. 重复步骤4的修改,把里面的redis.conf文件里面的绑定端口依次改为8002,8003,8004,8005,8006
7. 启动这6个redis节点,一个一个启动太麻烦了,我们做个批处理,start_all.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 &
cd ..
8. 启动脚本bash start_all.sh,我们运行命令 ps axu | grep redis 查看下redis进程,如下图所示
9. 至此我们开启来了6个redis节点
10. 搭建集群需要ruby脚本,所以我们需要安装ruby,不要使用系统自动安装,因为系统安装的ruby版本太低,无法部署redis集群。我们先运行命令 yum install gem 安装gem,安装成功后,运行命令 ruby -v,查看ruby的版本,会发现版本太旧了,如下图
11. 由于ruby2.0.0还是2015年的版本,无法部署redis集群,接下来请按照笔者的这篇博客 :https://blog.csdn.net/yzf279533105/article/details/103668279 安装ruby,建议和笔者的ruby版本一致,这样不会出什么问题
12. 把redis-4.0.14/src/redis-trib.rb文件拷贝到我们的redis集群目录,即 /usr/local/redis-cluster-4.0.14目录下,现在目录结构如下图
13. 从上面的地址 https://download.csdn.net/download/yzf279533105/12051029 下载gem对redis的支持包,下载到本目录
14. 安装这个gem包,运行命令 gem install redis-4.1.3.gem
注意:可能报出这样的错误,如下图:
说明需要重新安装redis的zlib库,具体操作如下
1、cd ruby-2.6.5/ext/zlib目录,执行 ruby ./extconf.rb、make 、make install命令。
2、若make时报错(chmod +x Makefile):make: *** No rule to make target `/include/ruby.h', needed by `zlib.o'. Stop.
3、更改Makefile文件, zlib.o: $(top_srcdir)/include/ruby.h 改成 zlib.o: ../../include/ruby.h;再重新make就可以成功了
15. 至此,所有的准备工作已经完成
16. 创建集群,运行命令 ./redis-trib.rb create --replicas 1 192.168.11.190:8001 192.168.11.190:8002 192.168.11.190:8003 192.168.11.190:8004 192.168.11.190:8005 192.168.11.190:8006
注意1:若使用的redis是5.0版本以上,则会报错,类似下面
WARNING: redis-trib.rb is not longer available!You should use redis-cli instead
意思是redis-trib.rb很快就不能再使用了,可以使用redis-clis来代替,所以笔者这里给出了redis, ruby, gem包的详细版本:
注意2:也有可能报出这样的错误,如下图
这个时候说明ruby脚本还缺乏redis的组件,也就是刚才的 gem install redis-4.1.3.gem未执行成功,我们重新执行下即可,安装成功时会出现下面的提示,这样就是正常的
17 . 搭建成功,如下图所示(红框处有标出命令和槽的分配)