4.5. PostgreSQL の要件
Red Hat Ansible Automation Platform は PostgreSQL13 を使用します。PostgreSQL ユーザーパスワードは、データベースに保存する前に SCRAM-SHA-256 のセキュアハッシュアルゴリズムでハッシュ化されます。
Automation Controller インスタンスがデータベースにアクセスできるかどうかを確認するには、awx-manage check_db
コマンドを使用します。
サービス | 必須 | 備考 |
---|---|---|
データベース |
|
|
PostgreSQL の設定
必要に応じて、PostgreSQL データベースを、Red Hat Ansible Automation Platform インストーラーで管理されていない個別ノードとして設定できます。Ansible Automation Platform インストーラーがデータベースサーバーを管理する場合は、大半のワークロードで一般的に推奨されているデフォルト値を使用してサーバーを設定します。データベースのパフォーマンスを向上させるために使用できる設定の詳細は、データベース設定 を参照してください。
関連情報
PostgreSQL サーバーのチューニングの詳細は、PostgreSQL のドキュメント を参照してください。
4.5.1. 外部 (お客様がサポートする) データベースの設定
Red Hat は外部 (お客様がサポートする) データベースの使用をサポートしていませんが、外部データベースはお客様によって使用されています。以下の初期設定に関するガイダンスは、関連するサポートリクエストを回避するために、製品インストールの観点からのみ提供されています。
Automation Controller で使用するために、外部の PostgreSQL 準拠データベースにデータベース、ユーザー、およびパスワードを作成するには、次の手順に従います。
手順
PostgreSQL 準拠のデータベースサーバーをインストールし、スーパーユーザー権限で接続します。
# psql -h <db.example.com> -U superuser -p 5432 -d postgres <Password for user superuser>:
ここでは、以下のようになります。
-h hostname --host=hostname
サーバーが実行されているマシンのホスト名を指定します。値がスラッシュで始まる場合、その値は Unix ドメインソケットのディレクトリーとして使用されます。
-d dbname --dbname=dbname
接続するデータベースの名前を指定します。これは、コマンドラインで最初の非オプション引数として
dbname
を指定するのと同等です。dbname
には接続文字列を指定できます。その場合、接続文字列パラメーターにより、競合するコマンドラインオプションがオーバーライドされます。-U username --username=username
デフォルトではなく、ユーザー
username
としてデータベースに接続します。(これを行うには権限が必要です。)-
ユーザーに割り当てられた
createDB
または管理者ロールを使用して、ユーザー、データベース、およびパスワードを作成します。詳細は、Database Roles を参照してください。 データベース認証情報とホストの詳細を、外部データベースとして Automation Controller インベントリーファイルに追加します。
次の例ではデフォルト値が使用されています。
[database] pg_host='db.example.com' pg_port=5432 pg_database='awx' pg_username='awx' pg_password='redhat'
インストーラーを実行します。
Automation Controller で PostgreSQL データベースを使用する場合、データベースは接続ユーザーが所有するものであり、
createDB
または管理者ロールがそのユーザーに割り当てられている必要があります。- 作成したデータベースにユーザー名、パスワード、データベース名で接続できることを確認します。
-
ユーザーの権限を確認します。ユーザーには
createDB
または管理者ロールが必要です。
この手順の実行中、外部データベースの範囲を確認する必要があります。詳細は、https://access.redhat.com/articles/4010491 を参照してください。
4.5.2. Automation HubPostgreSQL データベースの hstore 拡張機能の有効化
Ansible Automation Platform 2.4 以降、データベース移行スクリプトは hstore
フィールドを使用して情報を保存するため、Automation Hub PostgreSQL データベースの hstore
拡張機能を有効にする必要があります。
Ansible Automation Platform インストーラーとマネージド PostgreSQL サーバーを使用する場合、このプロセスは自動的に行われます。
PostgreSQL データベースが外部にある場合は、Automation Hub をインストールする前に、Automation Hub PostreSQL データベースの hstore
拡張機能を手動で有効にする必要があります。
Automation Hub のインストール前に hstore
拡張機能が有効になっていない場合は、データベースの移行中にエラーが発生します。
手順
拡張機能が PostgreSQL サーバー (Automation 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)
RHEL ベースのサーバーでは、
hstore
拡張機能はpostgresql-contrib
RPM パッケージに含まれていますが、PostgreSQL サーバー RPM パッケージのインストール時に自動的にインストールされません。RPM パッケージをインストールするには、次のコマンドを使用します。
dnf install postgresql-contrib
次のコマンドを使用して、Automation Hub データベースに
hstore
PostgreSQL 拡張機能を作成します。$ psql -d <automation hub database> -c "CREATE EXTENSION hstore;"
その出力は次のとおりです。
CREATE EXTENSION
次の出力では、使用されている
hstore
拡張子がinstalled_version
フィールドに含まれており、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
テストデータログファイルを保存するのに十分なディスク容量がある。この手順に示す例では、
/tmp
ディレクトリーに少なくとも 60 GB のディスク領域が必要です。-
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=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
結果を確認します。
ベンチマークコマンドによって書き込まれたログファイルで、
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 […]
独自のビジネス要件、アプリケーションのワークロード、および新しい要求に応じて、ログファイルを確認、監視、再検討する必要があります。