搜索

4.5. PostgreSQL 要求

download PDF

Red Hat Ansible Automation Platform 使用 PostgreSQL 13。在将 PostgreSQL 用户密码保存到数据库前,会使用 SCRAM-SHA-256 安全散列算法对其进行处理。

要确定您的自动化控制器实例是否可以访问数据库,您可以使用 awx-manage check_db 命令。

表 4.5. 数据库
Service必填备注

数据库

  • 20 GB 专用硬盘空间
  • 4 个 CPU
  • 16 GB RAM
  • 建议大于 150 GB
  • 存储卷必须为高基线 IOPS 进行评级 (1500 或更多)。
  • 所有自动化控制器数据都存储在数据库中。通过管理的主机数量、作业运行数量、事实缓存中存储的 fact 数量以及单个作业中的任务数量,数据库存储会增加。例如,一个 playbook 在 250 个主机中每小时运行一次(一天 24 次),20 个任务每周会在数据库中存储超过 800000 个事件。
  • 如果数据库中没有足够的空间,则必须定期清理旧作业运行和事实。如需更多信息,请参阅 自动化控制器 管理指南中的管理 作业

PostgreSQL 配置

另外,您可以将 PostgreSQL 数据库配置为不由 Red Hat Ansible Automation Platform 安装程序管理的独立节点。当 Ansible Automation Platform 安装程序管理数据库服务器时,它会使用通常为大多数工作负载推荐的默认值配置服务器。有关可以用来提高数据库性能的设置的更多信息,请参阅 数据库设置

其他资源

有关调整 PostgreSQL 服务器的更多信息,请参阅 PostgreSQL 文档

4.5.1. 设置外部(客户支持)数据库

重要

红帽不支持使用外部(客户支持)数据库,但客户使用它。以下有关 inital 配置的指导只从产品安装角度提供,以避免相关的支持请求。

要在外部 PostgreSQL 兼容数据库中创建用于自动化控制器的数据库、用户和密码,请使用以下步骤。

流程

  1. 安装,然后连接到具有超级用户权限的 PostgreSQL 兼容数据库服务器。

    # psql -h <db.example.com> -U superuser -p 5432 -d postgres <Password for user superuser>:

    其中:

    -h hostname
    --host=hostname

    指定运行服务器的机器的主机名。如果该值以斜杠开头,它将用作 Unix-domain 套接字的目录。

    -d dbname
    --dbname=dbname

    指定要连接到的数据库的名称。这等同于将 dbname 指定为命令行中的第一个非选项参数。dbname 可以是连接字符串。如果是,则连接字符串参数会覆盖任何冲突的命令行选项。

    -U username
    --username=username

    以用户 用户名 而非默认值连接到数据库。(您必须有权限才能这样做。)

  2. 使用分配给用户的 createDB 或管理员角色,创建用户、数据库和密码。如需更多信息,请参阅 数据库角色
  3. 将数据库凭据和主机详情作为外部数据库添加到自动化控制器清单文件。

    以下示例中使用了默认值。

    [database]
    pg_host='db.example.com'
    pg_port=5432
    pg_database='awx'
    pg_username='awx'
    pg_password='redhat'
  4. 运行安装程序。

    如果您将 PostgreSQL 数据库与自动化控制器搭配使用,则数据库由 connect 用户所有,且必须为其分配 createDB 或管理员角色。

  5. 检查您是否能够使用用户、密码和数据库名称连接到创建的数据库。
  6. 检查用户的权限,该用户应具有 createDB 或 administrator 角色。
注意

在此过程中,您必须检查外部数据库覆盖。如需更多信息,请参阅 https://access.redhat.com/articles/4010491

4.5.2. 为自动化中心 PostgreSQL 数据库启用 hstore 扩展

在 Ansible Automation Platform 2.4 中,数据库迁移脚本使用 hstore 字段来存储信息,因此必须启用对自动化中心 PostgreSQL 数据库的 hstore 扩展。

使用 Ansible Automation Platform 安装程序和受管 PostgreSQL 服务器时,此过程是自动的。

如果 PostgreSQL 数据库是外部的,则必须在自动化中心安装前手动为自动化中心 PostreSQL 数据库启用 hstore 扩展。

如果在自动化中心安装前没有启用 hstore 扩展,在数据库迁移过程中会引发故障。

流程

  1. 检查 PostgreSQL 服务器上是否有扩展(自动化 hub 数据库)。

    $ psql -d <automation hub database> -c "SELECT * FROM pg_available_extensions WHERE name='hstore'"

    其中 <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)

    带有 hstore 不可用的输出示例

     name | default_version | installed_version | comment
    ------+-----------------+-------------------+---------
    (0 rows)
  2. 在基于 RHEL 的服务器上,hstore 扩展包含在 postgresql-contrib RPM 软件包中,该软件包在安装 PostgreSQL 服务器 RPM 软件包时不会自动安装。

    要安装 RPM 软件包,请使用以下命令:

    dnf install postgresql-contrib
  3. 使用以下命令,在自动化中心数据库上创建 hstore PostgreSQL 扩展:

    $ psql -d <automation hub database> -c "CREATE EXTENSION hstore;"

    输出:

    CREATE EXTENSION
  4. 在以下输出中,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)

4.5.3. Ansible Automation Platform PostgreSQL 数据库的基准测试存储性能

使用 Flexible I/O Tester (FIO)工具检查是否满足最低 Ansible Automation Platform PostgreSQL 数据库要求。FIO 是一个用于对存储系统的读取和写入 IOPS 性能进行基准测试的工具。

先决条件

  • 您已安装了 Flexible I/O Tester (fio)存储性能基准工具。

    要安装 fio,请以 root 用户身份运行以下命令:

    # yum -y install fio
  • 您有足够的磁盘空间来存储 fio 测试数据日志文件。

    该流程中显示的示例至少需要 60GB 磁盘空间在 /tmp 目录中:

    • numjobs 设置由 命令运行的作业数量。
    • size=10G 设置每个作业生成的文件大小。
  • 您已调整了 size 参数的值。调整此值可减少测试数据量。

流程

  1. 运行随机写入测试:

    $ 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
  2. 运行随机读测试:

    $ 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
  3. 查看结果:

    在基准命令编写的日志文件中,搜索以 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
    […]

    您必须根据您自己的业务需求、应用程序工作负载和新需求审核、监控和重新查看日志文件。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.