继上一篇redis单机服务器搭建成功之后,按如下方式进行集群搭建。
搭建一个最小的集群需要6台机器(由节点投票机制决定至少需要3台主节点,另外为了高可用每个主节点至少要备一个从节点,所以总共需要6个节点。这里6个节点全部设在一台机上,通过端口号来分别。实现伪分布式。)
1.在/usr/local/目录下创建文件夹redisCluster,并在redisCluster目录下创建6个文件夹
mkdir /usr/local/redisCluster
mkdir /usr/local/redisCluster/redis0{1,2,3,4,5,6}
2.复制单机单实例下可正常启动redis情况下的 /usr/local/bin 目录下的所有文件分别到上面创建的6个文件夹中
cp /usr/local/bin/* /usr/local/redisCluster/redis01/
cp /usr/local/bin/* /usr/local/redisCluster/redis02/
cp /usr/local/bin/* /usr/local/redisCluster/redis03/
cp /usr/local/bin/* /usr/local/redisCluster/redis04/
cp /usr/local/bin/* /usr/local/redisCluster/redis05/
cp /usr/local/bin/* /usr/local/redisCluster/redis06/
3.再对每个实例里面的redis.conf进行修改(这里修改其中一份,然后其他5份进行复制之后修改下端口号即可,可以用ssh工具将该配置文件下载到windows中进行编辑修改,更快捷省事)
vi /usr/local/redisCluster/redis01/redis.conf
找到以下几处进行修改(修改这10处就基本满足集群启动条件了,其他参数可自行百度)
第1处: port 6379 ————> 值 改成 7001
第2处: daemonize no ————> 值 改成 yes
第3处: pidfile /var/run/redis_6379.pid ————> 值 改成 ./redis_7001.pid
第4处: logfile "" ————> 值 改成 "./logs/redis_7001.log"
第5处: bind 127.0.0.1 ————> 值 改成 本机IP(如我这里是192.168.25.129)
第6处: protected-mode yes ————> 值 改成 no
第7处: # cluster-enabled yes ————> 去掉注释
第8处: # cluster-config-file nodes-6379.conf ————> 去掉注释 并把数字改成对应端口号,如这里是7001
第9处: # cluster-node-timeout 15000 ————> 去掉注释
第10处: appendonly no ————> 值 改成 yes
4.将上面编辑号保存的/usr/local/redisCluster/redis01/目录下的redis.conf文件重命名为7001.conf,然后复制5份分别放到redis02、redis03、redis04、redis05、redis06文件夹下面(可删除掉原文件夹中的redis.conf文件),然后再对每个文件夹下的.conf文件重命名为对应端口号.conf,接着编辑里面的内容,将之前修改为7001的全部修改成对应端口号保存即可,这个工作放到windows中来做可以很方便快捷。(由于配置文件中把log配到当前目录下的logs文件夹中,所以还要在各个文件夹下创建logs文件夹)
5.将ruby脚本拷贝到redisCluster目录下
cp /usr/local/redis/redis-4.0.8/src/redis-trib.rb /usr/local/redisCluster/
6.创建redis集群启动、停止的脚本以及ruby创建集群的脚本并授权
touch /usr/local/redisCluster/startCluster.sh
touch /usr/local/redisCluster/shutdownCluster.sh
touch /usr/local/redisCluster/createCluster.sh
chmod 777 /usr/local/redisCluster/*.sh
内容分别如下:
startCluster.sh:
cd /usr/local/redisCluster/redis01
./redis-server ./7001.conf
cd /usr/local/redisCluster/redis02
./redis-server ./7002.conf
cd /usr/local/redisCluster/redis03
./redis-server ./7003.conf
cd /usr/local/redisCluster/redis04
./redis-server ./7004.conf
cd /usr/local/redisCluster/redis05
./redis-server ./7005.conf
cd /usr/local/redisCluster/redis06
./redis-server ./7006.conf
shutdownCluster.sh:
cd /usr/local/redisCluster/redis01/
./redis-cli -h 192.168.25.129 -p 7001 shutdown
cd /usr/local/redisCluster/redis02/
./redis-cli -h 192.168.25.129 -p 7002 shutdown
cd /usr/local/redisCluster/redis03/
./redis-cli -h 192.168.25.129 -p 7003 shutdown
cd /usr/local/redisCluster/redis04/
./redis-cli -h 192.168.25.129 -p 7004 shutdown
cd /usr/local/redisCluster/redis05/
./redis-cli -h 192.168.25.129 -p 7005 shutdown
cd /usr/local/redisCluster/redis06/
./redis-cli -h 192.168.25.129 -p 7006 shutdown
createCluster.sh:
ruby redis-trib.rb create --replicas 1 192.168.25.129:7001 192.168.25.129:7002 192.168.25.129:7003 192.168.25.129:7004 192.168.25.129:7005 192.168.25.129:7006
最后redisCluster目录和各个redis实例目录结构如下:
7.先用刚刚创建的脚本启动6个实例,再用ruby脚本创建集群
cd /usr/local/redisCluster/
./startCluster.sh
查看进程:
ps -ef | grep redis
再运行ruby脚本创建集群
./createCluster.sh
然后 输 yes
这样集群就搭建成功了。登录任意一个节点客户端验证(-c 表示以集群方式登录),也可以用redis客户端工具RedisDesktopManager来可视化地管理redis数据库。
cd /usr/local/redisCluster/redis01/
./redis-cli -h 192.168.25.129 -p 7001 -c
这样一路顺风就搭建完成了。超简单有没有?
但是初次搭建,可能linux中有些软件没有安装,需要联网安装的。
主要有下面几个:
yum -y install gcc ## make install 命令需要此环境
yum -y intall ruby ## 安装ruby(此时安装的可能使低版本的)
curl -L get.rvm.io | bash -s stable ## 安装rvm
source /usr/local/rvm/scripts/rvm ## 使安装的rvm立即生效
rvm install 2.4.1 ## 通过rvm来安装ruby高级版本
gem install redis ## 通过ruby的工具包gem来安装redis接口
顺利到此,则运行ruby脚本的环境已具备
通过startCluster.sh脚本先启动6个实例,然后通过createCluster.sh脚本创建集群即可成功.
另外,需要注意的是,在关闭redis集群之后,再次重复步骤启动集群时会报错,此时只需要删除redis各个实例中生成的文件即可再次按步骤启动集群(当然,这是在测试时这么干)。