官方cluster分区
Redis3.0之后,Redis官方提供了完整的集群解决方案。
方案采用去中心化的方式,包括:sharding(分区)、replication(复制)、failover(故障转移)。
称为RedisCluster。
Redis5.0前采用redis-trib进行集群的创建和管理,需要ruby支持
Redis5.0可以直接使用Redis-cli进行集群的创建和管理
去中心化
RedisCluster由多个Redis节点组构成,是一个P2P无中心节点的集群架构,依靠Gossip协议传播的集
群。
Gossip协议
Gossip协议是一个通信协议,一种传播消息的方式。
起源于:病毒传播
Gossip协议基本思想就是:
一个节点周期性(每秒)随机选择一些节点,并把信息传递给这些节点。
这些收到信息的节点接下来会做同样的事情,即把这些信息传递给其他一些随机选择的节点
信息会周期性的传递给N个目标节点。这个N被称为fanout(扇出)
gossip协议包含多种消息,包括meet、ping、pong、fail、publish等等
通过gossip协议,cluster可以提供集群间状态同步更新、选举自助failover等重要的集群功能。
slot
redis-cluster把所有的物理节点映射到[0-16383]个slot上,基本上采用平均分配和连续分配的方式。
比如上图中有5个主节点,这样在RedisCluster创建时,slot槽可分配:
RedisCluster的优势
高性能
Redis Cluster 的性能与单节点部署是同级别的。
多主节点、负载均衡、读写分离
高可用
Redis Cluster 支持标准的 主从复制配置来保障高可用和高可靠。
failover
Redis Cluster 也实现了一个类似 Raft 的共识方式,来保障整个集群的可用性。
易扩展
向 Redis Cluster 中添加新节点,或者移除节点,都是透明的,不需要停机。
水平、垂直方向都非常容易扩展。
数据分区,海量数据,数据存储
原生
部署 Redis Cluster 不需要其他的代理或者工具,而且 Redis Cluster 和单机 Redis 几乎完全兼
容。
集群搭建
开放端口
# (--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=26379/tcp --permanent
# 重新载入
firewall-cmd --reload
或者关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
规则
192.168.181.128-6379:Mater1
192.168.181.129-6379:Slaver1
192.168.181.130-6379:Mater2
192.168.181.131-6379:Slaver2
192.168.181.134-6379:Mater3
192.168.181.135-6379:Slaver3
下面安装同上,但创建集群时不加入,手动使用命令加入
192.168.181.136-6379:Mater4
192.168.181.137-6379:Slaver4
下载 解压
/usr/local/redis
wget https://download.redis.io/releases/redis-5.0.9.tar.gz
tar -zxvf redis-5.0.9.tar.gz
cd redis-5.0.9
创建目录
mkdir /var/redis