4.13. Satellite での外部データベースの使用
Red Hat Satellite のインストールプロセスの一部として、satellite-installer コマンドは PostgreSQL のデータベースを Satellite と同じサーバー上にインストールします。Satellite のデプロイメントによっては、デフォルトのローカルにあるデータベースの代わりに外部データベースを使用すると、サーバーの負荷が軽減される場合があります。
Red Hat では、外部データベースのメンテナンスのサポートやそのためのツールは提供していません。これにはバックアップ、アップグレード、データベースのチューニングが含まれます。外部データベースをサポートし、管理する自社のデータベース管理者が必要です。
Satellite 用に外部データベースを作成して使用するには、以下の手順を実行します。
- 「外部データベース用のホストの準備」。外部データベースをホストする Red Hat Enterprise Linux 8 サーバーまたは Red Hat Enterprise Linux 7 サーバーを準備します。
- 「PostgreSQL のインストール」。Satellite、Candlepin、Pulp のデータベースを使用して PostgreSQL を準備し、それらを所有する専用ユーザーを配置します。
-
「外部データベースを使用するための Satellite Server の設定」。新規データベースを参照するように
satellite-installer
のパラメーターを編集し、satellite-installer
を実行します。
4.13.1. 外部データベースとして PostgreSQL を使用する際の注意点
Foreman、Katello、および Candlepin は PostgreSQL データベースを使用します。PostgreSQL を外部データベースとして使用する場合は、以下の情報を参照してお使いの Satellite 設定にこのオプションが適しているかどうかを判別してください。Satellite は PostgreSQL バージョン 12 をサポートします。
外部 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.2. 外部データベース用のホストの準備
新しくプロビジョニングされたシステムを最新の Red Hat Enterprise Linux 8 サーバーまたは Red Hat Enterprise Linux 7 サーバーにインストールし、外部データベースをホストします。
Red Hat Software Collections および Red Hat Enterprise Linux のサブスクリプションでは、外部データベースと Satellite を併用する場合に、正しいサービスレベルアグリーメントが提供されません。外部データベースに使用するベースオペレーティングシステムにも、Satellite サブスクリプションをアタッチする必要があります。
前提条件
- 準備されたホストは、Satellite の Storage Requirements を満たしている必要があります。
手順
- Attaching the Satellite Infrastructure Subscription の手順に従い、サーバーに Satellite サブスクリプションをアタッチします。
すべてのリポジトリーを無効にし、以下のリポジトリーのみを有効にします。
Red Hat Enterprise Linux 7 の場合:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription-manager repos --disable '*' subscription-manager repos --enable=rhel-server-rhscl-7-rpms \ --enable=rhel-7-server-rpms --enable=rhel-7-server-satellite-6.11-rpms
# subscription-manager repos --disable '*' # subscription-manager repos --enable=rhel-server-rhscl-7-rpms \ --enable=rhel-7-server-rpms --enable=rhel-7-server-satellite-6.11-rpms
Red Hat Enterprise Linux 8 の場合:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription-manager repos --disable '*' subscription-manager repos \ --enable=satellite-6.11-for-rhel-8-x86_64-rpms \ --enable=rhel-8-for-x86_64-baseos-rpms \ --enable=rhel-8-for-x86_64-appstream-rpms
# subscription-manager repos --disable '*' # subscription-manager repos \ --enable=satellite-6.11-for-rhel-8-x86_64-rpms \ --enable=rhel-8-for-x86_64-baseos-rpms \ --enable=rhel-8-for-x86_64-appstream-rpms
Red Hat Enterprise Linux 8 で、以下のモジュールを有効にします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnf module enable satellite:el8
# dnf module enable satellite:el8
注記モジュール
satellite:el8
を有効にすると、postgresql:10
およびruby:2.5
との競合について警告が表示されます。これは、これらのモジュールが Red Hat Enterprise Linux 8 でデフォルトのモジュールバージョンに設定されているためです。モジュールsatellite:el8
には、モジュールpostgresql:12
およびruby:2.7
への依存関係があり、satellite:el8
モジュールで有効になります。これらの警告はインストールプロセスの失敗の原因にはならないため、安全に無視できます。Red Hat Enterprise Linux 8 のモジュールとライフサイクルストリームの詳細については、Red Hat Enterprise Linux Application Streams Life Cycle を参照してください。
4.13.3. PostgreSQL のインストール
インストール可能な PostgreSQL は、内部データベースのインストール中に satellite-installer
ツールでインストールされたものと同じバージョンの PostgreSQL のみになります。PostgreSQL は、Red Hat Enterprise Linux 8 リポジトリーまたは Red Hat Enterprise Linux Server 7 リポジトリーを使用してインストールできます。Satellite は PostgreSQL バージョン 12 をサポートします。
4.13.3.1. Red Hat Enterprise Linux 8 への PostgreSQL のインストール
手順
PostgreSQL をインストールするには、以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnf install postgresql-server postgresql-evr
# dnf install postgresql-server postgresql-evr
PostgreSQL を初期化するには、以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow postgresql-setup initdb
# postgresql-setup initdb
/var/lib/pgsql/data/postgresql.conf
ファイルで以下を行います。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /var/lib/pgsql/data/postgresql.conf
# vi /var/lib/pgsql/data/postgresql.conf
#
を削除して、着信接続をリッスンするようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow listen_addresses = '*'
listen_addresses = '*'
/var/lib/pgsql/data/pg_hba.conf
ファイルを編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /var/lib/pgsql/data/pg_hba.conf
# vi /var/lib/pgsql/data/pg_hba.conf
以下の行をファイルに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow host all all Satellite_ip/24 md5
host all all Satellite_ip/24 md5
PostgreSQL サービスを起動し、有効にするには、以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start postgresql systemctl enable postgresql
# systemctl start postgresql # systemctl enable postgresql
外部 PostgreSQL サーバーで postgresql ポートを開きます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --add-service=postgresql firewall-cmd --runtime-to-permanent
# firewall-cmd --add-service=postgresql # firewall-cmd --runtime-to-permanent
postgres
ユーザーに切り替え、PostgreSQL クライアントを起動します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow su - postgres -c psql
$ su - postgres -c psql
3 つのデータベースと専用のロールを作成します。1 つは Satellite 用、1 つは Candlepin 用、もう 1 つは Pulp 用です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CREATE USER "foreman" WITH PASSWORD 'Foreman_Password'; CREATE USER "candlepin" WITH PASSWORD 'Candlepin_Password'; CREATE USER "pulp" WITH PASSWORD 'Pulpcore_Password'; CREATE DATABASE foreman OWNER foreman; CREATE DATABASE candlepin OWNER candlepin; CREATE DATABASE pulpcore OWNER pulp;
CREATE USER "foreman" WITH PASSWORD 'Foreman_Password'; CREATE USER "candlepin" WITH PASSWORD 'Candlepin_Password'; CREATE USER "pulp" WITH PASSWORD 'Pulpcore_Password'; CREATE DATABASE foreman OWNER foreman; CREATE DATABASE candlepin OWNER candlepin; CREATE DATABASE pulpcore OWNER pulp;
postgres
ユーザーをログアウトします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow \q
# \q
Satellite Server から、データベースにアクセスできることをテストします。接続に成功した場合には、コマンドは
1
を返します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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" PGPASSWORD='Pulpcore_Password' psql -h postgres.example.com -p 5432 -U pulp -d pulpcore -c "SELECT 1 as ping"
# 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" # PGPASSWORD='Pulpcore_Password' psql -h postgres.example.com -p 5432 -U pulp -d pulpcore -c "SELECT 1 as ping"
4.13.3.2. Red Hat Enterprise Linux 7 への PostgreSQL のインストール
手順
PostgreSQL をインストールするには、以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install rh-postgresql12-postgresql-server \ rh-postgresql12-syspaths \ rh-postgresql12-postgresql-evr
# yum install rh-postgresql12-postgresql-server \ rh-postgresql12-syspaths \ rh-postgresql12-postgresql-evr
PostgreSQL を初期化するには、以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow postgresql-setup initdb
# postgresql-setup initdb
/var/opt/rh/rh-postgresql12/lib/pgsql/data/postgresql.conf
ファイルを編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /var/opt/rh/rh-postgresql12/lib/pgsql/data/postgresql.conf
# vi /var/opt/rh/rh-postgresql12/lib/pgsql/data/postgresql.conf
#
を削除して、着信接続をリッスンするようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow listen_addresses = '*'
listen_addresses = '*'
/var/opt/rh/rh-postgresql12/lib/pgsql/data/pg_hba.conf
ファイルを編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /var/opt/rh/rh-postgresql12/lib/pgsql/data/pg_hba.conf
# vi /var/opt/rh/rh-postgresql12/lib/pgsql/data/pg_hba.conf
以下の行をファイルに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow host all all Satellite_ip/24 md5
host all all Satellite_ip/24 md5
PostgreSQL サービスを起動し、有効にするには、以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start postgresql systemctl enable postgresql
# systemctl start postgresql # systemctl enable postgresql
外部 PostgreSQL サーバーで postgresql ポートを開きます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --add-service=postgresql firewall-cmd --runtime-to-permanent
# firewall-cmd --add-service=postgresql # firewall-cmd --runtime-to-permanent
postgres
ユーザーに切り替え、PostgreSQL クライアントを起動します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow su - postgres -c psql
$ su - postgres -c psql
3 つのデータベースと専用のロールを作成します。1 つは Satellite 用、1 つは Candlepin 用、もう 1 つは Pulp 用です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CREATE USER "foreman" WITH PASSWORD 'Foreman_Password'; CREATE USER "candlepin" WITH PASSWORD 'Candlepin_Password'; CREATE USER "pulp" WITH PASSWORD 'Pulpcore_Password'; CREATE DATABASE foreman OWNER foreman; CREATE DATABASE candlepin OWNER candlepin; CREATE DATABASE pulpcore OWNER pulp;
CREATE USER "foreman" WITH PASSWORD 'Foreman_Password'; CREATE USER "candlepin" WITH PASSWORD 'Candlepin_Password'; CREATE USER "pulp" WITH PASSWORD 'Pulpcore_Password'; CREATE DATABASE foreman OWNER foreman; CREATE DATABASE candlepin OWNER candlepin; CREATE DATABASE pulpcore OWNER pulp;
postgres
ユーザーをログアウトします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow \q
# \q
Satellite Server から、データベースにアクセスできることをテストします。接続に成功した場合には、コマンドは
1
を返します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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" PGPASSWORD='Pulpcore_Password' psql -h postgres.example.com -p 5432 -U pulp -d pulpcore -c "SELECT 1 as ping"
# 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" # PGPASSWORD='Pulpcore_Password' psql -h postgres.example.com -p 5432 -U pulp -d pulpcore -c "SELECT 1 as ping"
4.13.4. 外部データベースを使用するための Satellite Server の設定
satellite-installer
コマンドを使用して Satellite が外部の PostgreSQL データベースに接続するように設定します。
前提条件
- Red Hat Enterprise Linux サーバーに PostgreSQL データベースをインストールおよび設定していること。
手順
Satellite の外部データベースを設定するには以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow satellite-installer --scenario satellite \ --foreman-db-host postgres.example.com \ --foreman-db-password Foreman_Password \ --foreman-db-database foreman \ --foreman-db-manage false \ --katello-candlepin-db-host postgres.example.com \ --katello-candlepin-db-name candlepin \ --katello-candlepin-db-password Candlepin_Password \ --katello-candlepin-manage-db false \ --foreman-proxy-content-pulpcore-manage-postgresql false \ --foreman-proxy-content-pulpcore-postgresql-host postgres.example.com \ --foreman-proxy-content-pulpcore-postgresql-db-name pulpcore \ --foreman-proxy-content-pulpcore-postgresql-password Pulpcore_Password --foreman-proxy-content-pulpcore-postgresql-user pulp
satellite-installer --scenario satellite \ --foreman-db-host postgres.example.com \ --foreman-db-password Foreman_Password \ --foreman-db-database foreman \ --foreman-db-manage false \ --katello-candlepin-db-host postgres.example.com \ --katello-candlepin-db-name candlepin \ --katello-candlepin-db-password Candlepin_Password \ --katello-candlepin-manage-db false \ --foreman-proxy-content-pulpcore-manage-postgresql false \ --foreman-proxy-content-pulpcore-postgresql-host postgres.example.com \ --foreman-proxy-content-pulpcore-postgresql-db-name pulpcore \ --foreman-proxy-content-pulpcore-postgresql-password Pulpcore_Password --foreman-proxy-content-pulpcore-postgresql-user pulp
これらの外部データベースに対して Secure Sockets Layer (SSL) プロトコルを有効にするには、次のオプションを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --foreman-db-sslmode verify-full --foreman-db-root-cert <path_to_CA> --katello-candlepin-db-ssl true --katello-candlepin-db-ssl-verify true --katello-candlepin-db-ssl-ca <path_to_CA> --foreman-proxy-content-pulpcore-postgresql-ssl true --foreman-proxy-content-pulpcore-postgresql-ssl-root-ca <path_to_CA>
--foreman-db-sslmode verify-full --foreman-db-root-cert <path_to_CA> --katello-candlepin-db-ssl true --katello-candlepin-db-ssl-verify true --katello-candlepin-db-ssl-ca <path_to_CA> --foreman-proxy-content-pulpcore-postgresql-ssl true --foreman-proxy-content-pulpcore-postgresql-ssl-root-ca <path_to_CA>