一、集群常识
1.redis在3.0之前是集群,仅支持单实例的,3.0以后开始支持集群。
2.3.0的集群命令也不是那么亲和,需要用ruby编写的脚本(而且需要登录redis客户端操作),启动、增删节点、移动槽位等。redis-5.0以后,可以使用比较亲和的redis-cli --cluster 不需要登录客户端,直接可以进行各种操作(前提:集群模式已开启)。
3.redis集群是没有统一的入口的,不存在中心节点或者代理节点,通过#redis-cli -c - h -p 登录任一客户端后,集群客户端各节点数据可以互通,(默认会开启梦游模式,你要的数据,我没有,但是我可以告诉你哪台机器有并且给你跳转到那台机器,并返回你要的数据)。
4.对于事务的支持,仅支持被Hashtag统一前缀{}后的key(这些统一前缀的key会落到同一组主从机器)上的数据,才可以支持事务,如果是普通key散列到不同的主从上是不支持事务的。
5.redis集群为了达到高可用,会考虑到宕机,那么里面有个投票机制,需要一半以上的投票认为某台master宕机了(哨兵也是这个机制),然后推举新的slave为master。2台机器,投票方式只有1:1和0:2(对于过半这条要求,2台有些牵强),所以,集群的搭建至少是3台master。又因为集群要求1个master至少有一个小弟slave,那么一个集群至少需要6台redis实例。
6.Redis 集群引入了槽位的概念,整个集群共有哈希槽位16384个。假如集群中有三对主从,也就是三个节点,称作A节点、B节点、C节点,那么默认槽位是平均分配的。
节点 A 包含 0 到 5500号哈希槽.
节点 B 包含5501 到 11000 号哈希槽.
节点 C 包含11001 到 16384号哈希槽.
槽位的移动,不会造成数据丢失,但是,如果某个节点的主从全部宕机,那么整个节点所对应槽位中的数据将会暂时全部丢失(不可访问),直到节点被恢复正常。
好了,了解了这些知识点后,做到心中不慌,下面跟随我一起愉快的玩耍吧,开启梦游之旅………
意犹未尽,如需了解更多,点击redis英文官网、redis中文官网,进入后点击文档进行查看。
二、准备工作
1.redis的安装部署
点击CentOS7.9+Redis6.2.6、CentOS6.5+Redis5.0.4协助部署,这两个版本均可,不影响步骤。
2.从熟悉redis解压目录结构到README
#cd /usr/src/redis-5.0.4/ && ls 进入redis解压目录,并查看目录列表
#cd utils && ls 查看utils下的目录结构
#cd create-cluster && ls 查看集群命令所在目录的结构
#vim README 学会看这个文件,你就基本学会了走路,它很重要!
创建步骤:
1.编辑绿色的create-cluster可执行文件,修改里的端口,默认是30000,本案例暂不修改。
2.使用./create-cluster start命令,自动依次启动30001-30006,六个redis实例(默认就好)
3.使用./create-cluster create命令,自动依次创建一个redis集群(把6个实例组合一起)
4.此刻集群已经创建并准备完毕,可以发现rdb和aof文件已经在当前命令执行目录自动创建
关闭步骤:
1. 使用./create-cluster stop命令后,所有实例会自动关闭,如需重启集群,使用./create-cluster start即可 (英文帮助信息也挺苦口婆心的,如果你改变主意的话,O(∩_∩)O哈哈~)
2./create-cluster clean 会自动移除所有的aof日志,返还你一个纯净的运行环境
英文的一看就懵,给你大白话翻译一下,是不是很prefect,还是看不懂,表要紧,go on !
最后意犹未尽,可以返还此处,回味一下哦……
3.跟随README的旨意,看一下create-cluster脚本
#vim create-cluster 查看这个绿色的可执行文件(它也是操作集群的一个命令)
PORT=30000 集群的默认端口,这里可以不用修改
TIMEOUT=2000 超时时间,超时后集群要搞些事情,比如选举新的master
NODES=6 集群最少要求,要配置6个节点(默认即可)
REPLICAS=1 为集群中的每个主节点创建1个从节点。在NODES节点是6的前提下:
如果REPLICAS=1 配置为1,意味着一个主只跟1个从(一套主从两台机器),这个集群中会有3套主从。
如果REPLICAS=2 配置为2,意味着一个主只跟2个从(一套主从三台机器),这个集群中会有2套主从。明显,集群不建议这么做,一个集群被要求最少要有3个master。
以上配置文件看一下就可以,学习节点,可以不用修改
好了,跟随README的旨意,我们继续吧!没想象的那么难 ^_^
三、方法一:用集群命令create-cluster create 开启集群(系统自动指定redis实例)
1.启动集群create-cluster start
#pwd 查看当前目录的位置
/usr/src/redis-5.0.4/utils/create-cluster
#ls
create-cluster README
#./create-cluster start 使用当前目录的命令,创建并启动集群, 看到6个redis实例跑起来了。
Starting 30001
St