了解Redis的配置后就开始搭建集群。redis集群建议最少6个节点,在此之前先明确几个概念。
- 节点/集群节点 对应集群的逻辑节点,是一个进程。通常说的节点就是集群节点。
- 主备节点组/主备集群节点组 一组集群节点的集合,包括一个主节点及至少一个备节点。
- 主机/主机节点 对应一台物理主机或虚拟主机,主机节点上可以有多个集群节点(不建议)。
环境准备
集群架构
硬件参数
先准备部署redis的硬件,以下是服务器参数。
参数 | 值 |
---|---|
CPU | 8 core Intel(R) Xeon(R) CPU E7-4860 @ 2.27GHz |
内存 | 16G |
磁盘 | 128G |
OS | **Centos7 ** |
节点规划
主机名 | IP地址 | 端口 | 备注 |
---|---|---|---|
ma | 10.128.31.104 | 7000 | 主节点a |
mb | 10.128.31.105 | 7000 | 主节点b |
mc | 10.128.31.106 | 7000 | 主节点c |
sa | 10.128.31.107 | 7001 | 从节点a |
sb | 10.128.31.108 | 7001 | 从节点b |
sc | 10.128.31.109 | 7001 | 从节点c |
Redis版本
当前redis稳定版本号3.2.6, 因此以3.2.6版本搭建集群。
安装Redis
下载Redis
在用户根目录下创建目录并下载redis3.2.6
1 | mkdir ~/redis |
编译Redis
1 | tar –zxvf redis-3.2.6.tar.gz |
安装Redis
1 | make install |
注:在每台主机都需要安装Redis Server。
安装集群工具
安装epel源
1 | yum -y install epel-release |
安装ruby环境,部署工具是使用ruby编写的。
1 | yum -y install rubygems-devel |
更换ruby国内安装源
1 | gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/ |
安装ruby redis
1 | gem install redis |
拷贝部署脚本
1 | cp redis-3.2.6/src/redis-trib.rb /usr/local/bin/ |
注:只需在一台主机上安装部署脚本。
集群配置
主节点配置
修改redis.conf配置文件,修改如下:
1 | port 7000 |
从节点配置
修改redis.conf配置文件,修改如下:
1 | port 7001 |
启动节点
在每台主机上启动节点服务
1 | redis-server redis.conf |
主节点加入集群
使用部署脚本将节点加入集群。
1 | redis-trib.rb create --replicas 0 10.128.31.104:7000 10.128.31.105:7000 10.128.31.106:7000 |
命令说明:redis-trib.rb create --replicas <int> <ip:port> <ip:port> <ip:port> <ip:port>
其中replicas后的数字表示配置slave个数;集群新增的节点按照顺序,前面的为master节点,后面的为slave节点。通常节点个数是偶数,便于对等分master和slave节点。
如果replicas参数后是0,表示新增的节点全部是master,没有slave节点。
从节点加入集群
1 | redis-trib.rb add-node –slave --master-id 9294dfb4e38ada705ae14d4b2b7cb6178bead23c 10.128.31.107:7001 10.128.31.104:7000 |
命令说明:redis-trib.rb add-node --slave --master-id <arg> ip:port
注意:(9294dfb4e38ada705ae14d4b2b7cb6178bead23c)是主节点的node id
补充说明
使用以下命令一次性添加主备节点,缺点在于不能指定主备关系,用脚本自动匹配。
1 | redis-trib.rb create --replicas 1 10.128.31.104:7000 10.128.31.105:7000 10.128.31.106:7000 10.128.31.107:7001 10.128.31.108:7001 10.128.31.109:7001 |
验证集群
查看集群节点状态
1 | redis-cli -h 10.128.31.104 -p 7000 cluster nodes |
查看集群节点slot分布
1 | redis-cli -h 10.128.31.104 -p 7000 cluster slots |