2.4. PostgreSQL の要件

Red Hat Ansible Automation Platform は PostgreSQL13 を使用します。

  • PostgreSQL ユーザーパスワードは、データベースに保存する前に SCRAM-SHA-256 のセキュアハッシュアルゴリズムでハッシュ化されます。
  • Automation Controller のインスタンスがデータベースにアクセスできるかどうかを判断するには、awx-manage check_db コマンドを使用します。

表2.2 データベース

サービス必須注記

各 Automation Controller

40GB の専用ハードディスクスペース

  • ファイルおよび作業ディレクトリーのストレージ用に、/var/ に最低 20 GB を割り当てます。
  • ストレージボリュームは、最小ベースライン 1500 IOPS で評価される必要があります。
  • プロジェクトは制御ノードとハイブリッドノードに保存され、ジョブの実行中は実行ノードにも保存されます。クラスターに大規模なプロジェクトが多数ある場合は、ディスク領域のエラーを回避するために、/var/lib/awx/projects に 2 倍の GB を追加することを検討してください。
  • 150 GB 以上を推奨
  • ストレージボリュームは、高いベースライン IOPS (1500 以上) に対応するように評価されている必要があります。

各 Automation Hub

60 GB の専用ハードディスクスペース

ストレージボリュームは、最小ベースライン 1500 IOPS で評価される必要があります。

データベース

20GB の専用ハードディスクスペース

  • 150 GB 以上を推奨
  • ストレージボリュームは、高いベースライン IOPS (1500 以上) に対応するように評価されている必要があります。
  • すべての Automation Controller データはデータベースに保存されます。データベースストレージは、管理対象ホストの数、ジョブ実行数、ファクトキャッシュに保存されているファクトの数、および個別ジョブのタスク数と共に増加します。たとえば、ホスト 250 台で 1 時間ごと (1 日に 24 回) に 20 個のタスクの Playbook を実行する場合は、毎週 800000 を超えるイベントを保存します。
  • データベースに十分な容量が確保されていない場合は、以前のジョブ実行やファクトを定期的に消去する必要があります。詳細は、Automation Controller 管理ガイド管理ジョブ を参照してください。

PostgreSQL の設定

必要に応じて、PostgreSQL データベースを、Red Hat Ansible Automation Platform インストーラーで管理されていない個別ノードとして設定できます。Ansible Automation Platform インストーラーがデータベースサーバーを管理する場合は、大半のワークロードで一般的に推奨されているデフォルト値を使用してサーバーを設定します。ただし、スタンドアロンのデータベースサーバーノードの PostgreSQL 設定を調整できます。ansible_memtotal_mb は、データベースサーバーの合計メモリーサイズになります。

max_connections == 1024
shared_buffers == ansible_memtotal_mb*0.3
work_mem == ansible_memtotal_mb*0.03
maintenance_work_mem == ansible_memtotal_mb*0.04

関連情報

PostgreSQL サーバーのチューニングの詳細は、PostgreSQL のドキュメント を参照してください。

2.4.1. Ansible Automation Platform PostgreSQL データベースのストレージパフォーマンスのベンチマーク

次の手順では、ストレージシステムの書き込み/読み取り IOPS パフォーマンスをベンチマークして、Ansible Automation Platform PostgreSQL データベースの最小要件が満たされているかを確認する方法について説明します。

前提条件

  • Flexible I/O Tester (fio) ストレージパフォーマンスベンチマークツールがインストールされている。

    fio をインストールするには、root ユーザーとして次のコマンドを実行します。

    # yum -y install fio
  • fio テストデータのログファイルを保存するために十分なディスク容量がある。

    この手順に示す例では、/tmp ディレクトリーに少なくとも 60GB のディスク領域が必要です。

    • 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
    […]

    独自のビジネス要件、アプリケーションのワークロード、および新しい要求に応じて、ログファイルを確認、監視、再検討する必要があります。