最近在研究Redis方面的知识,平常公司用的Redis环境是主从环境,也没有使用哨兵集群,因此私下在此研究一下Redis Cluster的使用。
所需环境准备:
- Centos6 环境的Linux服务器
- 3.2.8 版本的Redis
- 2.3.0 版本以上的Ruby环境
第一步:安装Ruby
直接通过yum install ruby安装的ruby的版本过低,为2.0.0,使用这个版本去执行gem install redis的时候会遇到如下报错
[root@iZbp1gvgd2gh378t95h37bZ src]# gem install redis
Fetching: redis-4.1.2.gem (100%)
ERROR: Error installing redis:
redis requires Ruby version >= 2.3.0.
因此需要对Ruby进行升级,我采用了yum更新的方式,具体命令如下:
yum install centos-release-scl-rh //会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源
yum install rh-ruby23 -y //直接yum安装即可
scl enable rh-ruby23 bash //必要一步
ruby -v //查看安装版本
感谢 centos7/rhel7安装较高版本ruby2.2/2.3/2.4+ 的博客
第二步:下载安装redis
我本人的习惯是所有的软件都安装在 /app 下
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar xzf redis-3.2.8.tar.gz
cd redis-3.2.8
make
第三步: 修改Redis的配置文件
我这次用了6个redis实例,三个主,三个从,形成集群。因此,将上面make生成的reids包中的redis.conf 文件拷贝六份,分别以端口号作为文件夹命名,具体如下:
修改每一个端口文件夹下面的redis.conf 中的配置内容,主要修改内容如下:
cluster-enabled yes # 开启集群模式
pidfile /var/run/redis/redis.pid #多实例情况下需修改,例如redis_6380.pid
port 6379 #多实例情况下需要修改,例如6380
logfile /var/log/redis/redis.log #多实例情况下需要修改,例如6380.log
dbfilename dump.rdb #多实例情况下需要修改,例如dump.6380.rdb
appendfilename "appendonly.aof" #多实例情况下需要修改,例如 appendonly_6380.aof
dir /opt/redis/data #多实例情况下需要修改,例如/data/638
cluster-config-file /opt/redis/6380/nodes.conf #多实例情况下需要修改,例如/6380/
所以我改成了如下格式
pidfile /var/run/redis_6379.pid
port 6379
logfile "/app/redis/redis-3.2.8/logs/6379.log"
dbfilename dump_6379.rdb
appendfilename "appendonly_6379.aof"
dir ./
cluster-config-file nodes_6379.conf
六个实例分别需要六个不同的配置文件,按照上面的格式改一下配置中的端口号就行。
但是光这样运行还会遇到 logs文件夹不存在的情况,所以需要创建logs文件夹。
第四步: 启动6个redis实例
全部运行起来之后效果如下:
第五步:安装 ruby的redis
这里需要注意一点,gem会有自己默认的一个源。这个源我们是无法访问的,所以我们需要替换这个源
gem sources -r http://rubygems.org/ #移除无法访问的源
gem sources -a https://gems.ruby-china.com/ #加上中国的ruby镜像
这之后安装 ruby的redis
gem install redis
第六步:生成redis集群
./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384
输出如下结果:
表示Redis Cluster 集群搭建完成。
最后,我们测试一下redis集群,效果如下
感谢:https://www.cnblogs.com/kerwinC/p/6611634.html 的博客
以及官方文档 https://redis.io/topics/cluster-tutorial 的指导