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