Redis应用--Redis-cluster集群部署

网友投稿 870 2022-05-30

一、简述

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集群创建,在此不再赘述、

Redis应用--Redis-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去创建集群.

Redis

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ROS2编程基础课程--arguments
下一篇:【案例测试一】ndk_client的功能案例测试| 基于TI KeyStone TMS320C665557开发板
相关文章