基于Redis Cluster的分布式缓存部署篇(三)

了解Redis的配置后就开始搭建集群。redis集群建议最少6个节点,在此之前先明确几个概念。

  • 节点/集群节点 对应集群的逻辑节点,是一个进程。通常说的节点就是集群节点。
  • 主备节点组/主备集群节点组 一组集群节点的集合,包括一个主节点及至少一个备节点。
  • 主机/主机节点 对应一台物理主机或虚拟主机,主机节点上可以有多个集群节点(不建议)。

环境准备

集群架构
Alt text

硬件参数

先准备部署redis的硬件,以下是服务器参数。

参数
CPU8 core Intel(R) Xeon(R) CPU E7-4860 @ 2.27GHz
内存16G
磁盘128G
OSCentos7

节点规划

主机名IP地址端口备注
ma10.128.31.1047000主节点a
mb10.128.31.1057000主节点b
mc10.128.31.1067000主节点c
sa10.128.31.1077001从节点a
sb10.128.31.1087001从节点b
sc10.128.31.1097001从节点c

Redis版本

当前redis稳定版本号3.2.6, 因此以3.2.6版本搭建集群。

安装Redis

下载Redis

在用户根目录下创建目录并下载redis3.2.6

1
2
3
4
mkdir ~/redis
cd ~/redis

wget http://download.redis.io/releases/redis-3.2.6.tar.gz

编译Redis

1
2
3
4
tar –zxvf redis-3.2.6.tar.gz
cd redis-3.2.6

make

安装Redis

1
make install

注:在每台主机都需要安装Redis Server。

安装集群工具

安装epel源

1
yum -y install epel-release

安装ruby环境,部署工具是使用ruby编写的。

1
yum -y install rubygems-devel

更换ruby国内安装源

1
2
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
gem sources –l

安装ruby redis

1
gem install redis

拷贝部署脚本

1
cp redis-3.2.6/src/redis-trib.rb /usr/local/bin/

注:只需在一台主机上安装部署脚本。

集群配置

主节点配置

修改redis.conf配置文件,修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
port    7000
bind 0.0.0.0
daemonize yes
logfile "logs/node-7000.log"
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
cluster-slave-validity-factor 10
appendonly yes
dir ./data
dbfilename dump-7000.rdb
appendfilename "appendonly-7000.aof"

从节点配置

修改redis.conf配置文件,修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
port    7001
bind 0.0.0.0
daemonize yes
logfile "logs/node-7001.log"
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
cluster-slave-validity-factor 10
appendonly yes
dir ./data
dbfilename dump-7001.rdb
appendfilename "appendonly-7001.aof"

启动节点

在每台主机上启动节点服务

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