图解-5步搭建高可用Redis Cluster

图解-5步搭建高可用Redis Cluster

本文通过图解的方式讲解redis集群的搭建流程。

  • 讲解以3主3从的集群规模为例

  • 假设有6台网络互通的机器(物理机、vm 或者docker 都可以), ip地址分别为: ip1, ip2, ip3 ,ip4, ip5, ip6。

redis集群搭建流程源码剖析可见: Redis 集群创建流程与源码实现剖析


1. 创建实例

图解-5步搭建高可用Redis Cluster

以–cluster-enabled yes 模式启动6 个实例 。

  1. # 在每台机器启动一个redis实例, 实例端口都是6379

  2. $BIN_PATH/redis-server --port 6379 --cluster-enabled yes --daemonize yes #... 其它配置项


2. 集群拓扑配置规划

有了6个运行实例, 根据3主3从的集群要求,确定节点的主从关系和 数据(slot)的分布:

  • 三个主节点分别为: ip1, ip3, ip5; 对应的从节点为: ip2, ip4, ip6

  • 16384个slot分布: ip1负责 0~5460; ip3负责: 5461~10921; ip5负责: 10922~16383

分配原则
  • 主节点尽量分配在不同机器节点上(尽量避免两个主节点在一台机器上部署, 提高可用性)

  • 主从关系的节点尽量分配在不同机器节点上(尽量避免主从关系的节点在一台机器上部署, 提高可用性)

3. slot和config-epoch 配置

图解-5步搭建高可用Redis Cluster

(主)节点slot 设置

对3个主节点分别调用cluster addslots命令设置其管理的slot

  1. cluster addslots 0 1 2 3 ... 5460

节点config-epoch 设置

遍历6个实例, 设置不同的config-epoch值

  1. cluster set-config-epoch 1 # 比如 ip1为1, ip2为2,ip3为3,依次递增

4. 节点互联

ip1握手其他节点

图解-5步搭建高可用Redis Cluster

  • 调用ip1 实例 cluster meet, 让ip1 主动与其它节点握手建立集群关系

  1. cluster meet ip2 6379

  • ip1 执行meet 命令后, 会向ip2 发送meet消息包

  • ip2 收到ip1 的 meet消息包后向ip1返回pong消息包; 最后ip2也向ip1发送meet消息包进行握手;

  • ip1收到ip2的pong消息包后, ip1认为ip2是正常集群节点,握手成功。

  • ip1收到ip2 的meet消息包后向ip2返回pong消息包;

  • ip2收到ip1的pong消息包后, ip2认为ip1是正常集群节点,握手成功; 至此ip1, ip2 互相接纳对方为集群节点

  • p3~ip6节点与ip2类似,最终ip2~p6 都认为p1是同一集群节点; 反之ip1 也认为ip2~p6是同一集群节点; 通过以上流程, p1与集群其他节点建立了链接。

ip2~ip6节点之间互联

图解-5步搭建高可用Redis Cluster

  • p1与所有节点握手成功后, p1 联通所有集群节点, ip2~p6 只联通p1

  • p1 定时 与集群其它节点 发ping/pong消息时,随机携带除自身外其他节点信息

  • 其他节点比如p2, 收到p1的ping消息中其他节点信息p3; 认为p3是正常集群节点

  • p2 与 p3 主动建立链接并且发送ping消息, p3收到p2的ping消息,认为p2是正常集群节点; 至此p2和p3 互联成功。

  • 其它节点的互联 与 p2跟p3 互联类似; 最终集群中每个节点都知道整个集群的拓扑, 集群最终互联。

5. 建立主从

图解-5步搭建高可用Redis Cluster

在集群中,每个节点都有一个唯一的node-id。

调用主节点( ip2, ip4, ip6)cluster myid 或者各个主节点的node-id

  1. cluster myid #NODE_ID分别为对应主节点的node-id

调用从节点( ip2, ip4, ip6)cluster replicate 建立对应主从关系

  1. cluster replicate $NODE_ID #NODE_ID分别为对应主节点的node-id, 比如ip2主节点未ip1, 传ip1的node-id

至此,3主3从的集群搭建完毕,可以直接接收客户端访问。


原文始发于微信公众号(吃瓜技术派):图解-5步搭建高可用Redis Cluster

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/236009.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!