外部 MariaDB

有时,由于各种原因(冗余、组织策略等),可能需要使用外部管理的数据库。可以通过采取一些额外的步骤来实现此用例

需求

  • 一个现有的 MariaDB 集群 / 服务器,可以从您的所有节点访问。

  • 如果您选择使用预配置的数据库和用户(use_preconfigured_databases 设置为“yes”),数据库和用户帐户应存在于数据库中,以供所有启用的服务使用。

  • 如果您选择不使用预配置的数据库和用户(use_preconfigured_databases 设置为“no”),则必须提供对数据库的 root 访问权限,以便为所有启用的服务配置数据库和用户帐户。

启用外部 MariaDB 支持

为了启用外部 mariadb 支持,您首先需要禁用 mariadb 部署,方法是确保以下行存在于 /etc/kolla/globals.yml

enable_mariadb: "no"

您可以使用外部 MariaDB 的两种方式:* 使用已经负载均衡的 MariaDB 地址 * 使用外部 MariaDB 集群

使用外部 MariaDB 集群

使用这种方式,您需要调整库存文件

[mariadb:children]
myexternaldbserver1.com
myexternaldbserver2.com
myexternaldbserver3.com

如果您选择使用 haproxy 在集群成员之间进行负载均衡,则此组中的每个节点都需要可解析且可以从库存的 [loadbalancer:children] 组(默认为 [network])中的所有主机访问。

此外,请根据以下配置配置 /etc/kolla/globals.yml 文件

enable_external_mariadb_load_balancer: yes

使用具有特权用户的外部 MariaDB

如果您的 MariaDB 用户是 root,只需在 globals.yml 中保持所有内容不变(除了应禁用的内部 mariadb 部署),并在 /etc/kolla/passwords.yml 文件中设置 database_password

database_password: mySuperSecurePassword

如果 MariaDB username 不是 root,请在 /etc/kolla/globals.yml 文件中设置 database_user

database_user: "privillegeduser"

使用预配置的数据库/用户:

您需要采取的第一步是在 /etc/kolla/globals.yml 文件中将 use_preconfigured_databases 设置为 yes

use_preconfigured_databases: "yes"

注意

use_preconfigured_databases 标志设置为 "yes" 时,您需要确保数据库管理员在运行 upgrade 命令之前将 mysql 变量 log_bin_trust_function_creators 设置为 1

使用分离的、预配置的用户和数据库的外部 MariaDB

为了实现这一点,您需要在 /etc/kolla/globals.yml 文件中定义用户名,如下所示

keystone_database_user: preconfigureduser1
nova_database_user: preconfigureduser2

此外,您需要在 /etc/kolla/passwords.yml 文件中为所有数据库设置密码

但是,幸运的是,可以使用通用用户在所有数据库之间使用。

使用在数据库之间使用通用用户的外部 MariaDB

为了使用所有数据库通用的预配置用户,您只需要执行以下步骤

  1. 编辑 /etc/kolla/globals.yml 文件,添加以下内容

    use_common_mariadb_user: "yes"
    
  2. /etc/kolla/globals.yml 中的 database_user 设置为您提供的一个

    database_user: mycommondatabaseuser
    
  3. /etc/kolla/passwords.yml 中为所有组件设置通用密码。为了实现这一点,您可以使用以下命令

    sed -i -r -e 's/([a-z_]{0,}database_password:+)(.*)$/\1 mycommonpass/gi' /etc/kolla/passwords.yml