创建一个Active-Active地理复制的数据库
如何创建Active-Active数据库以及在设置时需要考虑的事项。
Active-Active 地理复制数据库(以前称为 CRDBs)为应用程序提供了在不同地理位置的数据集副本的写访问权限。
参与托管实例的Redis Enterprise Software集群可以分布在不同的地理位置。 每个Active-Active数据库的实例都可以接收写操作,并且所有操作都会同步到所有实例,而不会发生冲突。
创建Active-Active数据库的步骤
- 创建服务账户 - 在每个参与的集群上,创建一个具有管理员角色的专用用户账户。
- 确认连接性 - 确认参与集群之间的网络连接。
- 创建Active-Active数据库 - 连接到您的其中一个集群并创建一个新的Active-Active数据库。
- 添加参与集群 - 使用服务帐户的用户凭据将参与集群添加到Active-Active数据库中。
- 验证创建 - 登录到每个参与的集群,并验证您的Active-Active数据库是否已在它们上创建。
- 确认Active-Active数据库同步 - 测试写入一个集群并从另一个集群读取。
先决条件
- 两台或更多安装了相同版本Redis Enterprise Software的机器
- 所有参与集群之间的网络连接和集群FQDN名称解析
- Network time service 监听器 (ntpd) 在所有集群的每个节点上配置并运行
创建一个Active-Active数据库
-
在每个参与的集群上创建服务账户:
-
为了验证参与集群之间的网络连接性,请从每个参与集群向所有其他参与集群运行以下
telnet
命令:telnet <target FQDN> 9443
-
在浏览器中,打开您想要创建Active-Active数据库的集群的集群管理器UI。
默认地址是:
https://
:8443 -
使用以下方法之一打开创建数据库菜单:
-
选择Active-Active数据库。
-
输入集群的本地管理员凭据,然后点击保存:
-
添加将托管Active-Active数据库实例的参与集群:
-
在参与集群部分,转到其他参与集群并点击+ 添加集群。
-
在添加集群配置面板中,输入新集群的URL、端口号以及新参与集群的管理员用户名和密码:
注意:如果Active-Active数据库运行在闪存上,则无法添加仅运行在RAM上的参与集群。 -
点击加入集群将集群添加到参与集群列表中。
-
-
输入一个数据库名称。
-
如果您的集群支持自动分层,在运行于中,您可以选择闪存,以便您的数据库使用闪存。我们建议您在新副本的初始Active-Active数据库同步期间,每1秒使用AOF以获得最佳性能。
-
要配置其他数据库设置,请展开每个相关部分进行更改。
有关每个设置的更多信息,请参见配置设置。
-
点击创建。
配置设置
-
数据库版本 - 您的数据库使用的Redis版本。
-
数据库名称 - 数据库名称的要求如下:
-
最多63个字符
-
仅允许字母、数字或连字符(-)作为有效字符
-
必须以字母或数字开头和结尾
-
区分大小写
-
-
端口 - 您可以定义客户端用于连接数据库的端口号。否则,将随机选择一个端口。
注意:数据库创建后,您无法更改端口号。 -
内存限制 - 数据库内存限制 包括所有数据库副本和分片,包括数据库复制中的副本分片和数据库集群中的数据库分片。
如果集群中数据库的总大小达到内存限制,将强制执行数据库的数据驱逐策略。
注意:如果您创建了一个启用了自动分层的数据库,您还需要为此数据库设置RAM与Flash的比例。最小RAM为10%。最大RAM为50%。 -
内存回收 - 对于Active-Active数据库,默认的回收策略是
noeviction
。Redis Enterprise 6.0.20及更高版本支持Active-Active数据库的所有回收策略,除非启用了自动分层。 -
功能(以前称为模块)- 当您创建一个新的内存数据库时,您可以在数据库中启用多个Redis Stack功能。对于自动分层数据库,您可以启用支持自动分层的功能。有关兼容性详情,请参见Redis Enterprise和Redis Stack功能兼容性。
注意:要使用Redis Stack功能,请在创建新数据库时启用它们。 创建数据库后无法启用它们。要向数据库添加功能:
-
在功能部分,选择一个或多个功能。
-
要自定义功能,请选择参数并输入可选的定制配置。
-
选择完成。
-
传输层安全性
如果您在创建Active-Active数据库时启用了TLS,节点将使用TLS模式仅对CRDB通信要求TLS,以要求参与集群之间的通信进行TLS认证和加密。
创建Active-Active数据库后,您可以将TLS模式设置为要求所有通信使用TLS,以便来自应用程序的客户端通信也进行身份验证和加密。
高可用性
-
复制 - 我们建议所有Active-Active数据库使用复制以获得最佳的集群间同步性能。
启用复制后,每个Active-Active数据库的主分片都会被复制到一个对应的副本分片。副本分片随后用于在实例之间同步数据,而主分片则专门用于处理客户端请求。
-
副本高可用性 - 我们还建议您启用副本高可用性,以确保副本分片在此同步过程中高度可用。
聚类
-
在集群部分,您可以:
注意:创建Active-Active数据库后,您无法启用或关闭数据库集群。 -
OSS Cluster API - OSS Cluster API 配置允许访问多个端点以提高吞吐量。OSS Cluster API 设置适用于参与集群中的所有 Active-Active 数据库实例。
此配置要求客户端连接到主节点以检索集群拓扑,然后才能直接连接到每个节点上的代理。
当您启用 OSS Cluster API 时,分片放置会自动更改为Sparse,数据库代理策略会自动更改为All primary shards。
耐久性
为了防止存储在RAM中的数据丢失,您可以启用持久化以将数据的副本存储在磁盘上。
Active-Active 数据库仅支持仅追加文件(AOF)持久化。Active-Active 数据库不支持快照持久化。
访问控制
-
未经身份验证的访问 - 您可以在不提供凭据的情况下以默认用户身份访问数据库。
-
仅密码认证 - 当您为数据库的默认用户配置密码时,所有连接到数据库的连接都必须使用 [AUTH 命令](/docs/latest/commands/auth/) 进行认证。
如果您还配置了访问控制列表,连接可以指定其他用户进行认证,并根据为该用户指定的 Redis ACLs 允许请求。
创建没有 ACLs 的数据库会启用一个具有对数据库完全访问权限的默认用户。您可以通过要求密码来保护默认用户的访问。
-
访问控制列表 - 您可以指定有权访问数据库的用户角色以及适用于这些连接的Redis ACLs。
您只能在创建Active-Active数据库后配置访问控制。在每个参与的集群中,数据库创建后添加ACLs。
要为数据库定义访问控制列表:
因果一致性
因果一致性 在 Active-Active 数据库中保证了在特定键上的操作顺序在所有 Active-Active 数据库实例中保持一致。
要为现有的Active-Active数据库启用因果一致性,请使用REST API。
测试Active-Active数据库连接
创建了Redis数据库后,您就可以连接到您的数据库了。有关多种连接方法的教程和示例,请参见连接到Active-Active数据库。