安装redis集群
第一步:安装相关依赖包
1):安装redis-cluster依赖:redis-cluster的依赖库在使用时有兼容问题,在reshard时会遇到各种错误,请按指定版本安装.
(1)确保系统安装zlib,否则geminstall会报(no such file to load -- zlib) #download:zlib-1.2.6.tar ./configure make make install 或者 yum install zlib
(1)安装ruby
cd /path/ruby ./configure -prefix=/usr/local/ruby make make install sudo cp ruby/usr/local/bin 或者 yum install ruby
(2)安装
rubygem:version(1.8.16)
#rubygems-1.8.16.tgz cd /path/gem sudo ruby setup.rb sudo cp bin/gem/usr/local/bin 或者 yum install rubygems
(3)安装gem-redis:version(3.0.0)
gem install redis --version 3.0.0 #由于源的原因,可能下载失败,就手动下载下来安装 #download地址:http://rubygems.org/gems/redis/versions/3.0.0 gem install -l /data/soft/redis-3.0.0.gem
第二步:安装redis-3.2.0
cd /home/lvnian/tools/ tar xf redis-3.2.0.tar.gz cd redis-3.2.0 make make install cd src/ cp redis-server /usr/local/bin cp redis-cli /usr/local/bin cp redis-trib.rb /usr/local/bin
创建集群需要的目录
[root@gaogd /]mkdir -p /redis/{6000..6005} [root@gaogd /]#cd /redis/ [root@gaogd redis]# ll total 28 drwxr-xr-x. 2 root root 4096 May 9 03:39 6000 drwxr-xr-x. 2 root root 4096 May 9 03:54 6001 drwxr-xr-x. 2 root root 4096 May 9 03:39 6002 drwxr-xr-x. 2 root root 4096 May 9 03:39 6003 drwxr-xr-x. 2 root root 4096 May 9 03:51 6004 drwxr-xr-x. 2 root root 4096 May 9 03:39 6005 [root@gaogd redis]#
修改配置文件redis.conf
cp /home/lvnian/tools/redis-3.2.0/redis.conf /redis vi /redis/redis.conf
##修改配置文件中的下面选项
port 6000 daemonize yes cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
##修改完redis.conf配置文件中的这些配置项之后把这个配置文件分别拷贝到6000/6001/6002/6003/6004/6005目录下面
cp /redis/redis.conf /redis/6000/ cp /redis/redis.conf /redis/6001/ cp /redis/redis.conf /redis/6002/ cp /redis/redis.conf /redis/6003/ cp /redis/redis.conf /redis/6004/ cp /redis/redis.conf /redis/6005/
##注意:拷贝完成之后要修改6000/6001/6002/6003/6004/6005目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称
启动redis的每个实例
cd /redis/6000 redis-server redis.conf & cd /redis/6001 redis-server redis.conf & cd /redis/6002 redis-server redis.conf & cd /redis/6003 redis-server redis.conf & cd /redis/6004 redis-server redis.conf & cd /redis/6005 redis-server redis.conf & [root@gaogd redis]# netstat -lntp|grep redis tcp 0 0 127.0.0.1:6000 0.0.0.0:* LISTEN 11046/redis-server tcp 0 0 127.0.0.1:6001 0.0.0.0:* LISTEN 11041/redis-server tcp 0 0 127.0.0.1:6002 0.0.0.0:* LISTEN 11049/redis-server tcp 0 0 127.0.0.1:6003 0.0.0.0:* LISTEN 11052/redis-server tcp 0 0 127.0.0.1:6004 0.0.0.0:* LISTEN 11055/redis-server tcp 0 0 127.0.0.1:6005 0.0.0.0:* LISTEN 11058/redis-server tcp 0 0 127.0.0.1:16000 0.0.0.0:* LISTEN 11046/redis-server tcp 0 0 127.0.0.1:16001 0.0.0.0:* LISTEN 11041/redis-server tcp 0 0 127.0.0.1:16002 0.0.0.0:* LISTEN 11049/redis-server tcp 0 0 127.0.0.1:16003 0.0.0.0:* LISTEN 11052/redis-server tcp 0 0 127.0.0.1:16004 0.0.0.0:* LISTEN 11055/redis-server tcp 0 0 127.0.0.1:16005 0.0.0.0:* LISTEN 11058/redis-server [root@gaogd redis]#
1执行redis的创建集群命令创建集群
cd /home/lvnian/tools/redis-3.2.0/src ./redis-trib.rb create --replicas 1 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005
2执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境
错误内容:
/usr/bin/env: ruby: No such file or directory
所以需要安装ruby的环境,这里推荐使用yum install ruby安装
yum install ruby
3然后再执行第1步的创建集群命令,还会报错,提示缺少rubygems组件,使用yum安装
错误内容:
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)from ./redis-trib.rb:24 yum install rubygems
4再次执行第1步的命令,还会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem 安装
错误内容:
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError) from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'from ./redis-trib.rb:25 gem install redis
5.再次执行第1步的命令,正常执行
[root@gaogd src]# ./redis-trib.rb create --replicas1 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003127.0.0.1:6004 127.0.0.1:6005 >>> Creating cluster >>> Performing hash slots allocation on 6nodes... Using 3 masters: 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002 Adding replica 127.0.0.1:6003 to 127.0.0.1:6000 Adding replica 127.0.0.1:6004 to 127.0.0.1:6001 Adding replica 127.0.0.1:6005 to 127.0.0.1:6002 M: d968e771065b571e832b32b793ae235269ae7c6c127.0.0.1:6000 slots:0-5460 (5461 slots) master M: 7d8a4d617f2ada37f0efbdc1ce23accd9930a853127.0.0.1:6001 slots:5461-10922 (5462 slots) master M: 75a450d2d95eb5849aa33f50b1c6c6fac701aebf127.0.0.1:6002 slots:10923-16383 (5461 slots) master S: 2ec788dd51b6fee6fae76b1fa7c009bcfd1bafff127.0.0.1:6003 replicatesd968e771065b571e832b32b793ae235269ae7c6c S: cc2ce728ad7a8dee323dcd6ec5c0f21927bef71a127.0.0.1:6004 replicates7d8a4d617f2ada37f0efbdc1ce23accd9930a853 S: 6668aae6f3ce06cf4269977f82163876630abec8127.0.0.1:6005 replicates75a450d2d95eb5849aa33f50b1c6c6fac701aebf Can I set the above configuration? (type 'yes' toaccept): yes >>> Nodes configuration updated >>> Assign a different config epoch toeach node 11046:M 09 May 03:39:21.630 # configEpoch set to 1via CLUSTER SET-CONFIG-EPOCH 11041:M 09 May 03:39:21.630 # configEpoch set to 2via CLUSTER SET-CONFIG-EPOCH 11049:M 09 May 03:39:21.631 # configEpoch set to 3via CLUSTER SET-CONFIG-EPOCH 11052:M 09 May 03:39:21.631 # configEpoch set to 4via CLUSTER SET-CONFIG-EPOCH 11055:M 09 May 03:39:21.631 # configEpoch set to 5via CLUSTER SET-CONFIG-EPOCH 11058:M 09 May 03:39:21.632 # configEpoch set to 6via CLUSTER SET-CONFIG-EPOCH >>> Sending CLUSTER MEET messages to jointhe cluster 11046:M 09 May 03:39:21.660 # IP address for thisnode updated to 127.0.0.1 11049:M 09 May 03:39:21.736 # IP address for thisnode updated to 127.0.0.1 11055:M 09 May 03:39:21.736 # IP address for thisnode updated to 127.0.0.1 11041:M 09 May 03:39:21.736 # IP address for thisnode updated to 127.0.0.1 11058:M 09 May 03:39:21.736 # IP address for thisnode updated to 127.0.0.1 11052:M 09 May 03:39:21.736 # IP address for thisnode updated to 127.0.0.1 Waiting for the cluster to join... 11052:S 09 May 03:39:25.655 # Cluster statechanged: ok 11055:S 09 May 03:39:25.656 # Cluster statechanged: ok 11058:S 09 May 03:39:25.657 # Cluster statechanged: ok >>> Performing Cluster Check (using node127.0.0.1:6000) M: d968e771065b571e832b32b793ae235269ae7c6c127.0.0.1:6000 slots:0-5460 (5461 slots) master M: 7d8a4d617f2ada37f0efbdc1ce23accd9930a853127.0.0.1:6001 slots:5461-10922 (5462 slots) master M: 75a450d2d95eb5849aa33f50b1c6c6fac701aebf127.0.0.1:6002 slots:10923-16383 (5461 slots) master M: 2ec788dd51b6fee6fae76b1fa7c009bcfd1bafff127.0.0.1:6003 slots: (0slots) master replicatesd968e771065b571e832b32b793ae235269ae7c6c M: cc2ce728ad7a8dee323dcd6ec5c0f21927bef71a127.0.0.1:6004 slots: (0slots) master replicates7d8a4d617f2ada37f0efbdc1ce23accd9930a853 M: 6668aae6f3ce06cf4269977f82163876630abec8127.0.0.1:6005 slots: (0slots) master replicates75a450d2d95eb5849aa33f50b1c6c6fac701aebf [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
至此redis集群即搭建成功!
使用redis-cli命令进入集群环境
[root@gaogd redis-3.2.0]# redis-cli -c -p 6000 127.0.0.1:6000>