本次操作,是在一台服务器,进行单机集群。后续的多机集群还需要实验。
ruby环境。
yum -y install ruby rubygems gcc
下载redis源码。(应公司要求,直接下这个版本)
$ wget http://download.redis.io/releases/redis-3.2.9.tar.gz $ tar xzf redis-3.2.9.tar.gz $ cd redis-3.2.9 $ make && make install
这里,若报错,操作如下。(但,我一直没有遇到过这里报错,姑且先记下)
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory 操作: make MALLOC=libc
执行 创建集群代码。
mkdir -p /root/redis-cluster/redis{7001,7002,7003,7004,7005,7006,7007,7008}
修改redis.conf中的bind:127.0.0.1(默认)为自己的监听IP
执行 遍历复制原文件配置。这里的/home/redis/redis-3.2.9路径是原文件路径,需自定义
for dir in /root/redis-cluster/redis*; do cp -v /home/redis/redis-3.2.9/ redis.conf $dir ; done
执行遍历修改全部集群代码。
for dir in /root/redis-cluster/redis*; do myport=`basename $dir|sed 's/[a-zA-Z]*//g'`; sed -r -i " s@^s*port.*@port $myport@; s@^s*daemonize.*@daemonize yes@; s@^s*pidfile.*@pidfile /var/run/redis_$myport.pid@; s@^s*logfile.*@logfile /var/log/redis_$myport.log@; s@^s*#?s*cluster-enabled.*@cluster-enabled yes@; s@^s*#?s*cluster-config-file.*@cluster-config-file $dir/nodes-$myport.conf@; s@^s*#?s*cluster-node-timeout.*@cluster-node-timeout 15000@; s@^s*dir.*@dir $dir@; " $dir/redis.conf; done
执行 遍历执行启动。这里的/home/redis/redis-3.2.9同样需自定义
for dir in /root/redis-cluster/redis700*; do /home/redis/redis-3.2.9/src/redis-server $dir/redis.conf ; done
创建集群前,会报错,需要先执行如下操作。
(猜测,应该是rubygems组件的版本过低导致,需要2.2.2以上)
wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem gem install -l ./redis-3.2.1.gem
准备工作完成,接下来就是创建集群。redis路径、IP需自定义
/home/redis/redis-3.2.9/src/redis-trib.rb create --replicas 1 10.0.42.79:7001 10.0.42.79:7002 10.0.42.79:7003 10.0.42.79:7004 10.0.42.79:7005 10.0.42.79:7006 10.0.42.79:7007 10.0.42.79:7008
检查,是否可以连接上
cd /home/redis/redis-3.2.9/src ./redis-cli -c -h 10.0.42.79 -p 7001
连接成功后,cluster info查看集群信息
参考:提示 requires ruby verssion 2.2.2,其中 第5步改为 rvm install ruby-2.3.3 --default;
centos搭建redis集群搭建(单机多借点); redis搭建集群缓存服务器;redis单机及其集群的搭建
后续:
若启动不成功,一般需要检查服务是否开启、端口是否打开。
lsof -i :6379
redis-server& /若启动不成功,去redis目录下cd /home/redis/redis-3.2.9/src, ./redis-server &
./redis-cli 进入
开始测试:>set myname helloworld
OK
>get myname
'hello'
成功~