Linux下的redis安装以及redis集群的搭建(基于3.2.1版本)

1,905 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1.gcc安装

 安装redis需要gcc编译,如果没有gcc,则需要在线安装.命令如下     

yum install gcc-c++

如果不能联网需要进行离线安装具体详情参考 juejin.cn/post/713801…

2.安装redis

2.1上传redis压缩包到服务器

      可以通过rz命令进行上传或者使用xftp进行上传,我是上传到了/home/redis目录下redis目录为自己创建,这个位置可以自己随意放置)

 4C1DE927-BEC9-496B-A47D-0ED06FBE297B.png

2.2解压文件夹

tar -xvf  redis-3.2.1.tar.gz

   2.3进入解压后文件目录

cd redis-3.2.1/

2.4 查看是否存在Makefile文件,存在则直接make编译redis源码(如果没有装gcc的话这步不会执行成功)  

make

0C2ED790-29C9-4F46-A3A2-82D2D2D0BD19.png

2.5 如下,则编译成功

33EAF53C-66A0-411B-9DD8-8FD8A5D4E5A6.png

2.6安装编译后的redis代码到指定目录           

make install PREFIX=/usr/local/redis

(PREFIX=/usr/local/redis表示安装redis到指定目录)

2.7查看/usr/local目录,可以发现多了一个redis目录

cd /usr/local

276C1CAA-33EA-4E2E-87B0-9241B5897C30.png

2.8 至此redis安装成功

./redis-server

2.9 上述命令启动后,如果客户端关闭,redis服务也会停掉,所以需要改成后台启动redis.

  将redis解压文件里面的redis.conf文件(home/redis/redis-3.2.1/redis.conf)复制到当前目录(/usr/local/redis/bin),指令如下          

cp /home/redis/redis-3.2.1/redis.conf .

修改redis.conf文件

vim redis.conf

将daemonize no改为daemonize yes,这样便将启动方式修改为后台启动了

47B00553-E308-4900-AD4C-E7E7DF88417B.png

然后保存修改并退出

2.10 查看redis是否在运行,指令如下      

ps aux|grep redis

3.集群搭建

3.1 在装好的redis目录(/usr/local/redis)下新建一个redis-cluster目录

52E33FB9-C0B1-4FC7-A75B-1388CB6DBCBA.png

3.2 在redis-cluster目录下建6个文件夹如7000.7001.7002.7003.7004.7005

1C2EA046-F421-417D-83C8-DE1CBAE9888D.png

3.3 分别放入/home/redis/redis-3.2.1/redis.conf文件,并修改对应port为7000-7005

bind 0.0.0.0   //改成你对应的IP

daemonize yes    //redis后台运行

pidfile /var/run/redis_7000.pid    //pidfile文件对应7000 改成每个文件对应的7000-7005

port 7000   //端口7000

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

cluster-config-file nodes.conf    //集群的配置 配置文件首次启动自动生成  改成每个文件对应的7000-7005

cluster-node-timeout 5000   //请求超时 设置5秒够了

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

protected-mode no   //在redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错

3.4 然后在/usr/local/redis目录下执行

./bin/redis-server redis-cluster/7000/redis.conf

./bin/redis-server redis-cluster/7001/redis.conf

./bin/redis-server redis-cluster/7002/redis.conf

./bin/redis-server redis-cluster/7003/redis.conf

./bin/redis-server redis-cluster/7004/redis.conf

./bin/redis-server redis-cluster/7005/redis.conf

3.5 由于Redis集群的操作是通过Ruby脚本来完成的,因此我们需要安装Ruby

参考juejin.cn/post/714044…

安装好以后,我们到之前解压的文件/home/redis/redis-3.2.1/src目录下找到文件redis-trib.rb,如图所示

C73C1F08-AD1F-4604-8EA7-299E9264D7E4.png

3.6 将该文件拷贝到与6个文件夹的同级目录下(/usr/local/redis/redis-cluster)

cp /home/redis/redis-3.2.1/src/redis-trib.rb  /usr/local/redis/redis-cluster

5BE85D78-544B-4C3B-9614-B91AD4864FFF.png

在redis目录下(usr/local/redis)执行命令:

./redis-trib.rb create --replicas 1 192.168.56.101:7000 192.168.56.101:7001 192.168.56.101:7002 192.168.56.101:7003 192.168.56.101:7004 192.168.56.101:7005

如果不成功出现下面问题

问题1

require': cannot load such file -- redis (LoadError) from  /home/cmfchina/ruby/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:inrequire’
from ./redis-trib.rb:25:in `<main>’

D6FD08B1-0BC9-4E31-BD0D-90F286FFB076.png 这错误是因为缺少redis和ruby的接口,我们需要安装对应的Redis的Rbuy接口包。

我们可以直接去官网下载rubygems.org/gems/redis/   

5AA11EFB-BB9F-4287-89A8-448C11571F3D.png 下载后上传到服务器当中

9B984FBA-1D7B-42DF-821B-FE36F7A01390.png

安装

gem install redis-3.3.0.gem

72510327-A33F-4428-9BA6-2BD344E29D08.png

结果又报错,这是因为需要依赖zlib工具,我们需要再安装zlib才行

下载zlib

http://www.zlib.net

06EC2CEC-0E6D-4FA2-8C2B-20992CD89919.png

0A56CE30-6BE8-4772-979F-528AD288790E.png

下载完成后,上传到服务器(/home/zlib我存放的路径),然后解压文件   

tar  -xvf zlib-1.2.11.tar.gz

进入解压后的目录    

cd zlib-1.2.11/

进行安装   

./configure --prefix=/usr/local/zlib  //设置安装路径

371E44F4-76FC-4991-A4BB-68945DECC302.png

编译

make

918CE0DB-2A06-4D1D-B68F-18F514E56388.png

然后执行

make install

86A666D8-C442-422C-A742-B9982D917FC0.png

------------------至此zlib安装完成---------------------

安装完zlib之后,在/home/ruby/ruby-2.2.3/ext/zlib/目录下执行                 

ruby extconf.rb

又报错

36CB638F-9090-40E2-8B77-7FCB52769E27.png

这个是要将文件安装到本地运行库的里面才行

重新输入命令

ruby extconf.rb  --with-zlib-include=/usr/local/zlib/include/ --with-zlib-lib=/usr/local/zlib/lib

 备注:/usr/local/zlib是我的zlib安装目录

执行

make && make install

36C23C94-8C15-4855-A23C-DA3E8E43F784.png

安装完成后回到redis的gem目录下,        

cd /home/redis_gem/

继续执行命令:

gem install redis-3.3.0.gem

E955410B-5458-4E42-A282-351BF575FB24.png

又出现了错误,我们还需要安装OpenSSL

OpenSSL下载地址 www.openssl.org/source/

32C7720A-BF86-4DE3-A734-3FD112B38854.png

把下载下来的上传到服务器目录/home/openssl,然后解压安装包        

tar -xvf openssl-1.0.2r.tar.gz

进入解压后的目录        

cd openssl-1.0.2r/

执行    

./config -fPIC --prefix=/usr/local/openssl enable-shared

59B907C1-5453-4548-8542-65B9BBE32E23.png

然后执行     

./config -t

A8DD651F-784F-4DC8-B26F-27B4FE23FB64.png

然后执行     

make && make install

9FB150D6-358E-4662-B7C8-FCF4B4BEEBD3.png

出现上述内容说明安装成功

然后到Ruby解压的源码/home/ruby/ruby-2.2.3目录下的ext/openssl 目录,如图所示

794B6F59-B9C0-4F87-BDA3-59AE4C665587.png

 ruby extconf.rb  --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib

备注:/usr/local/openssl是我的openssl安装目录

make && make install

但是我们make的时候,又出现了和zlib类似的错误

F8B82604-00FA-4663-9B50-0105B74A09D5.png

打开Makefile文件,将$(top_srcdir)全部改成../..

sed -i 's/\$(top_srcdir)/\..\/../g' Makefile

修改完以后再执行

make && make install

64A9BBAA-27EF-4318-A849-3DBC2E534C10.png

如上图说明安装成功了,然后我们再回到之前redis目录下执行命令:

gem install redis-3.3.0.gem

9A4964F8-C633-4CEE-9185-B9D248500A51.png

----------------------到此redis终于安装好了然后搭建redis集群----------------

redis5.x版本后安装没有这个复杂,建议使用redis高版本

3.7启动Redis集群

完成以上步骤之后,在redis目录下(/usr/local/redis/redis-cluster)执行命令:

           

./redis-trib.rb create --replicas 1 192.168.56.101:7000 192.168.56.101:7001 192.168.56.101:7002 192.168.56.101:7003 192.168.56.101:7004 192.168.56.101:7005

发现又报错了。。。

6EA5E86C-B336-4B53-A72F-34843E6E2E50.png

检查了一下redis.conf发现IP没有修改,把bind 127.0.0.1 这个IP改成你的虚拟机IP

然后把cluster-enabled yes //开启集群 把注释#去掉然后把之前的进程杀掉 重新启动

然后执行

./redis-trib.rb create --replicas 1 192.168.56.101:7000 192.168.56.101:7001 192.168.56.101:7002 192.168.56.101:7003 192.168.56.101:7004 192.168.56.101:7005

B8FB7202-E355-498C-A0CC-099B2C363CD9.png          

发现终于成功了

3.8Redis集群测试

 我们来测试一下Redis集群,看是否搭建成功,通过连接任一redis端口,添加数据

 我们进入redis的安装目录       

cd   /usr/local/redis/bin

./redis-cli -h 192.168.56.101 

image.png

我们从7000上发送的内容跳转到了7001上至此说明集群搭建成功