【问题标题】:Redis cluster on kubernetesKubernetes 上的 Redis 集群
【发布时间】:2017-07-12 20:06:37
【问题描述】:

我正在尝试在 Kubernetes 上设置 redis 集群。我的要求之一是我的 redis 集群应该在 kubernetes 集群重启的情况下具有弹性(由于电源故障等问题)。

我已经尝试过 Kubernetes statefulset 和部署。
在 statefulset 的情况下,重新启动时会为 Pod 分配一组新的 IP 地址,并且由于 redis 集群在 IP 地址上工作,它无法连接到其他 redis 实例并再次形成集群。
如果服务在单个 redis 实例部署上具有静态 IP,即使我使用静态服务 IP 地址创建集群,redis 也会再次存储 Pod 的 IP,因此在重新启动时它无法连接到其他 redis 实例并再次形成集群.

My redis-cluster statefulset config
My redis-cluster deployment config

【问题讨论】:

    标签: redis kubernetes redis-cluster


    【解决方案1】:

    Redis-4.0.0 通过添加对cluster announce node IP and Port 的支持解决了这个问题

    cluster-announce-ip 设置为通过 redis 实例 kubernetes 部署的服务的静态 IP。

    设置说明链接:https://github.com/zuxqoj/kubernetes-redis-cluster/blob/master/README-using-statefulset.md

    【讨论】:

      【解决方案2】:

      您可以使用 DNS 名称代替 IP 地址吗?我认为这是将流量路由到有状态集中的各个节点的首选方式:

      https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id

      【讨论】:

      • 谢谢@pnovotnak。我正在使用 dns 名称创建集群,并使用 dns 名称来调用服务,但 redis 在内部维护 pod 的 IP 地址以用于集群形成,并在 nodes.conf 中维护此信息
      猜你喜欢
      • 1970-01-01
      • 2020-03-26
      • 2018-12-25
      • 1970-01-01
      • 2020-02-16
      • 2021-07-03
      • 2016-05-23
      • 2018-10-03
      • 2021-09-14
      相关资源
      最近更新 更多