4.13. Satellite での外部データベースの使用

Red Hat Satellite のインストールプロセスの一部として、satellite-installer コマンドは MongoDB および PostgreSQL のデータベースを Satellite と同じサーバー上にインストールします。Satellite のデプロイメントによっては、デフォルトのローカルにあるデータベースの代わりに外部データベースを使用すると、サーバーの負荷を軽減される場合があります。外部データベースに MongoDB と PostgreSQL のどちらのデータベースが使用できるか (または両方使用できるか) については、要件によって異なります。

Red Hat では、外部データベースのメンテナンスのサポートやそのためのツールは提供していません。これにはバックアップ、アップグレード、データベースのチューニングが含まれます。外部データベースをサポートし、管理する自社のデータベース管理者が必要です。

外部データベースとして MongoDB を使用する際の注意点 および 外部データベースとして PostgreSQL を使用する際の注意点 を参照して、Satellite デプロイメントに外部データベースを使用するかどうかを決定します。

Satellite 用に外部データベースを作成、使用するには、以下の手順を実行します。

  1. 「外部データベース用のホストの準備」。外部データベースをホストするように Red Hat Enterprise Linux 7 サーバーを準備します。
  2. 「MongoDB のインストール」pulp_database を所有する pulp ユーザーで MongoDB を準備します。
  3. 「PostgreSQL のインストール」。Satellite および Candlepin のデータベースおよびそれらを所有する専用ユーザーで PostgreSQL を準備します。
  4. 「外部データベースを使用するための Satellite の設定」。新規データベースを参照するように satellite-installer のパラメーターを編集し、 satellite-installer を実行します。

4.13.1. 外部データベースとして MongoDB を使用する際の注意点

Pulp は MongoDB データベースを使用します。MongoDB を外部データベースとして使用する場合は、以下の情報を参照してお使いの Satellite 設定にこのオプションが適しているかどうかを判別してください。Satellite は MongoDB バージョン 3.4 をサポートしています。

外部 MongoDB の利点

  • Satellite 上の空きメモリーと空き CPU が増えます。
  • Satellite 操作にマイナスの影響をもたらすことなく MongoDB サーバーのシステムを調整する柔軟性が得られます。

外部 MongoDB のマイナス点

  • デプロイメントの複雑性が増し、問題解決がより困難になります。
  • 外部 MongoDB サーバーの場合は、パッチおよびメンテナンス対象に新たなシステムが加わることになります。
  • Satellite または Mongo データベースサーバーのいずれかにハードウェアまたはストレージ障害が発生すると、Satellite が機能しなくなります。
  • Satellite と外部データベースサーバーの間でレイテンシーが発生すると、パフォーマンスに影響が出る可能性があります。

FIPS 関連の制限

  • FIPS モードの Satellite で外部 MongoDB を使用することはできません。

4.13.2. 外部データベースとして PostgreSQL を使用する際の注意点

Foreman、Katello、および Candlepin は PostgreSQL データベースを使用します。PostgreSQL を外部データベースとして使用する場合は、以下の情報を参照してお使いの Satellite 設定にこのオプションが適しているかどうかを判別してください。Satellite は PostgreSQL バージョン 12.1 をサポートします。

外部 PostgreSQL の利点

  • Satellite 上の空きメモリーと空き CPU が増えます。
  • PostgreSQL データベースで shared_buffers を高い値に設定しても、Satellite 上の他のサービスの妨げるリスクがありません。
  • Satellite 操作にマイナスの影響をもたらすことなく PostgreSQL サーバーのシステムを調整する柔軟性が得られます。

外部 PostgreSQL のマイナス点

  • デプロイメントの複雑性が増し、問題解決がより困難になります。
  • 外部 PostgreSQL サーバーの場合は、パッチおよびメンテナンス対象に新たなシステムが加わることになります。
  • Satellite または PostgreSQL データベースサーバーのいずれかにハードウェアまたはストレージ障害が発生すると、Satellite が機能しなくなります。
  • Satellite Server とデータベースサーバーの間でレイテンシーが発生すると、パフォーマンスに影響が出ます。

お使いの Satellite 上の PostgreSQL データベースが原因でパフォーマンスの低下が生じている可能性がある場合は、「Satellite 6: How to enable postgres query logging to detect slow running queries」を参照して時間のかかっているクエリーがあるかどうか判定します。1 秒以上かかるクエリーがある場合は、通常、大規模インストールのパフォーマンスが原因であることが多く、外部データベースに移行しても問題解決が期待できません。時間のかかっているクエリーがある場合は、Red Hat サポートチームまでお問い合わせください。

4.13.3. 外部データベース用のホストの準備

新しくプロビジョニングされたシステムに最新の Red Hat Enterprise Linux 7 サーバーをインストールして、外部データベースをホストします。

Red Hat Software Collections および Red Hat Enterprise Linux のサブスクリプションでは、外部データベースと Satellite を併用する場合に、正しいサービスレベルアグリーメントが提供されません。外部データベースに使用するベースオペレーティングシステムにも、Satellite サブスクリプションをアタッチする必要があります。

前提条件

  • Red Hat Enterprise Linux 7 サーバーが Satellite の「ストレージ要件」を満たしていること。

手順

  1. Satellite Infrastructure サブスクリプションのアタッチ」の手順に従い、サーバーに Satellite サブスクリプションをアタッチします。
  2. すべてのリポジトリーを無効にし、以下のリポジトリーのみを有効にします。

    # subscription-manager repos --disable '*'
    # subscription-manager repos --enable=rhel-server-rhscl-7-rpms \
    --enable=rhel-7-server-rpms

4.13.4. MongoDB のインストール

インストール可能な MongoDB は、内部データベースのインストール中に satellite-installer ツールでインストールされたものと同じバージョンの MongoDB のみになります。MongoDB はサポート対象のバージョンであれば、Red Hat Software Collections (RHSCL) リポジトリーからまたは外部ソースからインストールすることが可能です。Satellite は MongoDB バージョン 3.4 をサポートしています。

手順

  1. MongoDB をインストールするには、以下のコマンドを入力します。

    # yum install rh-mongodb34 rh-mongodb34-syspaths
  2. rh-mongodb34 サービスを起動して有効にします。

    # systemctl start rh-mongodb34-mongod
    # systemctl enable rh-mongodb34-mongod
  3. pulp_database データベース用に、MongoDB に Pulp ユーザーを作成します。

    # mongo pulp_database \
    --eval "db.createUser({user:'pulp',pwd:'pulp_password',roles:[{role:'dbOwner', db:'pulp_database'},{ role: 'readWrite', db: 'pulp_database'}]})"
  4. /etc/opt/rh/rh-mongodb34/mongod.conf ファイルでバインド IP を指定します。

    bindIp: your_mongodb_server_bind_IP,::1
  5. /etc/opt/rh/rh-mongodb34/mongod.conf ファイルを編集して security セクションの認証を有効にします。

    security:
      authorization: enabled
  6. rh-mongodb34-mongod サービスを再起動します。

    # systemctl restart rh-mongodb34-mongod
  7. MongoDB にポート 27017 を開きます。

    # firewall-cmd --add-port=27017/tcp
    # firewall-cmd --runtime-to-permanent
  8. Satellite Server から、データベースにアクセスできることをテストします。接続が成功すると、コマンドから 1 が返ります。

    # scl enable rh-mongodb34 " mongo --host mongo.example.com \
    -u pulp -p pulp_password --port 27017 --eval 'ping:1' pulp_database"

4.13.5. PostgreSQL のインストール

インストール可能な PostgreSQL は、内部データベースのインストール中に satellite-installer ツールでインストールされたものと同じバージョンの PostgreSQL のみになります。PostgreSQL はサポート対象のバージョンであれば、Red Hat Enteprise Linux Server 7 リポジトリーからまたは外部ソースからインストールすることが可能です。Satellite は PostgreSQL バージョン 12.1 をサポートします。

手順

  1. PostgreSQL をインストールするには、以下のコマンドを入力します。

    # yum install rh-postgresql12-postgresql-server \
    rh-postgresql12-syspaths \
    rh-postgresql12-postgresql-evr
  2. PostgreSQL を初期化するには、以下のコマンドを入力します。

    # postgresql-setup initdb
  3. /var/opt/rh/rh-postgresql12/lib/pgsql/data/postgresql.conf ファイルを編集します。

    # vi /var/opt/rh/rh-postgresql12/lib/pgsql/data/postgresql.conf
  4. # を削除して、着信接続をリッスンするようにします。

    listen_addresses = '*'
  5. /var/opt/rh/rh-postgresql12/lib/pgsql/data/pg_hba.conf ファイルを編集します。

    # vi /var/opt/rh/rh-postgresql12/lib/pgsql/data/pg_hba.conf
  6. 以下の行をファイルに追加します。

      host  all   all   Satellite_ip/24   md5
  7. PostgreSQL サービスを起動し、有効にするには、以下のコマンドを実行します。

    # systemctl start postgresql
    # systemctl enable postgresql
  8. 外部 PostgreSQL サーバーで postgresql ポートを開きます。

    # firewall-cmd --add-service=postgresql
    # firewall-cmd --runtime-to-permanent
  9. postgres ユーザーに切り替え、PostgreSQL クライアントを起動します。

    $ su - postgres -c psql
  10. Satellite と Candlepin 用にそれぞれ、データベース、および専用ロールを作成します。

    CREATE USER "foreman" WITH PASSWORD 'Foreman_Password';
    CREATE USER "candlepin" WITH PASSWORD 'Candlepin_Password';
    CREATE DATABASE foreman OWNER foreman;
    CREATE DATABASE candlepin OWNER candlepin;
  11. postgres ユーザーをログアウトします。

    # \q
  12. Satellite Server から、データベースにアクセスできることをテストします。接続に成功した場合には、コマンドは 1 を返します。

    # PGPASSWORD='Foreman_Password' psql -h postgres.example.com  -p 5432 -U foreman -d foreman -c "SELECT 1 as ping"
    # PGPASSWORD='Candlepin_Password' psql -h postgres.example.com -p 5432 -U candlepin -d candlepin -c "SELECT 1 as ping"

4.13.6. 外部データベースを使用するための Satellite の設定

satellite-installer コマンドを使用して Satellite が外部の MongoDB と PostgreSQL データベースに接続するように設定します。

前提条件

  • Red Hat Enterprise Linux サーバーに MongoDB および PostgreSQL データベースをインストールおよび設定していること。

手順

  1. Satellite の外部データベースを設定するには以下のコマンドを入力します。

    satellite-installer --scenario satellite \
      --foreman-db-host postgres.example.com \
      --foreman-db-password Foreman_Password \
      --foreman-db-database foreman \
      --katello-candlepin-db-host postgres.example.com \
      --katello-candlepin-db-name candlepin \
      --katello-candlepin-db-password Candlepin_Password \
      --katello-candlepin-manage-db false \
      --katello-pulp-db-username pulp \
      --katello-pulp-db-password pulp_password \
      --katello-pulp-db-seeds mongo.example.com:27017 \
      --katello-pulp-db-name pulp_database
  2. データベースのステータスを確認します。

    • PostgreSQL の場合は、以下のコマンドを実行します。

      # satellite-maintain service status --only postgresql
    • MongoDB の場合は、以下のコマンドを実行します。

      # satellite-maintain service status --only rh-mongodb34-mongod