Linux中Redis集群离线版安装步骤

  • 安装环境及工具

系统:Red Hat Enterprise Linux Server

工具:XShell5及Xftp5等远程工具

安装包:Ruby-2.4.1及以上

        Rubygems-2.6.12及以上

        Redis-3.2.8及以上(3.x版本才开始支持集群功能)

        Redis-3.0.0-gem及以上(该版本不一定要和redis版本保持一致,只要保证redis-trib.rb能够运行即可)

  • 安装步骤

要搭建一个最简单的Redis集群,我们至少需要6个节点,具体的原理暂不讨论,只说明搭建步骤,我们这里使用两台服务器搭建。

  1. 检查GCC环境

安装redis之前首先检查GCC环境,如果没有安装GCC环境,则需要进行安装,检查GCC是否安装,可以看看版本号,通过命令gcc –v,如果已经安装了GCC,则会显示以下信息

如果没有任何信息,则我们需要通过命令yum install gcc-c++进行在线安装,如果没有网络的时候,我们就需要下载GCC的安装包进行手动安装了,具体方法比较复杂,不在这里说明。

2. 解压编译redis

执行命令cd /usr/local/  ,mkdir redis,创建一个redis目录,将redis压缩包放在redis目录下,执行解压操作,通过命令

tar –xvf redis-3.2.9-tar.gz,解压后如下信息

然后进入到redis-3.2.9目录里,执行命令:make && make install,也可以安装到指定目录,这里如果不指定PREFIX,则默认安装在/usr/local/bin下,保持默认就好。如果没有root权限是无法安装的。

我们获取root权限后再进行安装,安装成功的信息如下:

也可以到/usr/local/bin目录下查看。信息如下:

如果我们安装单机模式,不存在集群功能的话,我们现在就可以将redis运行起来,直接在刚刚解压的Redis目录下运行./redis-server命令就可以将单机的Redis运行起来。

$ cd /home/cmfchina/redis/redis-3.2.9
$ redis-server redis.conf  //所有相关配置信息都在conf里面,如果不设置,默认端口号为:6379

3. 配置Redis集群

由于需要集群,我们需要建立多个节点,一般是建立6个节点,也就对应6个端口,端口号我们可以自行定义,保证唯一性即可。我们可以通过xftp5可视化工具创建3个节点目录。可以建立在root目录下,也可以建立在/etc目录下。也可以通过命令批量创建。可视化工具创建样例如下:

命令创建如下:

上述两个图片是建立6个目录,我们不理睬,我们自己建立三个,建完之后,需要配置各自的redis.conf文件,我们复制一份之前安装生成的redis.conf文件到我现在保留7001-7003这三个目录,复制完文件后,例如我复制一份到7001目录下,现在需要修改这个配置文件,主要修改以下内容:

port 7001    //配置集群的端口,分别是7001、7002、7003

bind 本机的IP    //这里的默认配置是127.0.0.1改为内网ip。

daemonsize yes   //允许redis在后台运行

pidfile  /var/run/redis_7001.pid  //改成和端口一致

cluster-enabled  yes   // 开启集群 把注释去掉

cluster-config-file node_7001.conf  //集群的配置,和端口一致

cluster-node-timeout  15000  // 请求超时,默认为15秒

appendonly  yes // aof日志开启,有需要就开启,每一次写操作都会记录一条日志。

配置完这个文件后,依次复制然后去修改配置文件。修改完这些配置文件以后,我们可以试下是否可以启动服务。依次启动三个节点。

./redis-server  /etc/redis/redis7001/redis.conf

./redis-server  /etc/redis/redis7002/redis.conf

./redis-server  /etc/redis/redis7003/redis.conf

通过命令查看启动情况:

3.1 另一台机器执行同样的操作

另一台机器只安装redis,分配三个端口:7004、7005、7006,看然后修改相应的配置文件。

3.2  安装Ruby环境

3.2.1 下载、安装ruby

通过命令先创建目录,提前下e载好ruby,将ruby拷贝到新建目录下,新建目录的命令如下:mkdir /usr/local/ruby,把包放在该目录下,解压该包,命令如下:tar –vxf ruby-2.5.0.tar.gz

cd ruby-2.5.0/

./configure

make && make install

验证ruby安装是否成功,查看版本执行命令:

ruby –v

 3.2.2 下载安装rubygems

通过命令创建rubygems目录,cd/usr/local,执行mkdir rubygems,把压缩包放在该目录下,解压该包。

tar –vzxf rubygems-2.7.4.tgz(下载不同的压缩包,执行命令的-..f有所不同,按照实际情况执行)

cd rubygems-2.7.4/

ruby setup.rb(执行命令)

执行完该命令后,没有显示报错,那最好了,如果有报错一般是如下:

解决办法:缺少了zlib包,需要下载并安装zlib。

3.2.3 下载安装zlib

  cd /usr/local

  mkdir zlib

  tar –vxf zlib-1.2.11.tar.gz

  ./configure –-prefix=/usr/local/zlib

  make

  make install

3.2.4 编译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 rubygems-2.7.4/

ruby setup.rb(执行命令)

安装成功:

3.2.5 安装ruby-redis插件

下载redis-3.2.2.gem,刚刚安装的rubygems就是为了安装这个插件,把文件放到/usr/local/redis目录下,执行安装命令:

gem install redis-3.2.2.gem

执行完如果不报错,那万事大吉了,如果有报错,那就再解决报错。

解决办法:缺少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

编译ruby中的openssl

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

gem install redis-3.2.2.gem

安装成功。

3.2.6 启动集群

cd /usr/local/redis/redis-3.2.9/src

./redis-trib.rb create –replicas 1 192.168.0.1:7001 192.168.0.1:7002 192.168.0.1:7003 192.168.0.2:7004 192.168.0.2:7005 192.168.0.2:7006

图不重要,重要的是启动命令。

上面标红的选择yes。

然后测试一下集群,随便连接一个节点

./redis-cli –h 192.1686.0.2 –p 7005 –c

连接成功之后:

存值

set myKey “0001”

然后会显示OK

然后再连接另外一个节点取值,

./redis-cli –h 192.1686.0.2 –p 7006 –c

get myKey

会显示“0001”

到此一个集群就创建成功了。

4. 集群后节点操作

通过命令进入集群,./redis-cli –h 192.1686.0.2 –p 7005 –c

,进入集群后输入ping,如果响应了pong,表示集群连接成功。连接进集群之后可以查看当前集群的信息和节点的信息.CLUSTER INFO 列出当前节点的信息

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

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

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

./redis-cli –c –h 192.168.0.2 –p 7000 shutdown

这条命令的意思是关闭2机器上端口为7000的redis节点。.关闭之后可以连接集群去执行 CLUSTER NODES ,这个节点的状态已经是fail。

节点加入、移出集群

添加一个节点之前务必保证该节点已经启动了,如果该节点之前在创建集群时已经在集群里面了,关闭该节点然后再重新启动,该节点会自动加入集群。

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

然后连接进集群,如果该节点之前不在集群中,连接集群输入cluster meet 命令就可以指定某个节点加入集群。

CLUSTER MEET 192.168.0.1:7001

CLUSTER forget fd72b78b1eaa430ca309bc5226d90fe67199a576

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

forget之后,如果一分钟不进行任何操作,该节点会自动加入集群。

Redis集群常见问题汇总

问题1:

   执行命令:./redis-trib.rb 

/usr/local/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- redis (LoadError)from /usr/local/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'from ./redis-trib.rb:25:in `<main>'

解决方法:下载安装rubygem 进入解压包中.configure    make && make install

问题2:

在Redis 4 之后的版本,出于安全考虑,默认只处理本机的请求,如果需要处理除了其他服务器的请求,需要修改上述配置文件的第二个地方。但是在Redis 4之前的版本,例如redis-3.0.0 则不需要手动更改,默认处理所有请求。

如果出现DENIED Redis is running in protected mode because protected mode is enabled这个错误,详细错误如下图,

问题描述所说:只能用本地连接,不能用网络IP,因为处于保护模式。所以只需要更改redis.conf 文件 protected-mode no

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...