redis从3.0版本开始支持集群,2.X版本主支持sentinel主从模式;所以要搭建集群务必下载3.0以上版本,本教程以3.2.2版本为例。
redis集群最少要有3个主节点,最典型的是3主3从组成集群;本教程以在同一台主机(192.168.220.128)搭建3个主节点(master)的集群为例。
1.下载
下载页面:https://redis.io/download
当前最新版本下载:http://download.redis.io/releases/redis-4.0.1.tar.gz
历史版本下载:http://download.redis.io/releases/
2.安装
先创建基本的目录结构
mkdir redis mkdir redis/adm mkdir redis/bin-3.2.2 ln -s bin-3.2.2 redis/bin mkdir redis/data mkdir redis/conf mkdir redis/logs mkdir redis/tmp
解压编译redis
tar -zxf redis-3.2.2.tar.gz cd redis-3.2.2 make
将redis二进制文件和ruby脚本移动bin目录,将配置文件移到conf目录
cd src ll |grep x cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb ../../redis/bin cd .. cp runtest runtest-cluster runtest-sentinel ../redis/bin cp redis.conf sentinel.conf ../redis/conf/
3.配置和启动redis
创建各端口进程的data目录
cd redis/data mkdir 7011 mkdir 7012 mkdir 7013 mkdir 7014 mkdir 7015 mkdir 7016
创建各端口进程的配置文件,其中portNum和bind的IP根据自己情况修改
cd ../conf for portNum in 7011 7012 7013 7014 7015 7016 do cat > redis-$portNum.conf <<EOF daemonize yes pidfile /usr/myapp/redis/tmp/redis-$portNum.pid dir /usr/myapp/redis/data/$portNum/ loglevel notice logfile /usr/myapp/redis/logs/redis-$portNum.log maxclients 10000 bind 192.168.220.128 port $portNum protected-mode yes #requirepass yourpasswd cluster-enabled yes cluster-config-file nodes-$portNum.conf cluster-node-timeout 5000 cluster-require-full-coverage no appendonly no appendfsync everysec auto-aof-rewrite-percentage 200 auto-aof-rewrite-min-size 256mb save "" repl-diskless-sync no repl-diskless-sync-delay 5 EOF done
创建集群时上边的bind最好只绑定一个本机网卡的IP地址,127.0.0.1也不要绑,不然在后边使用redis-trib创建集群时会一直停在等待节点加入状态。(不绑127.0.0.1的问题是redis-cli需要用-h指定IP才能登录)
然后启动各server进程
cd ../bin ./redis-server ../conf/redis-7011.conf ./redis-server ../conf/redis-7012.conf ./redis-server ../conf/redis-7013.conf ./redis-server ../conf/redis-7014.conf ./redis-server ../conf/redis-7015.conf ./redis-server ../conf/redis-7016.conf
4.安装ruby
由于redis官方提供的集群组建脚本是ruby写的,所以我们需要安装ruby
yum -y install ruby ruby-devel rubygems rpm-build gem install redis
对于内网环境可能或是不能连接外网或没有源,需要先在别的机器上离线下载然后上传上去离线安装
yum install --downloaddir=. --downloadonly ruby #下载ruby及其依赖到当前目录,如果还有其他包没下载可模仿下载
yum install --downloaddir=. --downloadonly rubygems #下载gem及其依赖到当前目录 wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.2.gem
yum localinstall ruby -y #进入上传的ruby存放的目录执行
yum localinstall rubygems -y #进入上传的rubygems目录执行 gem install -l ./redis-3.2.2.gem
yum localinstall有时装不上改用rpm逐个包安装即可;ruby依次安装compat-readline5--ruby-libs--ruby;gem依次安装ruby-irb--ruby-rdoc--rubygems
5.创建集群
cd ../bin ./redis-trib.rb create --replicas 1 192.168.220.128:7011 192.168.220.128:7012 192.168.220.128:7013 192.168.220.128:7014 192.168.220.128:7015 192.168.220.128:7016
在提示Can I set the above configuration? (type 'yes' to accept):时输入yes接受即可(redis-trib有时会报错权限不足,以root执行即可)
6.查看集群情况
./redis-cli -h 192.168.220.128 -p 7011 -c cluster nodes
-c是登录集群使可以自动跳转;如果要确保集群可用,可登录set/get一下
参考: