规划Active-Active数据库的注意事项
在规划部署时需要考虑的关于Active-Active数据库的信息,例如兼容性、限制和特殊配置
在Redis Enterprise中,Active-Active地理分布基于无冲突复制数据类型(CRDT)技术。与没有地理分布的数据库相比,Active-Active数据库具有更复杂的复制和网络,以及不同的数据类型。
由于Active-Active数据库的复杂性,在规划您的Active-Active数据库时,有一些特殊的注意事项需要牢记。
有关地理分布式复制的更多信息,请参见Active-Active Redis。有关其他高可用性功能的更多信息,请参见Durability and high availability。
参与的集群
您至少需要两个参与集群来创建一个Active-Active数据库。如果您的数据库需要超过十个参与集群,请联系Redis支持。您可以在数据库创建后添加或删除参与集群。
从集群管理器UI对Active-Active数据库配置所做的更改仅适用于您正在编辑的集群。对于跨所有集群的全局配置更改,请使用crdb-cli
命令行工具。
内存限制
数据库内存限制定义了集群上所有数据库副本和分片的最大大小。您的内存限制还决定了分片的数量。
除了您的数据集外,内存限制还必须考虑复制、Active-Active元数据和模块开销。这些功能可能会增加您的数据库大小,有时会增加两倍或更多。
在确定数据库大小时需要考虑的因素:
- 数据集大小: 您希望您的限制高于数据集大小,以便为开销留出空间。
- 数据库吞吐量: 高吞吐量需要更多的分片,导致更高的内存限制。
- modules: 使用模块与您的数据库可能会消耗更多内存。
- 数据库集群: 使您能够将数据分散到多个节点的分片中(横向扩展)。
- database replication: 启用复制会使内存消耗翻倍
- Active-Active 复制: 启用 Active-Active 复制需要双倍于常规复制的内存,这可能是每个实例原始数据大小的两倍(2x)。
- database replication backlog 用于分片之间的同步。默认情况下,这设置为数据库大小的1%。
- Active-Active 复制积压 用于集群之间的同步。默认情况下,这设置为数据库大小的1%。
了解Active-Active数据库的驱逐策略激活阈值较低也很重要,因为它需要传播到所有参与的集群。当其中一个Active-Active实例达到其内存限制的80%时,驱逐策略开始驱逐键。
网络
Active-Active数据库的网络要求包括:
在创建Active-Active数据库之前,必须配置集群之间的网络。如果集群之间没有连接,设置将失败。
网络端口
每个节点都必须能够访问其他所有节点的REST API端口,以及用于代理、VPN和集群管理器UI的其他端口。有关更多详细信息,请参阅网络端口配置。这些端口应允许通过可能位于集群之间的防火墙。
网络时间服务
Active-Active数据库需要一个时间服务,如NTP或Chrony,以确保所有集群节点上的时钟同步。 这对于避免可能影响数据完整性的内部集群通信问题至关重要。
有关更多信息,请参见Synchronizing cluster node clocks。
Redis 模块
多个Redis模块与Active-Active数据库兼容。请查看兼容的Redis模块列表。
限制
Active-Active 数据库有以下限制:
- 现有的数据库无法更改为Active-Active数据库。要将数据从现有数据库移动到Active-Active数据库,您必须创建一个新的Active-Active数据库并迁移数据。
- Discovery service 不支持 Active-Active 数据库。Active-Active 数据库需要 FQDNs 或 mDNS。
- CLI 不支持
FLUSH
命令。要刷新数据库,请使用 API 或集群管理器 UI。 UNLINK
命令是一个针对所有类型键的阻塞命令。- 在Active-Active数据库中不支持跨槽多命令(如
MSET
)。 - 数据库创建后,哈希策略无法更改。
- 如果Active-Active数据库在闪存上运行,则无法添加仅在RAM上运行的参与集群。