redis cluster 模式 中包括至少3个主节点,每个主节点下有一个或多个从节点。redis cluster 将数据分为16384个hash槽,键值hash取模后对应到其中的hash槽。每个主节点管理其中一部分hash槽,所以每个主节点只有全量数据中的一部分数据。所以相较于哨兵模式,集群模式拥有更大的存储容量,并且可以通过添加节点来进行动态的扩容。
redis cluster 集群搭建
环境准备
- CentOS 7.5
- redis 4.0.10
搭建步骤
1.安装redis
# 解压安装包
tar -xvf redis-4.0.10.tar.gz
cd redis-4.0.10
# 编译 需要安装gcc
make
#安装 --prefix 指定路径
make install --prefix /opt/redis
2.编辑配置文件
集群最少需要3个主节点,每个主节点需要一个从节点,所以需要启动6个redis服务
# 进入安装后的目录
cd /opt/redis/bin
# 创建6个文件夹
mkdir 6379 6380 6381 6382 6383 6384
修改redis.conf
# 运行端口
port 6379
# 修改为后台运行
daemonize yes
# 修改默认pidfile路径,避免多个实例相同
pidfile /var/run/redis_6379.pid
# 集群相关配置
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
复制6份,移动到对应的文件夹下,修改为对应的端口
3.启动redis 服务
使用 redis-server 启动6个redis 实例
cd /6379
./../redis-server redis.config //启动
全部启动后
4. 创建集群
redis 5.0 版本之前使用 redis-trib 创建集群,需要先安装 rubby
yum install ruby rubygems -y
安装ruby后,安装redis-gem,下载redis-gem 安装包,地址 https://rubygems.org/downloads/redis-3.0.0.gem 使用gem 安装
gem install -l redis-3.0.0.gem
安装完成后 将redis安装包中src里的redis-trib.rb 复制到redis实际安装目录下
# 复制
cd /opt/redis-4.0.10/src/redis-trib.rb /opt/redis/bin/
使用create创建集群, --replicas 指定每个主节点的从节点数量
./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384
创建成功后,查看集群信息
以集群方式连接到服务器
数据存到了6380这台服务器,其他节点不会保存该条数据
集群扩容
为集群添加节点 按之前的步骤新启动两个redis服务6385和6386
将启动的服务添加到现有的集群
./redis-trib.rb add-node 127.0.0.1:6385 127.0.0.1:6379
6385 新增结点 6379 现集群中的结点
添加成功后检查集群
./redis-trib.rb check 127.0.0.1:6379
新增的作为了主节点,继续添加6386 作为6385的从节点 --slave 作为从节点 --master-id 主节点id
./redis-trib.rb add-node --slave --master-id a8e845b6f72a946ae77575149607209f53297894 127.0.0.1:6386 127.0.0.1:6379
添加成功,继续分配hash槽,否则不会存储数据
./redis-trib.rb reshard 127.0.0.1:6385
迁移后检查
节点添加完成