Redis 集群规划部署注意事项

  • 文档创建者:DoraZhang
  • 编辑次数:3次
  • 最近更新:cherishdqy 于 2020-10-20
  • 1. Redis 集群的特别提示

    1)Redis 可以认为是一个数据库,数据应该和服务进行物理上面的隔离,主要是为了确保当服务的机器发生宕机,重启,物理断电等意外事故之后,整个服务的配置还存在,同时可以进行恢复。这从一般的 MySQL,Oracle 等数据库的部署就可以知道。

    2)Redis 的高可用可以用 Redis 集群来进行保障,这就像数据库可以进行主从备份来保证数据库的高可用。

    3)Redis 集群作为一个高速的缓存数据库,但是由于他自身的架构,所以它有自己可以运行的边界。

    2.在搭建 Redis 集群的时候最应该关注的是什么时候 Redis 集群不能用的边界。

    比较重要的有下面几点。

    1) Redis 集群采用的是一个主节点存储,操作一部分 key 值的数据,这也就意味着,如果一开始规划了 Redis 集群的主节点数目,当产生意外的时候,如果 Redis 集群中存活的主节点数目达不到一开始规划的数目,整个 Redis 集群是不可用的。

    为了解决这个问题,Redis 集群引用了从节点的概念,即可以给一个主节点分配多个从节点,比如说一主三从,这样当一个主节点挂掉之后,其它三个从节点会自己竞选出一个主节点来替代已经挂掉的主节点来处理之前他应该处理的 key 值数据。基于 Redis 集群可用的这个要求,就意味着 Redis 主从节点不应该都部署在一个机器上面来避免机器的意外关机导致整个 Redis 集群不可用。目前业界比较流行的部署方式是采用三主三从的方式来确保 Redis 的高可用。

    2) 一个主节点挂掉之后,会从主节点的从节点中竞选出一个主节点。在竞选的短暂过程中可以认为之前应该有该 Redis 主节点处理的 key 值是不能进行操作的,直到从从节点中产生可以替代的主节点,并通知其它所有的节点,该主节点已经产生。整个集群可用。也正是因为这个原因,所以目前做的关停机测试再停机之后会出现性能测试拐点的问题,这个问题就是因为主节点的选举以及整个 Redis 集群再次回复使用才能对外提供服务造成的。如下图:


    image2019-7-8_11-8-34.png

    3) 当再次启动已经被停止的 Redis 主节点的时候,因为这时候启动的之前停止的 Redis 主节点认为自己是一个主节点,但是实际上已经存在了它的替代的主节点,所以这时候整个 Redis 集群就可以认为被分成了两个逻辑上的 Redis 集群,因为可以认为,Redis 集群之所以成为集群,就是因为他有主从的概念。当然,当这个再次重启的 Redis 主节点和别的节点的交流过程中,因为他发现已经存在了替代他的主节点。所以它会自己把自己降级为从节点。但是,正是有这个过程,所以目前开停机测试之后启动了机器上面的 Redis,同时在启停 FineReport 或者 FineBI 服务的时候,页面上会报 WebSocket 端口异常这个现象,这个现象产生的原因是 WebSocket 端口检测的时候需要用到先进行 Redis 集群的连接以便后面进行保存数据,但是进行 Redis 集群连接的时候检测到了 Redis 集群存在两个集群,所以判断集群不可用然后才报出 WebSocket 端口异常的提醒。

    4) Redis 集群可用还有一个边界就是不能同时挂掉超过一半的主节点或者节点数。正是因为这个边界的存在,所以,每次关机之后的关机再启动 Redis 节点都需要关注一下 Redis 集群的多数主节点是否都在一台机器上面。如果都在一台机器上面就需要人为的进行运维,使 Redis 集群的主节点不在同一台机器上面。

    3. 需要的资源支持

    1) 因为目前业界里面经过检验的,比较合理,常用的 Redis 集群架构是3主3从,所以如果考虑这个 Redis 架构,最好有三台独立的物理机进行 Redis 集群部署。

    理论上来说,原则只有一个,那就是需要有不同的物理机来部署 Redis 集群的主从节点,确保一台机器挂掉不会影响 Redis 集群的整体可用。

    2) 当然,如果已经存在现有的 Redis 集群,可以考虑和帆软的产品共用一套 Redis 集群,因为,FineReport,FineBI 产品目前使用 Redis 进行存储的key值是有固定的可以修改的前缀,所以在存储数据方面可以保证和现有使用 Redis 集群的系统的存储的数据区分开来。


    附件列表


    主题: 部署集成
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!