Redis集群架构说明及搭建
前言
前面文章介绍了Redis的安装、持久化策略及主从复制,本文对Redis集群进行说明,并进行集群环境的搭建。
一、Redis集群的架构特点
- 所有的redis节点彼此互联,节点的fail是通过集群中超过半数的节点检测失效时才生效.
思考:根据其特点可想到Redis搭建时,数量起码有3个,才能支持节点之间的检测
- 存取数据时连接任一节点都可以,但集群中有一个节点fail整个集群都会fail
思考:为何有一个节点fail整个集群都会fail?
答:Redis 集群中内置了 16384 个哈希槽,当需要在Redis 集群中放置一个 key-value 时,redis 先对 key 使用crc16 算法 算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
二、Redis集群搭建
根据上文中Redis集群架构特点,选择搭建3主3从共6个的Redis集群,在每个主Redis节点下配置1个备份节点,防止主Redis宕机后备份节点可以替补上去,实现高可用。
1.安装ruby环境
提示:搭建集群需使用ruby脚本,需先安装ruby环境:
命令如下:
cd /usr/upload
yum install ruby
yum install rubygems
gem install redis-3.0.0.gem
cd /usr/upload/redis-3.0.0/src
ll *.rb
2.拷贝6个节点(Redis)
提示:若对已使用过的Redis进行复制,需先删除dump.rdb文档和appendonly.aof文档删除数据,未使用过的则无需进行该操作
命令如下:
#删除redis数据
cd /usr/local/redis/bin
rm -f dump.rdb
rm -f appendonly.aof
提示:该操作需进行6次,记得修改存储redis文件夹的名称
cd /usr/local
mkdir redis-cluster
cp -r redis redis-cluster/redis-7001
操作完成后,文件的目录结构如下:
3.修改配置文件
提示:该操作需进行6次,端口号和文件夹对应
命令如下:
vim /usr/local/redis-cluster/redis-7001/bin/redis.conf:
port 7001
cluster-enable yes
4.创建启动脚本及关闭脚本
提示:在redis-cluster目录下创建统一的执行脚本,方便启动,无需将其设为开机自启
命令如下:
vim /usr/local/redis-cluster/bin/start-all.sh
#在启动脚本文件中编写如下内容
cd /usr/local/redis-cluster/redis-7001/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7002/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7003/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7004/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7005/bin
./redis-server redis.conf
cd /usr/local/redis-cluster/redis-7006/bin
./redis-server redis.conf
vim /usr/local/redis-cluster/bin/shutdown-all.sh
#在关闭脚本文件中编写如下内容
cd /usr/local/redis-cluster/redis-7001/bin/
./redis-cli -p 7001 shutdown
cd /usr/local/redis-cluster/redis-7002/bin/
./redis-cli -p 7002 shutdown
cd /usr/local/redis-cluster/redis-7003/bin/
./redis-cli -p 7003 shutdown
cd /usr/local/redis-cluster/redis-7004/bin/
./redis-cli -p 7004 shutdown
cd /usr/local/redis-cluster/redis-7005/bin/
./redis-cli -p 7005 shutdown
cd /usr/local/redis-cluster/redis-7006/bin/
./redis-cli -p 7006 shutdown
5.使用ruby脚本创建Redis集群
命令如下:
#进入ruby脚本所在目录
cd /usr/upload/redis-3.0.0/src
#创建Redis集群
./redis-trib.rb create --replicas 1 192.168.175.134:7001 192.168.175.134:7002 192.168.175.134:7003 192.168.175.134:7004 192.168.175.134:7005 192.168.175.134:7006
6.测试
启动start-all.sh脚本,查看redis进程如图所示:
进入端口为7001的redis客户端,并查看集群节点信息,如图所示:
#命令如下:
cd /usr/local/redis-cluster/redis-7001/bin
./redis-cli -p 7001
cluster nodes
执行统一关闭脚本
cd /usr/local/redis-cluster/
./shutdown-all.sh
总结
本文简单介绍了Redis集群架构的特点,并较为详细地展示了Redis集群的搭建过程。