本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1.gcc安装
安装redis需要gcc编译,如果没有gcc,则需要在线安装.命令如下
yum install gcc-c++
如果不能联网需要进行离线安装具体详情参考 juejin.cn/post/713801…
2.安装redis
2.1上传redis压缩包到服务器
可以通过rz命令进行上传或者使用xftp进行上传,我是上传到了/home/redis目录下redis目录为自己创建,这个位置可以自己随意放置)
2.2解压文件夹
tar -xvf redis-3.2.1.tar.gz
2.3进入解压后文件目录
cd redis-3.2.1/
2.4 查看是否存在Makefile文件,存在则直接make编译redis源码(如果没有装gcc的话这步不会执行成功)
make
2.5 如下,则编译成功
2.6安装编译后的redis代码到指定目录
make install PREFIX=/usr/local/redis
(PREFIX=/usr/local/redis表示安装redis到指定目录)
2.7查看/usr/local目录,可以发现多了一个redis目录
cd /usr/local
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,这样便将启动方式修改为后台启动了
然后保存修改并退出
2.10 查看redis是否在运行,指令如下
ps aux|grep redis
3.集群搭建
3.1 在装好的redis目录(/usr/local/redis)下新建一个redis-cluster目录
3.2 在redis-cluster目录下建6个文件夹如7000.7001.7002.7003.7004.7005
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
安装好以后,我们到之前解压的文件/home/redis/redis-3.2.1/src目录下找到文件redis-trib.rb,如图所示
3.6 将该文件拷贝到与6个文件夹的同级目录下(/usr/local/redis/redis-cluster)
cp /home/redis/redis-3.2.1/src/redis-trib.rb /usr/local/redis/redis-cluster
在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>’
这错误是因为缺少redis和ruby的接口,我们需要安装对应的Redis的Rbuy接口包。
我们可以直接去官网下载rubygems.org/gems/redis/
下载后上传到服务器当中
安装
gem install redis-3.3.0.gem
结果又报错,这是因为需要依赖zlib工具,我们需要再安装zlib才行
下载zlib
http://www.zlib.net
下载完成后,上传到服务器(/home/zlib我存放的路径),然后解压文件
tar -xvf zlib-1.2.11.tar.gz
进入解压后的目录
cd zlib-1.2.11/
进行安装
./configure --prefix=/usr/local/zlib //设置安装路径
编译
make
然后执行
make install
------------------至此zlib安装完成---------------------
安装完zlib之后,在/home/ruby/ruby-2.2.3/ext/zlib/目录下执行
ruby extconf.rb
又报错
这个是要将文件安装到本地运行库的里面才行
重新输入命令
ruby extconf.rb --with-zlib-include=/usr/local/zlib/include/ --with-zlib-lib=/usr/local/zlib/lib
备注:/usr/local/zlib是我的zlib安装目录
执行
make && make install
安装完成后回到redis的gem目录下,
cd /home/redis_gem/
继续执行命令:
gem install redis-3.3.0.gem
又出现了错误,我们还需要安装OpenSSL
OpenSSL下载地址 www.openssl.org/source/
把下载下来的上传到服务器目录/home/openssl,然后解压安装包
tar -xvf openssl-1.0.2r.tar.gz
进入解压后的目录
cd openssl-1.0.2r/
执行
./config -fPIC --prefix=/usr/local/openssl enable-shared
然后执行
./config -t
然后执行
make && make install
出现上述内容说明安装成功
然后到Ruby解压的源码/home/ruby/ruby-2.2.3目录下的ext/openssl 目录,如图所示
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类似的错误
打开Makefile文件,将$(top_srcdir)全部改成../..
sed -i 's/\$(top_srcdir)/\..\/../g' Makefile
修改完以后再执行
make && make install
如上图说明安装成功了,然后我们再回到之前redis目录下执行命令:
gem install redis-3.3.0.gem
----------------------到此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
发现又报错了。。。
检查了一下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
发现终于成功了
3.8Redis集群测试
我们来测试一下Redis集群,看是否搭建成功,通过连接任一redis端口,添加数据
我们进入redis的安装目录
cd /usr/local/redis/bin
./redis-cli -h 192.168.56.101
我们从7000上发送的内容跳转到了7001上至此说明集群搭建成功