redis集群离线安装

环境准备:

  • redis-4.0.7.tar.gz redis的安装包
  • Ruby环境(集群搭建须要用ruby建立, ruby环境在2.2以上。)
  • rubygems-2.7.4.tgz 和 redis-3.2.2.gem (后面的是redis集群须要的ruby插件,rubygems是ruby的一个包管理工具,经过rubygems安装redis-3.2.2.gem。)
  • centos7,注意安装系统的基础环境,包括zlib和openssl。

安装步骤

一、解压编译redis

cd /usr/local/
mkdir redis
将redis放到redis目录下
tar -vxf redis-4.0.7.tar.gz
make

若是报错:
报错node

说明系统没有安装gcc的环境,没法进行编译。redis

1.一、安装gcc(若是make不报错不作这一步)

mount /dev/cdrom /mnt
cd /mnt/Packages (有的不在Packages目录下,这个目录下都是rpm包)
rpm -ivh gcc-4.8.5-4.el7.x86_64.rpm

报错

安装gcc以前须要安装其余的依赖,按照提示的依赖从上到下安装:shell

rpm -ivh gcc-4.8.5-4.el7.x86_64.rpm cpp-4.8.5-4.el7.x86_64.rpm glibc-devel-2.17-105.el7.x86_64.rpm  libmpc-1.0.1-3.el7.x86_64.rpm glibc-headers-2.17-105.el7.x86_64.rpm kernel-headers-3.10.0-327.el7.x86_64.rpm

安装依赖

1.二、make报错:

make报错

解决办法:make 后面带参数vim

make MALLOC=libc
make install 
cd src
./redis-server

开启成功

看到这个界面redis单机版启动成功,验证:
另外打开一个链接,到根目录下执行centos

./redis-cli
ping

若是有响应,则redis单机版本安装成功。
响应ruby

二、配置集群环境(两台机器,6个节点,至少须要6个节点。)

2.一、建立集群目录

在redis安装目录下建立redis_cluster目录:app

mkdir redis_cluster
在redis_cluster中建立子目录:
cd redis_cluster/
mkdir 7000
mkdir 7001
mkdir 7002

2.二、配置redis.conf

将redis.conf拷贝到这三个目录中去:(redis.conf在安装目录下)工具

cp redis.conf ./redis_cluster/7000
cp redis.conf ./redis_cluster/7001
cp redis.conf ./redis_cluster/7002

 
修改每一个redis.conf的配置,须要修改的内容以下:测试

port 7000    //配置集群的端口,分别是7000、700一、7002
bind 本机的IP    //这里的默认配置是127.0.0.1改成内网ip。
daemonsize yes   //容许redis在后台运行
pidfile  /var/run/redis_7000.pid  //改为和端口一致
cluster-enabled  yes   // 开启集群 把注释去掉
cluster-config-file node_7000.conf  //集群的配置,和端口一致
cluster-node-timeout  15000  // 请求超时,默认为15秒
appendonly  yes // aof日志开启,有须要就开启,每一次写操做都会记录一条日志。

修改完成以后启动服务:centos7

cd src/
./redis-server ../redis_cluster/7000/redis.conf

依次启动全部节点:
依次启动全部节点

查看启动状况:
启动状况

2.三、另外一台机器执行相同的操做

另外一台机器的redis端口分配为:700三、700四、7005,而后修改对应的主机ip。

三、安装ruby环境

3.一、下载、安装ruby

mkdir /usr/local/ruby
cd ruby/
把包放到改目录下
tar -vxf ruby-2.5.0.tar.gz
cd ruby-2.5.0/
./configure
make && make install

验证:
ruby -v
验证ruby环境

3.二、下载安装rubygems

cd /usr/local
mkdir rubygems
把文件放到该目录下
tar -vzxf rubygems-2.7.4.tgz
cd rubygems-2.7.4/
ruby setup.rb

报错:
报错

解决办法:缺乏了zlib包,须要下载并安装zlib

3.2.一、下载安装zlib
cd /usr/local
mkdir zlib
tar -vxf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure --prefix=/usr/local/zlib
make
make install
3.2.二、编译 ruby 中的zlib
cd /usr/local/ruby-2.5.0/ext/zlib/
ruby extconf.rb --with-zlib-include=/usr/local/zlib/include/ --with-zlib-lib=/usr/local/zlib/lib
make

又报错:
报错

解决办法:执行完extconf.rb以后会生成一个Makefile vim Makefile
解决方案

把$(top_srcdir) 换成 ../../
而后再make
make
make install

错误都解决以后,回到安装rubygems的步骤。
进入rubygems的安装目录,执行ruby setup.rb

cd /usr/local/rubygems/rubygems-2.7.4
ruby setup.rb

安装成功:
安装成功

四、安装ruby-redis插件

4.1.一、下载redis-3.2.2.gem

刚刚安装rubygems就是为了安装这个插件。
把文件放到 /usr/local/redis 目录下。

gem install redis-3.2.2.gem

又报错:
报错

解决办法:缺乏OpenSSL,下载安装。

4.1.二、下载安装OpenSSL

这个问题和zlib的解决方案相似,可类比解决。

cd /usr/local
mkdir openssl
tar -xvf openssl-1.0.2n.tar.gz 
./config -fPIC --prefix=/usr/local/openssl enable-shared
./config -t
make && make install

安装成功:
安装成功

4.1.三、编译ruby中的openssl
cd /usr/local/ruby/ruby-2.5.0/ext/openssl/
ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib
make

报错:
报错

解决办法:vim Makefile 把全部的 $(top_srcdir) 换成 ../.. 注意替换全部
解决办法

make && make install

安装成功:
安装成功

而后回到安装 redis-3.2.2.gem ,在redis目录下安装。

gem install redis-3.2.2.gem

安装成功:
安装成功

五、启动一个集群

cd /usr/local/redis/redis-4.0.7/src
./redis-trib.rb create --replicas 1 192.168.80.230:7000 192.168.80.230:7001 192.168.80.230:7002 192.168.80.231:7003 192.168.80.231:7004 192.168.80.231:7005

启动成功:
启动成功

而后测试一下集群:
随便链接一个节点:

./redis-cli -h 192.168.80.231 -p 7005 -c
链接成功以后:
set test1 'test001' 

测试

而后再链接另一个节点:

./redis-cli -h 192.168.80.230 -p 7002 -c
get test1

测试

集群的操做

可使用可视化工具查看和管理redis集群。

一、建立一个集群

./redis-trib.rb create --replicas 1 192.168.80.230:7000 192.168.80.230:7001 192.168.80.230:7002 192.168.80.231:7003 192.168.80.231:7004 192.168.80.231:7005
 建立集群

二、链接集群

cd /usr/local/redis/redis-4.0.7/src
./redis-cli -p 7003 -c -h 192.168.80.231

参数说明: -p port 端口 -h host 主机 -c cluster 集群

链接进集群以后 输入ping , 若是响应了pong 表示链接集群成功:
响应

链接进集群以后能够查看当前集群的信息和节点的信息
CLUSTER INFO 列出当前节点的信息
列出当前节点

CLUSTER NODES 列出当前集群中的节点信息
当前节点信息

前面一段很长的字符串就是节点的id。从这个命令能够知道哪些节点还活着,哪些节点已经挂了。端口后面带着fail的都是挂掉的节点。

三、关闭一个节点

退出集群链接才能关闭某一个节点:

./redis-cli -c -h 192.168.80.230 -p 7000 shutdown

这条命令的意思是关闭230机器上端口为7000的redis节点。
关闭以后能够链接集群去执行 CLUSTER NODES ,这个节点的状态已是fail。

四、节点加入、移出集群

添加一个节点以前务必保证该节点已经启动了,若是该节点以前在建立集群时已经在集群里面了,关闭该节点而后再从新启动,该节点会自动加入集群。

./redis-server ../redis_cluster/7000/redis.conf

而后链接进集群,若是该节点以前不在集群中,链接集群输入cluster meet 命令就能够指定某个节点加入集群。

CLUSTER MEET 192.168.80.230:7000
CLUSTER forget fd72b78b1eaa430ca309bc5226d90fe67199a576

这个一长段字符串是节点的id,forget以后能够再去看节点的信息。
节点信息

forget以后,若是一分钟不进行任何操做,该节点会自动加入集群。