1 redis集群搭建
Redis 从3.0.0正式版开始官方支持集群, 下面开始做一个集群配置的示例.
官网地址: http://redis.io/download
当前最新版下载地址: http://download.redis.io/releases/redis-3.2.0.tar.gz
[root@localhost ~]# wget http://download.redis.io/releases/redis-3.2.0.tar.gz
[root@localhost ~]# tar xf redis-3.2.0.tar.gz
[root@localhost ~]# cd redis-3.2.0
[root@localhost redis-3.2.0]# make && make PREFIX=/usr/local/redis install
安装之后复制 src/redis-trib.rb 文件到/usr/local/redis/bin/ 下,后续创建集群的时候用的着.这是官方提供的一个用ruby语言编写的用于创建redis集群的工具.
[root@localhost redis-3.2.0]# cp -a src/redis-trib.rb /usr/local/redis/bin/
接着我们创建6个目录,对应6个redis实例,在创建集群时,将分三个主实例,三个从实例.(事实上,一个实例就可以创建集群,但是redis-trib.rb工具默认至少需要三个实例方可创建集群,这也是为了集群的自动故障转移功能可用,如果某个主节点挂了,会自动选举一个它的从节点替代它作为主节点)
...# mkdir -p /data/redis-cluster/{7001,7002,7003,7004,7005,7006}
...# ls /data/redis-cluster/
7001 7002 7003 7004 7005 7006
复制redis包根目录下的redis.conf配置文件到各个节点目录下
...# for dir in /data/redis-cluster/700* ; do cp -v redis.conf $dir ; done
然后修改配置文件.因为是在一台机器模拟多个节点,所以主要是修改各个实例的端口以及确保去掉了集群的配置注释.主要是以下三个配置项:
cluster-enabled yes cluster-config-file nodes-6379.conf //这个文件不能删除也不能去修改 cluster-node-timeout 15000 |
[root@localhost redis-3.2.0]# for dir in /data/redis-cluster/700*; do
sed -r -i "
s@^\s*port.*@port ${dir##*/}@ ;
s@^\s*daemonize.*@daemonize yes@ ;
s@^\s*pidfile.*@pidfile /var/run/redis_${dir##*/}.pid@ ;
s@^\s*logfile.*@logfile /var/log/redis_${dir##*/}.log@;
s@^\s*#?\s*cluster-enabled.*@cluster-enabled yes@;
s@^\s*#?\s*cluster-config-file.*@cluster-config-file $dir/nodes-${dir##*/}.conf@;
s@^\s*#?\s*cluster-node-timeout.*@cluster-node-timeout 15000@;
s@^\s*dir.*@dir $dir@;
" $dir/redis.conf
done
可以去看下配置是否修改正确, 确认修改无误后启动这6个实例.
... # for dir in /data/redis-cluster/700*; do /usr/local/redis/bin/redis-server $dir/redis.conf ; done
可以看到6个实例都以cluster的方式正常工作了,接下来就是配置集群.
这就用到了 redis-trib.rb 这个工具了, 因为这个工具是ruby写的,所以需要ruby环境的支持,我们需要安装下ruby环境, 否则无法运行此工具.
[root@localhost redis-3.2.0]# yum -y install ruby rubygems
注意:请确保 ruby版本是 1.8.7+版本, 否则,执行 redis-trib.rb命令时可能会提示无法连接redis服务.
[root@localhost redis-3.2.0]# ruby --version
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
[root@localhost redis-3.2.0]#
接着安装ruby环境的redis库, 注意, 因天朝特殊的网络环境的原因,我们可能需要更换一下 gem的镜像, 更换镜像可以使用淘宝的,请参考:http://ruby.taobao.org/
[root@localhost redis-3.2.0]# gem install redis
好了,开始使用redis-trib.rb 这个工具创建集群.可以先执行redis-trib.rb看看这个工具的用法.
[root@localhost redis-3.2.0]# /usr/local/redis/bin/redis-trib.rb Usage: redis-trib <command> <options> <arguments ...>
info host:port reshard host:port --pipeline <arg> &n |