2.5. PostgreSQL 要求
Red Hat Ansible Automation Platform 使用 PostgreSQL 15。在将 PostgreSQL 用户密码保存到数据库前,会使用 SCRAM-SHA-256 安全散列算法对其进行处理。
要确定您的自动化控制器实例是否可以访问数据库,您可以使用 awx-manage check_db 命令。
| Service | 必填 | 备注 |
|---|---|---|
| 数据库 |
|
|
早于 v10 的 PostgreSQL 版本可能没有 ICU 支持。您必须使用 ICU 支持构建 PostgreSQL 服务器,或者您可能满足意外错误。
PostgreSQL 配置
另外,您可以将 PostgreSQL 数据库配置为不由 Red Hat Ansible Automation Platform 安装程序管理的独立节点。当 Ansible Automation Platform 安装程序管理数据库服务器时,它会使用通常为大多数工作负载推荐的默认值配置服务器。有关可用于提高数据库性能 的设置的更多信息,请参阅 PostgreSQL 数据库配置和维护自动化控制器。
2.5.1. 设置外部(客户支持)数据库 复制链接链接已复制到粘贴板!
在 Ansible Automation Platform 中使用外部数据库时,您必须创建和维护该数据库。在卸载 Ansible Automation Platform 时,请确保清除外部数据库。
要在外部 PostgreSQL 兼容数据库中创建用于自动化控制器的数据库、用户和密码,请使用以下步骤。
流程
安装,然后连接到具有超级用户权限的 PostgreSQL 兼容数据库服务器。
psql -h <db.example.com> -U superuser -p 5432 -d postgres <Password for user superuser>:
# psql -h <db.example.com> -U superuser -p 5432 -d postgres <Password for user superuser>:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-h hostname --host=hostname
-h hostname --host=hostnameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 指定运行服务器的机器的主机名。如果该值以斜杠开头,它将用作 Unix-domain 套接字的目录。
-d dbname --dbname=dbname
-d dbname --dbname=dbnameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 指定要连接到的数据库的名称。这等同于将
dbname指定为命令行中的第一个非选项参数。dbname可以是连接字符串。如果是,则连接字符串参数会覆盖任何冲突的命令行选项。-U username --username=username
-U username --username=usernameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以用户
用户名而非默认值连接到数据库。(您必须有权限才能这样做。)-
使用分配给用户的
createDB或管理员角色,创建用户、数据库和密码。如需更多信息,请参阅 数据库角色。 将数据库凭据和主机详情作为外部数据库添加到自动化控制器清单文件。
以下示例中使用了默认值。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行安装程序。
如果您将 PostgreSQL 数据库与自动化控制器搭配使用,则数据库由 connect 用户所有,且必须为其分配
createDB或管理员角色。- 检查您是否能够使用用户、密码和数据库名称连接到创建的数据库。
-
检查用户的权限,该用户应具有
createDB或 administrator 角色。
在此过程中,您必须检查外部数据库覆盖。如需更多信息,请参阅 https://access.redhat.com/articles/4010491
2.5.2. 为自动化中心 PostgreSQL 数据库启用 hstore 扩展 复制链接链接已复制到粘贴板!
在 Ansible Automation Platform 2.4 中,数据库迁移脚本使用 hstore 字段来存储信息,因此必须启用对自动化中心 PostgreSQL 数据库的 hstore 扩展。
使用 Ansible Automation Platform 安装程序和受管 PostgreSQL 服务器时,此过程是自动的。
如果 PostgreSQL 数据库是外部的,则必须在自动化中心安装前手动为自动化中心 PostreSQL 数据库启用 hstore 扩展。
如果在自动化中心安装前没有启用 hstore 扩展,在数据库迁移过程中会引发故障。
流程
检查 PostgreSQL 服务器上是否有扩展(自动化 hub 数据库)。
psql -d <automation hub database> -c "SELECT * FROM pg_available_extensions WHERE name='hstore'"
$ psql -d <automation hub database> -c "SELECT * FROM pg_available_extensions WHERE name='hstore'"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<automation hub database>的默认值为automationhub。带有
hstore可用的输出示例 :name | default_version | installed_version |comment ------+-----------------+-------------------+--------------------------------------------------- hstore | 1.7 | | data type for storing sets of (key, value) pairs (1 row)
name | default_version | installed_version |comment ------+-----------------+-------------------+--------------------------------------------------- hstore | 1.7 | | data type for storing sets of (key, value) pairs (1 row)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 带有
hstore不可用的输出示例 :name | default_version | installed_version | comment ------+-----------------+-------------------+--------- (0 rows)
name | default_version | installed_version | comment ------+-----------------+-------------------+--------- (0 rows)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在基于 RHEL 的服务器上,
hstore扩展包含在postgresql-contribRPM 软件包中,该软件包在安装 PostgreSQL 服务器 RPM 软件包时不会自动安装。要安装 RPM 软件包,请使用以下命令:
dnf install postgresql-contrib
dnf install postgresql-contribCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令,在自动化中心数据库上创建
hstorePostgreSQL 扩展:psql -d <automation hub database> -c "CREATE EXTENSION hstore;"
$ psql -d <automation hub database> -c "CREATE EXTENSION hstore;"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出:
CREATE EXTENSION
CREATE EXTENSIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在以下输出中,
installed_version字段包含使用的hstore扩展,表示启用了hstore。name | default_version | installed_version | comment -----+-----------------+-------------------+------------------------------------------------------ hstore | 1.7 | 1.7 | data type for storing sets of (key, value) pairs (1 row)
name | default_version | installed_version | comment -----+-----------------+-------------------+------------------------------------------------------ hstore | 1.7 | 1.7 | data type for storing sets of (key, value) pairs (1 row)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 Flexible I/O Tester (FIO)工具检查是否满足最低 Ansible Automation Platform PostgreSQL 数据库要求。FIO 是一个用于对存储系统的读取和写入 IOPS 性能进行基准测试的工具。
先决条件
您已安装了 Flexible I/O Tester (
fio)存储性能基准工具。要安装
fio,请以 root 用户身份运行以下命令:yum -y install fio
# yum -y install fioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您有足够的磁盘空间来存储
fio测试数据日志文件。该流程中显示的示例至少需要 60GB 磁盘空间在
/tmp目录中:-
numjobs设置由 命令运行的作业数量。 -
size=10G设置每个作业生成的文件大小。
-
-
您已调整了
size参数的值。调整此值可减少测试数据量。
流程
运行随机写入测试:
fio --name=write_iops --directory=/tmp --numjobs=3 --size=10G \ --time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \ --verify=0 --bs=4K --iodepth=64 --rw=randwrite \ --group_reporting=1 > /tmp/fio_benchmark_write_iops.log \ 2>> /tmp/fio_write_iops_error.log
$ fio --name=write_iops --directory=/tmp --numjobs=3 --size=10G \ --time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \ --verify=0 --bs=4K --iodepth=64 --rw=randwrite \ --group_reporting=1 > /tmp/fio_benchmark_write_iops.log \ 2>> /tmp/fio_write_iops_error.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行随机读测试:
fio --name=read_iops --directory=/tmp \ --numjobs=3 --size=10G --time_based --runtime=60s --ramp_time=2s \ --ioengine=libaio --direct=1 --verify=0 --bs=4K --iodepth=64 --rw=randread \ --group_reporting=1 > /tmp/fio_benchmark_read_iops.log \ 2>> /tmp/fio_read_iops_error.log
$ fio --name=read_iops --directory=/tmp \ --numjobs=3 --size=10G --time_based --runtime=60s --ramp_time=2s \ --ioengine=libaio --direct=1 --verify=0 --bs=4K --iodepth=64 --rw=randread \ --group_reporting=1 > /tmp/fio_benchmark_read_iops.log \ 2>> /tmp/fio_read_iops_error.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看结果:
在基准命令编写的日志文件中,搜索以
iops开头的行。此行显示测试的最小、最大值和平均值。以下示例显示了日志文件中随机读取测试的行:
cat /tmp/fio_benchmark_read_iops.log read_iops: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64 […] iops : min=50879, max=61603, avg=56221.33, stdev=679.97, samples=360 […]
$ cat /tmp/fio_benchmark_read_iops.log read_iops: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64 […] iops : min=50879, max=61603, avg=56221.33, stdev=679.97, samples=360 […]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须根据您自己的业务需求、应用程序工作负载和新需求审核、监控和重新查看日志文件。