kubernetes 上的 Redis 集群

标签 redis kubernetes redis-cluster

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

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

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

最佳答案

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

关于kubernetes 上的 Redis 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45066637/

相关文章:

docker - kubectl 得到 : The connection to the server localhost:8080 was refused -Kubernetes

sockets - 在 Kubernetes/Ingress 和 Google Cloud Platform 上运行 HTTPS SSE 服务器

redis - redis scan 是否会扫描开始扫描操作后插入的数据?

logging - 为什么需要 Redis、AMQP 或 0MQ 以及 Elasticsearch 和 logstash?

php - Elasticache PHP Redis AWS 在 Laravel 中移动异常

redis - 如何删除(卸载)特定资源上的 Helm 图

redis cluster dbsize 仅显示该节点上的键

django - 在我的 Django 应用程序中使用 Celery 和 Redis

node.js - 防止为 connect-redis session 设置 TTL 以允许 allkeys-lru 用于内存策略

java - 如何在 Lettuce Redis 客户端中使用客户端一致性哈希