3.6. Automation Controller の PostgreSQL データベースの設定およびメンテナンス


Automation Controller のパフォーマンスを向上させるために、データベースで次の設定パラメーターを設定できます。

メンテナンス

VACUUM タスクと ANALYZE タスクは、パフォーマンスに影響を与える可能性がある重要なメンテナンス作業です。通常の PostgreSQL 操作では、更新によって削除または不要になったタプルはテーブルから物理的に削除されません。これらは、VACUUM が完了するまで残ります。したがって、頻繁に更新されるテーブルでは特に、定期的に VACUUM を実行する必要があります。ANALYZE は、データベース内のテーブルの内容に関する統計情報を収集し、結果を pg_statistic システムカタログに保存します。その後、クエリープランナーはこれらの統計情報を使用して、クエリーの最も効率的な実行計画を決定します。自動バキュームに関する PostgreSQL 設定パラメーターは、VACUUM コマンドおよび ANALYZE コマンドの実行を自動化します。自動バキュームは true に設定することを推奨します。ただし、データベースにアイドル時間がまったくない場合、自動バキュームは実行されません。自動バキュームによってデータベースディスクの領域が十分にクリーンアップされていないことが確認された場合、特定のメンテナンス期間中に特定のバキュームタスクをスケジューリングすることで解決する場合があります。

設定パラメーター

PostgreSQL サーバーのパフォーマンスを向上させるには、データベースメモリーを管理する次の Grand Unified Configuration (GUC) パラメーターを設定します。これらのパラメーターは、データベースサーバーの設定を管理する postgresql.conf ファイルの $PDATA ディレクトリー内にあります。

  • shared_buffers: データをキャッシュするためにサーバーに割り当てるメモリーの量を決定します。このパラメーターのデフォルト値は 128 MB です。この値を変更する場合は、マシンの合計 RAM の 15% - 25% に設定する必要があります。
注記

shared_buffers の値を変更した後は、データベースサーバーを再起動する必要があります。

  • work_mem: ディスクスワッピングの前に内部ソート操作とハッシュテーブルで使用されるメモリーの量を指定します。ソート操作は、order by、distinct、および merge join 操作に使用されます。ハッシュテーブルは、hash joins と hash-based アグリゲーションで使用されます。このパラメーターのデフォルト値は 4 MB です。work_mem パラメーターに正しい値を設定すると、ディスクスワッピングが減少し、検索速度が向上します。

    • 次の式を使用して、データベースサーバーの work_mem パラメーターの最適な値を計算します。
Copy to Clipboard Toggle word wrap
Total RAM * 0.25 / max_connections
注記

work_mem に大きな値を設定すると、データベースに対して開いている接続が多すぎる場合に、PostgreSQL サーバーがメモリー不足 (OOM) になる可能性があります。

  • max_connections: データベースサーバーへの同時接続の最大数を指定します。
  • maintenance_work_mem: vacuum、create index、および alter table add foreign key 操作などのメンテナンス操作で使用するメモリーの最大量を指定します。このパラメーターのデフォルト値は 64 MB です。このパラメーターの値を計算するには、次の式を使用します。
Copy to Clipboard Toggle word wrap
Total RAM * 0.05
注記

バキューム処理のパフォーマンスを向上させるには、maintenance_work_memwork_mem よりも高く設定します。

関連情報

自動バキューム設定に関する詳細は、Automatic Vacuuming を参照してください。

3.6.1. Automation Controller 設定ファイル内のプレーンテキストパスワードの暗号化

Automation Controller 設定ファイルに保存されるパスワードは、プレーンテキストで保存されます。/etc/tower/conf.d/ ディレクトリーへのアクセス権を持つユーザーは、データベースへのアクセスに使用されるパスワードを表示できます。ディレクトリーへのアクセスは権限によって制御されるため、ディレクトリーは保護されていますが、セキュリティーに関する調査結果によっては、この保護は不十分であると考えられています。解決策は、パスワードを個別に暗号化することです。

3.6.1.1. PostgreSQL パスワードハッシュの作成

手順

  1. Automation Controller ノードで、次のコマンドを実行します。

    Copy to Clipboard Toggle word wrap
    # awx-manage shell_plus
  2. 続いて、python プロンプトから以下を実行します。

    Copy to Clipboard Toggle word wrap
    >>> from awx.main.utils import encrypt_value, get_encryption_key \
    >>> postgres_secret = encrypt_value('$POSTGRES_PASS') \
    >>> print(postgres_secret)
    注記

    $POSTGRES_PASS 変数を、暗号化する実際のプレーンテキストのパスワードに置き換えます。

    出力は以下のようになります。

    Copy to Clipboard Toggle word wrap
    $encrypted$UTF8$AESCBC$Z0FBQUFBQmtLdGNRWXFjZGtkV1ZBR3hkNGVVbFFIU3hhY21UT081eXFkR09aUWZLcG9TSmpndmZYQXFyRHVFQ3ZYSE15OUFuM1RHZHBqTFU3S0MyNEo2Y2JWUURSYktsdmc9PQ==
  3. これらのハッシュの完全な値をコピーして保存します。

    • 次の例に示すように、ハッシュ値は $encrypted$ で始まり、単なる文字列ではありません。

      Copy to Clipboard Toggle word wrap
      $encrypted$AESCBC$Z0FBQUFBQmNONU9BbGQ1VjJyNDJRVTRKaFRIR09Ib2U5TGdaYVRfcXFXRjlmdmpZNjdoZVpEZ21QRWViMmNDOGJaM0dPeHN2b194NUxvQ1M5X3dSc1gxQ29TdDBKRkljWHc9PQ==

      $*_PASS 値は、インベントリーファイル内ですでにプレーンテキストになっていることに注意してください。

これらの手順では、Automation Controller 設定ファイル内のプレーンテキストパスワードを置き換えるハッシュ値を提供します。

3.6.1.2. Postgres パスワードの暗号化

次の手順では、プレーンテキストのパスワードを暗号化された値に置き換えます。クラスター内の各ノードで次の手順を実行します。

手順

  1. 以下を使用して /etc/tower/conf.d/postgres.py を編集します。

    Copy to Clipboard Toggle word wrap
    $ vim /etc/tower/conf.d/postgres.py
  2. ファイルの先頭に次の行を追加します。

    Copy to Clipboard Toggle word wrap
    from awx.main.utils import decrypt_value, get_encryption_key
  3. 'PASSWORD': の後にリストされているパスワード値を削除し、次の行に置き換えて、指定された $encrytpted.. の値を独自のハッシュ値に置き換えます。

    Copy to Clipboard Toggle word wrap
    decrypt_value(get_encryption_key('value'),'$encrypted$AESCBC$Z0FBQUFBQmNONU9BbGQ1VjJyNDJRVTRKaFRIR09Ib2U5TGdaYVRfcXFXRjlmdmpZNjdoZVpEZ21QRWViMmNDOGJaM0dPeHN2b194NUxvQ1M5X3dSc1gxQ29TdDBKRkljWHc9PQ=='),
    注記

    このステップのハッシュ値は、postgres_secret の出力値です。

  4. 完全な postgres.py は次のようになります。

    Copy to Clipboard Toggle word wrap
    # Ansible Automation platform controller database settings. from awx.main.utils import decrypt_value, get_encryption_key DATABASES = { 'default': { 'ATOMIC_REQUESTS': True, 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'awx', 'USER': 'awx', 'PASSWORD': decrypt_value(get_encryption_key('value'),'$encrypted$AESCBC$Z0FBQUFBQmNONU9BbGQ1VjJyNDJRVTRKaFRIR09Ib2U5TGdaYVRfcXFXRjlmdmpZNjdoZVpEZ21QRWViMmNDOGJaM0dPeHN2b194NUxvQ1M5X3dSc1gxQ29TdDBKRkljWHc9PQ=='), 'HOST': '127.0.0.1', 'PORT': 5432, } }
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.