项目地址:https://github.com/doyoubi/undermoon
Undermoon
是一个基于 Redis 集群协议的自管理 Redis
集群系统,支持:
HTTP API
进行集群管理master
和 replica
的自动故障转移任何实现 redis
协议的存储系统也可以以某种方式与 undermoon
一起工作,例如 KeyDB。
关于 Redis Cluster Protocol
的更深入解释以及 Undermoon 是如何实现的,请参考 Redis Cluster Protocol。
Metadata storage
存储了整个 undermoon
集群的所有元数据,包括现有的 Redis
实例、代理和暴露的 Redis
集群。现在它是一个名为 Memory Broker
的内存存储服务器。当使用 undermoon-operator
时,这个 Memory Broker
会改为使用 ConfigMap
来存储数据。
Coordinator
将在代理和服务器代理之间同步元数据。它还主动检查服务器代理的活跃度并启动故障转移。
Storage Cluster
由服务器代理和 Redis
实例组成。它就像官方的 Redis Cluster
一样为应用程序服务。可以在它和应用程序之间添加一个 Redis Cluster Proxy
,这样应用程序就不需要将其 Redis
客户端升级为智能客户端。
Chunk
是每个暴露的 Redis
集群的最小构建块。每个块由 4
个 Redis
实例和 2
个服务器代理组成,均匀分布在两台不同的物理机上。所以每个 Redis
集群的节点数将是 4
的倍数,一半 master
一半 replica
。
chunk
的设计使得构建具有良好拓扑的集群非常容易,以实现工作负载均衡。