首页 > 解决方案 > 谷歌云集群上的 McRouter。节点升级如何处理?

问题描述

我们在 Google Cloud 集群上运行 3 节点mcrouter/memcached kubernetes部署(通过)。helm我们使用集群而不是单个 VM 来使我们的 Web 应用程序(使用 memcache 进行会话)对节点故障具有弹性。

更新节点时,kubernetes 会逐个逐出 pod 并生成新的。由于 memcache 是内存中的存储,因此这些新的 pod 是在没有数据的情况下创建的。我们目前使用的 mcrouter 路由对于这种情况并不是最佳的,升级期间的间歇性会话失败就是证明。

据我了解,有两种方法可以解决这个问题:

  1. 利用WarmUpRoute
  2. 利用MissFailoverRoute

如果我想使用,WarmUpRoute那么我需要这样做:

  1. 在节点升级之前,将当前配置切换到将其中一个节点指定为“暖”服务器而将另外两个节点指定为“冷”服务器的配置。
  2. 在两台冷服务器上执行节点升级。
  3. 允许客户端查询缓存几天,这将慢慢导致冷服务器镜像暖服务器,因为缓存未命中导致同步。
  4. 用另一个 WarmUpRoute 配置切换此 WarmUpRoute 配置,其中先前指定为“暖”的服务器被指定为“冷”,反之亦然。
  5. 重复步骤 3
  6. 最后,当所有服务器同步恢复到我原来的配置。

如果我想使用 aMissFailoverRoute那么我需要这样做:

  1. 使用将其中一个 memcache 节点指定为故障转移节点的配置。
  2. 更新两个非故障转移节点
  3. 更新故障转移节点

我理解正确吗?似乎第二种选择要简单得多。WarmUpRoute该方法有什么优点吗?有没有比这两个更好的第三种选择?

标签: kubernetesgoogle-cloud-platformmemcached

解决方案


推荐阅读