Redis应用--Redis-cluster集群部署
一、简述
- Redis经过快速的更新迭代已经到了6.0版本,在redis3.0的时代,加入了cluster集群的原生功能。本文不去介绍和对比主从、哨兵、cluster这三种之间的差异和为什么要选择cluster,只是简述下我在部署redis-cluster集群的时候一些步骤和碰到的一些问题。
- Redis-cluster在经历了3.0/4.0/5.0的更迭之后,已经不需要使用redis-trib.rb命令去创建集群了,改用redis-cli创建,并且修复了一些bug吧,比如redis-4.0.x.gem新增节点之后,不能把已经存储数据的master节点的slot分配给新节点。
- Redis 5.0使用redis-cli作为创建集群的命令,使用c语言实现,不再使用ruby语言,所以可以不用像3.0和4.0时候,为了使用redis-trib.rb命令而安装ruby。不过这篇文章主要以4.0为主,5.0操作和4.0一样,只是创建集群的时候,使用的命令有一些不一样而已。
- 这是我做的一个各种搭建方式的对比:《Redis应用--Redis搭建方式总结》
二、Redis集群部署
1.部署环境
系统环境:centos7.5.1804
服务版本:redis-4.0.14(截止文章发布前最新版本)
注意:演示的集群部署是使用的但台机器部署六台甚至更多redis服务的形式创建的redis集群,正常生产环境需要六台物理机去分别部署每一个redis服务。
2.安装Redis服务
cd /usr/local/src/
wget http://download.redis.io/releases/redis-4.0.14.tar.gz
tar xzf redis-4.0.14.tar.gz
cd redis-4.0.14
make
make install PREFIX=/usr/andy/redis-cluster
cp -a redis.conf /usr/local/redis-cluster/bin/
cp -a /usr/local/redis-cluster/bin/ /usr/local/redis-cluster/redis01
修改redis01/redis.conf配置,可以找到下面相应的配置项进行修改,也可以只保留下面的配置项。
#vim redis01/redis.conf
daemonize yes
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
appendonly yes
#正常应该是ip地址的,不能写回环地址
bind 192.168.180.192
将bin目录复制到六份,一定要修改每一个目录redis配置文件的端口号。
注意:这里bind我用了内网地址,因为此集群部署是在单挑机器模拟的,所以也可以填写127.0.0.1。
3.redis-trib所需的Ruby脚本
# 将创建集群的脚本复制到redis安装目录中
cp -a /usr/local/src/redis-4.0.14/src/redis-trib.rb /usr/local/redis-cluster/
##安装ruby,因为我使用的是redis4.0.14版本,现有的centos服务源中并没有高版本的ruby支持,所以需要先安装其他源
yum install centos-release-scl-rh
yum -y install rh-ruby23
#以下这条命令是进入ruby23的环境中,不使用这个环境的时候可以输入exit命令退出来。
scl enable rh-ruby23 bash
#查看安装的ruby版本
ruby -v
#安装redis-trib.rb运行依赖的ruby的包redis
gem install redis
#安装之后会有如下提示
#Successfully installed redis-4.1.4
#Parsing documentation for redis-4.1.4
#Done installing documentation for redis after 0 seconds
#1 gem installed
4.编写简单的启动Redis脚本
脚本内容如下
#vim start_redis.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 ..
##使用脚本启动redis服务
bash start_redis.sh
## 检查是否启动
ps -ef | grep redis-server |grep -v grep
执行上面命令之后如果redis服务在启动,会有如下内容,这样就能判断redis服务都已经启动了
root 9625 1 0 6月04 ? 00:11:30 ./redis-server 192.168.180.192:7001
root 9760 1 0 6月04 ? 00:11:38 ./redis-server 192.168.180.192:7002
root 9779 1 0 6月04 ? 00:11:49 ./redis-server 192.168.180.192:7003
root 9796 1 0 6月04 ? 00:11:36 ./redis-server 192.168.180.192:7004
root 9854 1 0 6月04 ? 00:11:33 ./redis-server 192.168.180.192:7005
root 9870 1 0 6月04 ? 00:11:34 ./redis-server 192.168.180.192:7006
5.创建集群
注意:redis-trib.rb是redis3和redis4使用的创建cluster的方式,redis5中使用的自带的命令redis-cluster
./redis-trib.rb create --replicas 1 192.168.180.192:7001 192.168.180.192:7002 192.168.180.192:7003 192.168.180.192:7004 192.168.180.192:7005 192.168.180.192:7006
# 使用create命令 --replicas 1 参数表示为每个主节点创建一个从节点,其他参数是实例的地址集合。
以上命令执行完毕之后,在屏幕中有提示创建是否完成,创建完成之后的cluster集群状态。可以看到是三个M的id和其从id和三个S的id和其主id。
在redis5 中创建的方式如下:
cd /usr/local/src/redis-5.0.2/utils/create-cluster
# 启动
./create-cluster start
# 创建
./create-cluster create
# 停止
./create-cluster stop
# 查看状态
./create-cluster watch
##当然redis5中还有一种方式,redis-cli命令创建rediscluster集群和redis4的差不多,有兴趣可以自行百度搜索redis5的cluster集群创建,在此不再赘述、
6.测试集群
./redis-cli -c -h 192.168.180.192 -p 7001
使用以下命令测试会看到设置key的时候,从7001这个redis服务自动切换到7004这个redis服务
7.模拟集群故障
可以试着将一个Master redis服务停掉,然后检查是否有它的从被选举成主。
然后在将停掉的redis服务启动,观察是否会自动加入集群,然后加入集群之后它是mstar还是slave,如果是salve的话,它的master是谁,都可以观察下。
当然还可以添加redis-cluster集群的主从节点,删除redis-cluster主从节点。在此不再去详尽的描述了。可以查看这篇文章Redis Cluster集群
在公司的企业架构出去选项的时候,如果选择了Redis-cluster的话,做决定的时候,就回去定使用多少主从节点。当流量激增等的时候,才会考虑增加节点等内容。
注意:redis4版本添加节点的时候,可能会有命令的问题。可以查看下这篇文章redis 集群新增节点【ERR】 官方文档推荐使用高版本的redis,比如redis5去创建集群.
- 点赞
- 收藏
- 关注作者
评论(0)