redis集群搭建
在开始redis集群搭建之前,我们先简单回顾一下redis单机版的搭建过程
1.环境配置
Redis是c开发的,因此安装redis需要c语言的编译环境,即需要安装gcc
gcc -v
如果没有gcc,则需要在线安装.命令如下
yum install gcc-c++
2.redis安装步骤
2.1上传redis压缩包到服务器
2.2 解压redis压缩包,解压命令如下tar zxf redis-xxx.tar.gz
2.3 进入到redis-3.0.0目录下
2.4 进入redis目录后,ls打开目录下文件,如下所示:
2.5 查看是否存在Makefile文件,存在则直接make编译redis源码
2.6 如下,则编译成功
2.7 安装编译后的redis代码到指定目录,一般存放于/usr/local下的redis目录,指令如下 make install PREFIX=/usr/local/redis
查看/user/local目录,可以发现多了一个redis目录
2.8 查看redis目录下的bin目录里面的文件,如下
2.9 至此,可以启动redis了,默认启动模式为前端启动,指令如下 ./redis-server
2.10 前端启动的话,如果客户端关闭,redis服务也会停掉,所以需要改成后台启动redis.
具体做法分为两步 -> 第一步:将redis解压文件里面的redis.conf文件复制到当前目录,指令如下 cp ~/redis-3.0.0/redis.conf .
第二步:修改redis.conf文件,将daemonize no -> daemonize yes,这样便将启动方式修改为后台启动了
vim redis.conf
然后保存修改并退出,指令如下(四步操作)
Esc -> : -> wq -> Enter(回车)
2.11 启动redis -> 后台启动
./redis-server redis.conf
2.12 查看redis是否在运行,指令如下 ps aux|grep redis
综上redis单机版安装启动完成。
下面就是redis集群搭建
二、集群搭建需要的环境
2.1 Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。
2.2 要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。因为我没有那么多服务器,也启动不了那么多虚拟机,所在这里搭建的是伪分布式集群,即一台服务器虚拟运行6个redis实例,修改端口号为(7001-7006),当然实际生产环境的Redis集群搭建和这里是一样的。
三、集群搭建具体步骤如下(注意要关闭防火墙)
3.1 在usr/local目录下新建redis-cluster目录,用于存放集群节点
3.2 把redis目录下的bin目录下的所有文件复制到/usr/local/redis-cluster/redis01目录下
cp -r redis/bin/ redis-cluster/redis01
3.3 删除redis01目录下的快照文件dump.rdb,并且修改该目录下的redis.cnf文件,具体修改如下
标色的为必须修改的配置:
port 7000 // 端口号
bind 192.168.249.66 // ip 修改为当前机器的ip
daemonize yes // 开启守护进程
dir "/opt/redis-5.0.4/cluster-test/data" // 集群的工作目录
logfile "/opt/redis-5.0.4/cluster-test/log/cluster-7000.log" // 日志文件
dbfilename "dump-7000.rdb"
cluster-enabled yes // 启用集群功能
cluster-config-file nodes-7000.conf // 集群配置文件的名字
cluster-require-full-coverage no // #redis cluster需要16384个slot都正常的时候才能对外提供服务,换句话说,只要任何一个slot异常那么整个cluster不对外提供服务。 因此生产环境一般为no
cluster-node-timeout 5000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
3.4 将redis-cluster/redis01文件复制5份到redis-cluster目录下(redis02-redis06),创建6个redis实例,模拟Redis集群的6个节点。然后将其余5个文件下的redis.conf里面的端口号分别修改为7002-7006。分别如下图所示:
创建redis02-06目录
分别修改redis.conf文件端口号为7002-7006
3.5 接着启动所有redis节点,由于一个一个启动太麻烦了,所以在这里创建一个批量启动redis节点的脚本文件,命令为start-all.sh,文件内容如下:
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..
3.6 创建好启动脚本文件之后,需要修改该脚本的权限,使之能够执行,指令如下:
chmod +x start-all.sh
3.7 执行start-all.sh脚本,启动6个redis节点
要搭建集群的话,需要使用一个工具(脚本文件),这个工具在redis解压文件的源代码里。因为这个工具是一个ruby脚本文件,所以这个工具的运行需要ruby的运行环境,就相当于java语言的运行需要在jvm上。所以需要安装ruby,指令如下:
3.8 安装ruby
yum下载ruby版本太低会导致redis插件安装失败,所以选择rvm安装
rvm介绍
rvm 是一个命令行工具,可以提供一个便捷的多版本 ruby 环境的管理和切换。
1.安装RVM:
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 curl -L get.rvm.io | bash -s stable find / -name rvm -print source /usr/local/rvm/scripts/rvm
2.查看rvm库中已知的ruby版本
rvm list known
3.安装一个ruby版本
rvm install 2.4.1
4.使用一个ruby版本
rvm use 2.4.1
5.设置默认版本
rvm use 2.4.1 - - default
6.卸载已知版本
rvm remove 2.0.0
7.查看ruby版本,安装redis
ruby --version 将下载好的插件放入redis-cluster文件并安装 安装命令如下: gem install redis-4.0.3.gem
3.9 上一步中已经把ruby工具所需要的运行环境和ruby包安装好了,接下来需要把这个ruby脚本工具复制到usr/local/redis-cluster目录下。那么这个ruby脚本工具在哪里呢?之前提到过,在redis解压文件的源代码里,即redis/src目录下的redis-trib.rb文件。
如果找不到可以查找 命令如下
# find -name redis-trib.rb 3.10 将该ruby工具(redis-trib.rb)复制到redis-cluster目录下,指令如下:cp redis-trib.rb /usr/local/redis-cluster
然后使用该脚本文件搭建集群,指令如下:
./redis-trib.rb create --replicas 1 47.106.219.251:7001 47.106.219.251:7002 47.106.219.251:7003 47.106.219.251:7004 47.106.219.251:7005 47.106.219.251:7006
注意:此处大家应该根据自己的服务器ip输入对应的ip地址!
至此,Redi集群搭建成功!大家注意最后一段文字,显示了每个节点所分配的slots(哈希槽),这里总共6个节点,其中3个是从节点,所以3个主节点分别映射了0-5460、5461-10922、10933-16383solts。3.11 最后连接集群节点,连接任意一个即可:
redis01/redis-cli -h 172.17.214.86 -p 7001 -c
最后,加上两条redis集群基本命令:
1.查看当前集群信息
cluster info 1
2.查看集群里有多少个节点
cluster nodes