redis-cluster搭建&初步体验
2020-01-15 09:59
141 查看
环境:
RedHat6---Linux 2.6.32-279.el6.x86_64
redis-3.0.3
目的:
看看除了codis以外的集群方案怎么样,官方版本应该会一直维护,redis-cluster的介绍参考官方文档http://redis.io/topics/cluster-spec
前期准备:
创建cluster需要rubygems,这里一起放上RH6需要的rpm包名,如果能直接yum安装自然是最方便
openssl-1.0.1e-30.el6.x86_64
ruby-1.8.7.374-4.el6_6.x86_64
ruby-libs-1.8.7.374-4.el6_6.x86_64
ruby-rdoc-1.8.7.374-4.el6_6.x86_64
ruby-irb-1.8.7.374-4.el6_6.x86_64
rubygems-1.3.7-5.el6.noarch
rpm包安装好以后,一定要记得执行命令:gem install redis
搭建过程:
1.安装redis-3.0.3
redis的官网下载即可,使用tar zxvf命令解压,然后make && make install就ok了
2.修改redis.conf文件
需要修改的内容如下
3.创建至少六个redis实例
方法一:把redis.conf拷贝成redis7000.conf ~ redis7005.conf,修改端口号(和pid文件路径)
方法二:拷贝redis目录为redis-3.0.3-7000 ~ redis-3.0.3-7005,修改端口号(和pid文件路径)(测试用的这种方式)
4.分别启动六个redis实例
特别需要注意,在redis-3.0.3这个版本,如果只是启动redis-server而不带上配置文件,则会按照内置配置启动,不会去读目录下的redis.conf的内容
nohup ./src/redis-server ./redis.conf &
5.使用ruby脚本创建cluster
命令:./src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
PS:./src/redis-trib.rb help 可以看到命令的介绍;create就是创建cluster,--replicas 1代表每个cluster的Master至少包含一个slave,后面跟上加入到cluster的redis实例
如果没有问题,会有如下输出,中间输入一下yes
使用redis-cli登录到任意一个redis实例都可以看到cluster的信息,最前面是NodeID,然后是IP:PORT,M/S,0-5460是slot的范围,其他的暂时没有太仔细研究,
尝试一下shutdown端口为7005的slave实例,看看nodes的信息,7005已经被标记为fail
那么再试试启动这个实例
重新启动的实例再次进入了cluster,那么试试shutdown端口为7001的Master实例,发现新的7004被选举为Master,重启以后,7001以slave的身份加入cluster
那么问题来了,cluster启动是没问题,但是那个ruby脚本并没有提供关闭集群的方法,仔细观察help的话,可以发现脚本提供了add和del的方式来调整集群,在正常情况下应该是能满足使用了
如果要关闭cluster,最简单粗暴的办法就是关闭所有实例,不过这些实例启动之后,cluster的信息还在,启动以后又会自动加入cluster
假设有新需求需要重新配置cluster,但是又不想用add和del的方式,怎么办?
在redis-cli内使用cluster reset命令,就能清除某个redis实例保存的cluster信息了~之后就可以随意修改了~
---------------------------------------------------------------------------------------------华丽的分割线-------------------------------------------------------------------------------------------------------------
个人翻译和理解
简单的写一点redis-cluster官方文档里面的一些重点:
1.redis-cluster会丢失数据,指的是当某一个Master进行操作的时候,Master会主动扩散这个write操作,然而当Master本身完成了write,但是在扩散write操作之前就挂了,且在Node-TimeOut的时间之内没有恢复,那么这个write操作就丢了。
2.redis-cluster的failover会在1-2秒内完成Master选举和标记fail实例,但是这是在经过Node-TimeOut的时间,判断为fail之后,即redis-cluster的failover消耗的时间实际上为Node-TimeOut+(1-2秒)
3.其他的没什么明显的印象,再研究研究
RedHat6---Linux 2.6.32-279.el6.x86_64
redis-3.0.3
目的:
看看除了codis以外的集群方案怎么样,官方版本应该会一直维护,redis-cluster的介绍参考官方文档http://redis.io/topics/cluster-spec
前期准备:
创建cluster需要rubygems,这里一起放上RH6需要的rpm包名,如果能直接yum安装自然是最方便
openssl-1.0.1e-30.el6.x86_64
ruby-1.8.7.374-4.el6_6.x86_64
ruby-libs-1.8.7.374-4.el6_6.x86_64
ruby-rdoc-1.8.7.374-4.el6_6.x86_64
ruby-irb-1.8.7.374-4.el6_6.x86_64
rubygems-1.3.7-5.el6.noarch
rpm包安装好以后,一定要记得执行命令:gem install redis
搭建过程:
1.安装redis-3.0.3
redis的官网下载即可,使用tar zxvf命令解压,然后make && make install就ok了
2.修改redis.conf文件
需要修改的内容如下
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
(个人建议顺便改了)pidfile /var/run/redis-7000.pid3.创建至少六个redis实例
方法一:把redis.conf拷贝成redis7000.conf ~ redis7005.conf,修改端口号(和pid文件路径)
方法二:拷贝redis目录为redis-3.0.3-7000 ~ redis-3.0.3-7005,修改端口号(和pid文件路径)(测试用的这种方式)
4.分别启动六个redis实例
特别需要注意,在redis-3.0.3这个版本,如果只是启动redis-server而不带上配置文件,则会按照内置配置启动,不会去读目录下的redis.conf的内容
nohup ./src/redis-server ./redis.conf &
5.使用ruby脚本创建cluster
命令:./src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
PS:./src/redis-trib.rb help 可以看到命令的介绍;create就是创建cluster,--replicas 1代表每个cluster的Master至少包含一个slave,后面跟上加入到cluster的redis实例
如果没有问题,会有如下输出,中间输入一下yes
使用redis-cli登录到任意一个redis实例都可以看到cluster的信息,最前面是NodeID,然后是IP:PORT,M/S,0-5460是slot的范围,其他的暂时没有太仔细研究,
尝试一下shutdown端口为7005的slave实例,看看nodes的信息,7005已经被标记为fail
那么再试试启动这个实例
重新启动的实例再次进入了cluster,那么试试shutdown端口为7001的Master实例,发现新的7004被选举为Master,重启以后,7001以slave的身份加入cluster
那么问题来了,cluster启动是没问题,但是那个ruby脚本并没有提供关闭集群的方法,仔细观察help的话,可以发现脚本提供了add和del的方式来调整集群,在正常情况下应该是能满足使用了
如果要关闭cluster,最简单粗暴的办法就是关闭所有实例,不过这些实例启动之后,cluster的信息还在,启动以后又会自动加入cluster
假设有新需求需要重新配置cluster,但是又不想用add和del的方式,怎么办?
在redis-cli内使用cluster reset命令,就能清除某个redis实例保存的cluster信息了~之后就可以随意修改了~
---------------------------------------------------------------------------------------------华丽的分割线-------------------------------------------------------------------------------------------------------------
个人翻译和理解
简单的写一点redis-cluster官方文档里面的一些重点:
1.redis-cluster会丢失数据,指的是当某一个Master进行操作的时候,Master会主动扩散这个write操作,然而当Master本身完成了write,但是在扩散write操作之前就挂了,且在Node-TimeOut的时间之内没有恢复,那么这个write操作就丢了。
2.redis-cluster的failover会在1-2秒内完成Master选举和标记fail实例,但是这是在经过Node-TimeOut的时间,判断为fail之后,即redis-cluster的failover消耗的时间实际上为Node-TimeOut+(1-2秒)
3.其他的没什么明显的印象,再研究研究
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29510932/viewspace-1788524/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29510932/viewspace-1788524/
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- redis-cluster体验之初步功能测试
- Redis 学习笔记(十四)Redis Cluster介绍与搭建
- Redis集群环境搭建-cluster模式
- redis实战--redis cluster的架构搭建
- docker redis 集群(cluster)搭建
- redis集群搭建之一~使用utils/create-cluster方法
- Redis进阶实践之十一 Redis的Cluster集群搭建
- Redis3.0 Cluster集群的搭建与实践
- Redis-Cluster集群搭建及配置
- redis3.2集群搭建cluster模式,ruby
- 使用redis4.0.1和redis-cluster搭建集群并编写重启shell脚本
- redis实战第七篇 使用redis工具(redis-cli)搭建redis cluster
- Redis Cluster 3.0搭建与使用
- Redis cluster集群:原理及搭建
- Redis-Cluster 集群搭建(三主三从)
- Linux系统搭建Redis集群(redis-cluster)
- redis配置与cluster集群的搭建
- redis-cluster搭建
- SpringDataRedis与Redis Cluster 搭建
- Redis3.2.4 Cluster集群搭建