首先了解一下redis集群架构知识,
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
所以要想超过半数,redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。所以redis集群至少需要6台服务器。为了我们虚拟机的性能,6台虚拟机开销有点太大,so,我们可以选择搭建伪分布式。可以使用一台虚拟机运行6个redis实例。这里我们设置这6台redis的端口号为7001-7006。
我们接着上篇单机版安装的那台机器下,继续搭建集群,废话不多说,开始。。。
1、在/usr/local目录下创建redis-cluster目录用来存放集群,
将之前单机版安装好的 redis拷贝一份到节点一目录下(redis-cluster/redis01)
2、复制好后进入节点一目录中,删除复制来的redis单机版缓存文件
3、修改redis.conf配置文件,将端口设置为7001,后边的节点端口号以此类推到7006
4、再将此配置件的如下配置注释,打开集群模式,保存退出
5、将节点一复制出5份出来,作另外5个节点,并依次修改端口号
6、创建批处理文件,启动所有节点
7、将如下命令写到批处理文件中,保存退出
8、给批处理文件添加可执行权限后执行脚本,执行成功后,使用ps 命令可以查看6个节点是都启动好了,如下图可以看到6个进程已经全部启动
9、因为启动集群需要执行ruby脚本,所以先安装ruby,yum安装的ruby版本太低,所以我们去网上下载一个2.5.1的包,
上传到Linux上安装
10、解压ruby安装包
11、配置到指定文件夹,
12、编译安装
13、安装成功后,删除就的ruby快捷方式并重新创建新的快捷方式,最后查看ruby版本,ruby安装成功
14、ruby安装好之后把我们下载好的redis-4.0.1.gem包上传到Linux
15、使用gem 命令执行脚本文件
16、脚本执行完成后,在src中可以找到执行后的文件
17、确保有redis-trib.rb文件,继续
18、拷贝src中redis-trib.rb文件到集群目录下,然后执行下边这条命令,着实有点长,复制吧。。。
./redis-trib.rb create --replicas 1 192.168.58.144:7001 192.168.58.144:7002 192.168.58.144:7003 192.168.58.144:7004 192.168.58.144:7005 192.168.58.144:7006
19、执行完毕。集群搭建完成,集群中有6个节点,3个主节点,每个主节点一个备份节点
到此redis伪分布式集群搭建完毕。。。接下来进行集群连接测试。有兴趣的同学可以看下一篇文章!