第3章 内部 Satellite データベースから外部データベースへ移行します。
Red Hat Satellite のインストールプロセスの一部として、satellite-installer コマンドは MongoDB および PostgreSQL のデータベースを Satellite と同じサーバー上にインストールします。デフォルトの内部データベースを使用している場合で、サーバーの負荷を軽減するために外部データベースを使い初める必要がある場合は、内部データベースを外部データベースに移行することが可能です。外部データベースに MongoDB と PostgreSQL のどちらのデータベースが使用できるか (または両方使用できるか) については、要件によって異なります。
Satellite Server のデータベースが内部または外部なのかを確認するには、データベースのステータスをクエリーすることができます。
PostgreSQL の場合は、以下のコマンドを実行します。
# satellite-maintain service status --only postgresql
MongoDB の場合は、以下のコマンドを実行します。
# satellite-maintain service status --only rh-mongodb34-mongod
外部データベースとして MongoDB を使用する際の注意点 および 外部データベースとして PostgreSQL を使用する際の注意点 を参照して、Satellite デプロイメントに外部データベースを使用するかどうかを決定します。
Red Hat では、外部データベースのメンテナンスのサポートやそのためのツールは提供していません。これにはバックアップ、アップグレード、データベースのチューニングが含まれます。外部データベースをサポートし、管理する自社のデータベース管理者が必要です。
デフォルトの内部データベースから外部データベースに移行するには、以下の手順を完了する必要があります。
- 「外部データベース用のホストの準備」: 外部データベースをホストするRed Hat Enterprise Linux 7 サーバーを準備します。
-
「MongoDB のインストール」:
pulp_database
を所有しているpulp
ユーザーで MongoDB を準備します。 - 「PostgreSQL のインストール」: Satellite と Candlepin のデータベースとそれらを所有する専用ユーザーがいる PostgreSQL を準備します。
-
「外部データベースへの移行」:
satellite-installer
のパラメーターを、新規データベースを参照するように編集し、satellite-installer
を実行します。
3.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 を使用することはできません。
3.2. 外部データベースとして PostgreSQL を使用する際の注意点
Foreman、Katello、および Candlepin は PostgreSQL データベースを使用します。PostgreSQL を外部データベースとして使用する場合は、以下の情報を参照してお使いの Satellite 設定にこのオプションが適しているかどうかを判別してください。Satellite は PostgreSQL バージョン 9.2 をサポートします。
外部 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 サポートチームまでお問い合わせください。
3.3. 外部データベース用のホストの準備
新しくプロビジョニングされたシステムに最新の Red Hat Enterprise Linux 7 サーバーをインストールして、外部データベースをホストします。
Red Hat Software Collections および Red Hat Enterprise Linux のサブスクリプションでは、外部データベースと Satellite を併用する場合に、正しいサービスレベルアグリーメントが提供されません。外部データベースに使用するベースオペレーティングシステムに、Satellite サブスクリプションもアタッチする必要があります。
前提条件
- Red Hat Enterprise Linux 7 サーバーは Satellite の「ストレージ要件」を満たしていること。
手順
- 「Satellite Infrastructure サブスクリプションのアタッチ」の説明を使用して、サーバーに Satellite サブスクリプションをアタッチします。
すべてのリポジトリーを無効にし、以下のリポジトリーのみを有効にします。
# subscription-manager repos --disable '*' # subscription-manager repos --enable=rhel-server-rhscl-7-rpms \ --enable=rhel-7-server-rpms
3.4. MongoDB のインストール
インストール可能な MongoDB は、内部データベースのインストール中に satellite-installer
ツールでインストールされたものと同じバージョンの MongoDB のみになります。MongoDB はサポート対象のバージョンであれば、Red Hat Software Collections (RHSCL) リポジトリーからまたは外部ソースからインストールすることが可能です。Satellite は MongoDB バージョン 3.4 をサポートしています。
手順
MongoDB をインストールするには、以下のコマンドを入力します。
# yum install rh-mongodb34 rh-mongodb34-syspaths
rh-mongodb34 サービスを起動して有効にします。
# systemctl start rh-mongodb34-mongod # systemctl enable rh-mongodb34-mongod
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'}]})"
/etc/opt/rh/rh-mongodb34/mongod.conf
ファイルでバインド IP を指定します。bindIp: your_mongodb_server_bind_IP,::1
/etc/opt/rh/rh-mongodb34/mongod.conf
ファイルを編集してsecurity
セクションの認証を有効にします。security: authorization: enabled
rh-mongodb34-mongod
サービスを再起動します。# systemctl restart rh-mongodb34-mongod
MongoDB にポート 27017 を開きます。
# firewall-cmd --add-port=27017/tcp # firewall-cmd --runtime-to-permanent
Satellite Server からデータベースにアクセスできることをテストします。接続が成功すると、コマンドから
1
が返ります。# scl enable rh-mongodb34 " mongo --host mongo.example.com \ -u pulp -p pulp_password --port 27017 --eval 'ping:1' pulp_database"
3.5. PostgreSQL のインストール
インストール可能な PostgreSQL は、内部データベースのインストール中に satellite-installer
ツールでインストールされたものと同じバージョンの PostgreSQL のみになります。PostgreSQL はサポート対象のバージョンであれば、Red Hat Enteprise Linux Server 7 リポジトリーからまたは外部ソースからインストールすることが可能です。Satellite は PostgreSQL バージョン 9.2 をサポートしています。
手順
PostgreSQL をインストールするには、以下のコマンドを入力します。
# yum install postgresql-server
PostgreSQL サービスを初期化して起動し、有効にするには、以下のコマンドを実行します。
# postgresql-setup initdb # systemctl start postgresql # systemctl enable postgresql
/var/lib/pgsql/data/postgresql.conf
ファイルを編集します。# vi /var/lib/pgsql/data/postgresql.conf
#
を削除して、着信接続をリッスンするようにします。listen_addresses = '*'
/var/lib/pgsql/data/pg_hba.conf
ファイルを編集します。# vi /var/lib/pgsql/data/pg_hba.conf
以下の行をファイルに追加します。
host all all Satellite_ip/24 md5
PostgreSQL サービスを再起動して、変更を適用します。
# systemctl restart postgresql
外部 PostgreSQL サーバーで postgresql ポートを開きます。
# firewall-cmd --add-service=postgresql # firewall-cmd --runtime-to-permanent
postgres
ユーザーに切り替え、PostgreSQL クライアントを起動します。$ su - postgres -c psql
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;
postgres
ユーザーをログアウトします。# \q
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"
3.6. 外部データベースへの移行
既存のデータをバックアップおよび転送してから、satellite-installer
コマンドを使用して、外部の MongoDB および PostgreSQL データベースに接続するように Satellite を設定します。
前提条件
- Red Hat Enterprise Linux サーバーに MongoDB および PostgreSQL データベースをインストールおよび設定していること。
手順
Satellite Serverで、
satellite-maintain
サービスを停止します。# satellite-maintain service stop
postgreSQL および mongod のサービスを起動します。
# systemctl start postgresql # systemctl start mongod
内部データベースのバックアップを作成します。
# satellite-maintain backup online --skip-pulp-content --preserve-directory -y /var/migration_backup
データを新規外部データベースに転送します。
PGPASSWORD='Foreman_Password' pg_restore -h postgres.example.com -U foreman -d foreman < /var/migration_backup/foreman.dump PGPASSWORD='Candlepin_Password' pg_restore -h postgres.example.com -U candlepin -d candlepin < /var/migration_backup/candlepin.dump mongorestore --host mongo.example.com --db pulp_database --username pulp_user --password pulp_password /var/migration_backup/mongo_dump/pulp_database/
satellite-installer
コマンドを使って Satellite が新規データベースを参照するように更新します。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 \ --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 \ --katello-pulp-manage-db false