要想搭建一个最简单的 Redis 集群,那么至少需要 6 个节点:3 个 Master 和 3 个 Slave。为什么需要 3 个 Master 呢?如果你了解过 Hadoop/Storm/Zookeeper 这些的话,你就会明白一般分布式要求基数个节点,这样便于选举(少数服从多数的原则)。
这里,我将采用一种 "偷懒" 的方式,在一个 Linux 虚拟机上搭建 6 个节点的 Redis 集群。(因为开启 6 个 Linux 虚拟机,我的电脑完全扛不住)
实际上,思路很简单,我将在一台节点上开启 6 个 Redis 实例,并且这 6 个 Redis 各自有自己的端口。这样的话,相当于模拟出了 6 台机器了。然后在以这 6 个实例组建 Redis 集群就可以了。
第一步:为这 6 个实例创建好各自存放的目录
第二步:既然是要启动 6 个 Redis 实例,自然需要准备各自的配置文件
具体来说,需要注意下:由于在一台机器(192.168.99.121)上,因此每个实例应该有不同的端口;同时,每个实例显然会有自己的存放数据的地方;开启 AOF 模式;开启集群配置;开启后台模式;
第三步:实际上,Redis 集群的操作在后文你可以看到是通过 Ruby 脚本来完成的,因此我们需要安装 Ruby 相关的 RPM 包,以及 Redis 和 Ruby 的接口包。
第四步:让 Redis 集群工作起来!
接下来,我们要通过 Ruby 脚本来创建集群了。
- [root@mydream121 bin]# ./redis-trib.rb create --replicas 1 192.168.99.121:8001 192.168.99.121:8002 192.168.99.121:8003 192.168.99.121:8004 192.168.99.121:8005 192.168.99.121:8006
首先,我们来看一下创建集群命令中 --replicas 1,这个代表什么意思呢?1 其实代表的是一个比例,就是主节点数 / 从节点数的比例。那么想一想,在创建集群的时候,哪些节点是主节点呢?哪些节点是从节点呢?答案是将按照命令中 IP:PORT 的顺序,先是 3 个主节点,然后是 3 个从节点。这一点可以通过上面的 2 张图片印证。
其次,注意到图中 slot 的概念。slot 对于 Redis 集群而言,就是一个存放数据的地方,就是一个槽。对于每一个 Master 而言,会存在一个 slot 的范围,而 Slave 则没有。在 Redis 集群中,依然是 Master 可以读、写,而 Slave 只读。数据的写入,实际上是分布的存储在 slot 中,这和以前 1.X 的主从模式是不一样的(主从模式下 Master/Slave 数据存储是完全一致的),因为 Redis 集群中 3 台 Master 的数据存储并不一样。这一点将在后续的实验中得到验证。
第五步:验证 Redis 集群搭建是否成功
到这里,Redis 集群的搭建就完毕了,See U~
来源: http://www.bubuko.com/infodetail-1965634.html