2.5. PostgreSQL の要件
Red Hat Ansible Automation Platform は PostgreSQL 15 を使用します。PostgreSQL ユーザーパスワードは、データベースに保存する前に SCRAM-SHA-256 のセキュアハッシュアルゴリズムでハッシュ化されます。
Automation Controller インスタンスがデータベースにアクセスできるかどうかを確認するには、awx-manage check_db コマンドを使用します。
| サービス | 必須 | 備考 |
|---|---|---|
| データベース |
|
|
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 をアンインストールするときは、外部データベースをクリアしてください。
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 を参照してください。
2.5.2. Automation Hub PostgreSQL データベースの 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-contribRPM パッケージに含まれていますが、PostgreSQL サーバー RPM パッケージのインストール時に自動的にインストールされません。RPM パッケージをインストールするには、次のコマンドを使用します。
dnf install postgresql-contrib次のコマンドを使用して、Automation Hub データベースに
hstorePostgreSQL 拡張機能を作成します。$ 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)
2.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 fiofioテストデータログファイルを保存するのに十分なディスク容量がある。この手順に示す例では、
/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 […]独自のビジネス要件、アプリケーションのワークロード、および新しい要求に応じて、ログファイルを確認、監視、再検討する必要があります。