redis - Redis active - 跨数据中心/Kubernetes 集群的主动复制
问题描述
我在 Kubernetes 上部署了一个高可用的Redis服务(使用的 redis 版本是 4.0.9),具有 aof 持久性。三个哨兵节点监控一个主节点和两个从节点。我现在有以下用例:在不同的 Kubernetes 集群上部署两个上述类型的实例并保持它们同步。该设置应提供主动-主动复制。
到目前为止,我想出的可能解决方案是:
- 使用 Twitter 的twemproxy代理与 Kubernetes 中单独的 Redis 服务之间的请求。这种情况下的问题是 (afaik) twemproxy自动在可用的 Redis 节点/集群之间分片数据,因此上述配置中的主 Redis 节点在任何给定时间点都不会具有相同的数据集。
- 使用XDCRWithKafka。我还没有找到任何关于使用 XDCRWithKafka 的文档......
- 以几乎与使用 twemproxy 相同的方式使用HAProxy (同样,afaik,HAProxy 不支持请求多播)
- 一些自定义的 sln 描述在:http://grokbase.com/t/gg/redis-db/123nyg4rfp/multiple-master-going-to-one-slave(尽管保持 redis 集群与这样的解决方案同步处于活动状态时 - 活动状态似乎并不那么简单......)
有什么想法/建议吗?
在此先感谢,乔治
解决方案
据我所见,似乎只有 Dynomite 可以解决这个问题。https://github.com/Netflix/dynomite/wiki/Topology
另一个建议是通过这样的设置来实现我们自己的:
数据中心1:
[多个 redis 客户端]===>[localProxy-DC1]====> TWEMPROXY-DC1 ===> [多个 Redis 单实例与 Sentinel]
数据中心-2:
[localProxy-DC1] ====replicates commands async===> TWEMPROXY-DC2 ====> [Multiple Redis Single Instances with Sentinel]
推荐阅读
- ocaml - OCaml 对二次根的偏应用
- android - 不能使用提供的参数调用以下函数: Kotlin
- python - 使用 python 在没有 protobuf 的情况下实时解析 GTFS
- python - 将加速度计数据存储在树莓派 SD 卡中
- .htaccess - 仅重定向带有子页面的父页面
- mysql - 将不同的列分组为一行
- objective-c - 需要帮助尝试将 react-native-firebase 实施到我的独立博览会项目中
- python - 使用 Python 多处理库时无法获取属性错误
- angular - CouchDb GET _session 未在 Angular7 中从浏览器设置 cookie 标头
- python - 在 Python 中获取变量的字符串表示形式以在 dict 中用作键