外部 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 地址(推荐)¶
如果您的外部数据库已经具有负载均衡器,则需要执行以下操作
编辑库存文件,将
control更改为负载均衡器的主机名,位于mariadb组中,如下所示[mariadb] myexternalmariadbloadbalancer.com
在
/etc/kolla/globals.yml文件中定义database_addressdatabase_address: myexternalmariadbloadbalancer.com
注意
如果 enable_external_mariadb_load_balancer 设置为 no(默认值),则外部 DB 负载均衡器应在部署期间可以从所有节点访问。
使用外部 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¶
为了使用所有数据库通用的预配置用户,您只需要执行以下步骤
编辑
/etc/kolla/globals.yml文件,添加以下内容use_common_mariadb_user: "yes"
将
/etc/kolla/globals.yml中的 database_user 设置为您提供的一个database_user: mycommondatabaseuser
在
/etc/kolla/passwords.yml中为所有组件设置通用密码。为了实现这一点,您可以使用以下命令sed -i -r -e 's/([a-z_]{0,}database_password:+)(.*)$/\1 mycommonpass/gi' /etc/kolla/passwords.yml