Percona XtraDB 集群 Root 启用

对于 Percona XtraDB 集群 (PXC) 数据存储,我们需要能够启用 root 权限,以便能够使用特权用户管理数据存储。例如,为了将 PXC 数据存储集群与 Cloud Foundry 集成,需要一个 root 用户来自动管理集群上的数据库用户和数据库。这将为我们当前拥有的 PXC 解决方案添加 root 启用功能。

Launchpad 蓝图:https://blueprints.launchpad.net/trove/+spec/pxc-root-enable

问题描述

PXC 缺乏对 root 启用集群的支持。这将允许用户创建一个 root 用户,并为集群中的 root 用户提供一个新的随机密码或设置给定的密码。

提议的变更

PXC 将使用现有的 root 启用 API 调用。此变更将允许集群在集群内部启用 root 权限。该调用会将 root 用户和密码应用于集群中的单个节点,由于集群会复制到其他节点,因此它们将获得相同的 root 用户和密码设置。

Root 启用的要求

  • 针对集群资源的 root 启用 API 应该将 root 凭据应用于集群。

  • 用户应该能够使用 root 用户和密码连接到集群中的任何实例来管理数据存储。

PXC 需要扩展现有的 root 启用调用到其集群数据存储实现中,因为当前 root 启用调用在对集群调用 root 启用时会引发异常,因为大多数数据存储不支持此功能。这将需要对 guestagent 进行配置更改,如下面所述。

此变更仅涉及将现有功能添加到 PXC 数据存储,而不更改其他数据存储的现有功能。它不会在集群创建时添加 root 启用,因为该功能当前不存在于集群创建 API 中。

配置

为了允许 PXC 集群启用 root 权限,我们需要更新 guestagent API 以支持此调用。在查看其他集群启用的数据存储之后,唯一支持此功能的其他集群数据存储是 Vertica。 许多代码可以轻松地重用并应用于 PXC,我们还将大部分代码拉到公共位置,以便将来其他数据存储以及今天的 PXC 数据存储可以使用。 Vertica 数据存储可以扩展该类,并添加其数据存储特定的其他更改。

PXC 配置更改将使用 root_controller 配置参数,该参数当前使用 DefaultRootController,而是指向新的类 ClusterRootController

公共 API

以下公共 API 调用将提供给 PXC 数据存储。

  • 集群 root 启用 - 现有的调用负载不会更改。实现集群资源的 root 启用将允许用户在集群中的所有实例上启用 root 权限,并允许用户指定将用于在集群上启用 root 权限的密码。

CLI (python-troveclient)

支持以下现有的 CLI 调用。

  • root-enable 带有或不带有用户提供的 –root_password

不需要进行任何更改即可完成这些操作。

内部 API

Vertica 数据存储已经具有此功能,并且大部分代码可重用,因此我们可以将此代码移动到公共位置并在此基础上构建。

  • trove.extensions.vertica.models.VerticaRoot 类移动到 trove.extensions.common.models.ClusterRoot

  • trove.extensions.vertica.service.VericaRootController 类移动到 trove.extensions.common.service.ClusterRootController

  • 使 trove.extensions.vertica.service.VericaRootController 类扩展 trove.extensions.common.service.ClusterRootController,并进行 Vertica 需要的少量更改。

Guest Agent

PXC guest agent 需要具有启用 root 权限的方法,无论是否带有密码。由于此功能在此之前不存在,因此我们只需要 enable_root_with_password 而不需要 PXC 的 enable_root 方法。 enable_root_with_password 方法是 root 启用调用的新版本。旧版本没有密码,为了向后兼容而保留。

  • 将 enable_root_with_password 方法添加到 pxc 管理器。

不需要弃用任何调用即可完成此操作。

替代方案

不支持 PXC 集群的 root 启用。

Dashboard 影响 (UX)

Dashboard 需要更新才能为 PXC 集群启用此功能。此更改需要仅适用于数据存储类型为 pxc 的集群,因为其他数据存储没有此功能。

需要在集群下拉菜单中添加一个新选项,以允许用户为给定的集群启用 root 权限。如果集群不是 pxc 数据存储类型,则该选项应为灰色。

应该有一个对话框,允许用户输入他们想要用于 root 用户的密码,或者允许系统随机生成密码并将其显示给他们一次,以便他们可以将其复制并粘贴到需要 root 访问权限的任何应用程序中。

实现

Assignee(s)

名称

Launchpad ID

IRC

Email

Craig Vyvial

cp16net

cp16net

cp16net@gmail.com

里程碑

目标里程碑:Mitaka-3

工作项

  • 启用 PXC 集群的 root 权限

  • PXC 集群的 root 启用所需的 UX 更改。

升级影响

由于这是一个新功能,guestagent 需要更新,因此只需进行常见的更新。

测试

将有单元测试来测试策略的新调用。

将向场景测试中添加集成测试,以测试在集群上启用 root 权限。

文档影响

我们需要更新文档以显示对 PXC 集群 root 启用功能的支持。

附录