第8章 Satellite Server および Capsule Server のバックアップ

本章では、災害発生時に Red Hat Satellite デプロイメントと関連データの継続性を確保するために必要な最小限のバックアップ手順について説明します。デプロイメントでカスタム設定を使用する場合は、バックアップおよび災害復旧ポリシーを策定する際にカスタム設定をどのように扱うかについて考慮する必要があります。

8.1. Satellite のバックアップ

Satellite Server または Capsule Server のバックアップは、Satellite または Capsule の復元またはデバッグに使用できるアーカイブされたデータベースと設定ファイルの集まりです。foreman-maintain backup ユーティリティーを使用して、バックアップを作成します。

バックアップの種類

次の種類のバックアップを作成できます。

完全

Satellite または Capsule の完全なバックアップ。

増分

前回のバックアップ以降の変更のバックアップ。

Pulp コンテンツなし

Pulp データベースコンテンツを含まない部分バックアップ。

バックアップの方法

バックアップの実行には、次の方法を使用できます。

オフライン

オフラインで Satellite または Capsule のバックアップを作成します。

オンライン

オンラインで Satellite または Capsule のバックアップを作成します。

スナップショット

論理ボリュームマネージャー (LVM) のスナップショットからバックアップを作成します。Satellite または Capsule は、スナップショットの作成中はオフラインです。

バックアップの方法と種類の詳細は、「バックアップの方法と種類」を参照してください。

foreman-maintain backup ユーティリティーを使用すると、指定したディレクトリーにのサブディレクトリーに、タイムスタンプ付きでバックアップが作成されます。--preserve-directory オプションを使用して、サブディレクトリーに別の名前を指定できます。--preserve-directory オプションを使用すると、バックアップの失敗時には、サブディレクトリーは消去されません。

Satellite または Capsule がリモートデータベースを使用するように設定されている場合には、オフラインまたはスナップショットバックアップの実行時に、このユーティリティーでデータベースダンプが実行されます。

バックアップの考慮事項

  • バックアップは定期的に作成してください。cron ジョブを使用した定期的バックアップのスケジュール設定の詳細は、「オフラインバックアップのスケジュール設定のスクリプト例」を参照してください。
  • バックアップの安全性を確保するには、別のシステム上の別のストレージにバックアップを作成します。
  • バックアップには、/root/ssl-build ディレクトリーの機密情報が含まれます。たとえば、ホスト名、SSH キー、要求ファイル、SSL 証明書が含まれる場合があります。バックアップを暗号化するか、安全な場所に移動し、破損のリスクやホストへの不正アクセスを最小限に抑えます。

8.2. 完全バックアップ

Satellite または Capsule Server の完全バックアップには、Satellite または Capsule のインスタンスの復元に必要なすべてのデータベースと設定ファイルが含まれます。

バックアップのコンテンツ

完全バックアップには、以下のファイルが含まれます。

  • 圧縮された設定ファイル
  • 圧縮された MongoDB ファイル
  • 圧縮された PostgreSQL データベースファイル
  • Pulp ディレクトリーファイル
  • Satellite 環境の詳細を含む設定ファイル

ストレージ要件

完全バックアップでは、ファイルのコピー後に圧縮されるので、(コピーしたファイルと圧縮ファイルの) 両方を保持する十分なストレージが必要です。さらに、アーカイブと圧縮時に作成されるメタデータファイル用に、追加のスペースが必要です。

Satellite または Capsule の完全バックアップでは、以下を合計した値のストレージ量が必要です。

  • Satellite データベースおよび設定ファイルのサイズ
  • 圧縮された Satellite データベースおよび設定ファイルのサイズ
  • 圧縮前および圧縮後のデータベースおよび設定ファイルのサイズの合計の 20%

8.2.1. 完全バックアップサイズの見積もり

バックアップサイズを見積もるには、データベースと設定ファイルで使用する容量の合計を検索します。この結果を使用して、バックアップサイズを計算します。

手順

  1. du コマンドを使用して、データベースおよび設定ファイルのサイズを検索します。

    # du -csh /var/lib/mongodb /var/lib/pgsql/data /var/lib/pulp /var/lib/qpidd /var/lib/tftpboot /etc /root/ssl-build /var/www/html/pub /opt/puppetlabs

    例:

    # du -csh /var/lib/mongodb /var/lib/pgsql/data /var/lib/pulp /var/lib/qpidd /var/lib/tftpboot /etc /root/ssl-build /var/www/html/pub /opt/puppetlabs
    480G	/var/lib/mongodb
    100G    /var/lib/pgsql/data
    100G	/var/lib/pulp
    886M    /var/lib/qpidd
    16M     /var/lib/tftpboot
    37M     /etc
    900K	/root/ssl-build
    100K	/var/www/html/pub
    2M	    /opt/puppetlabs
    681G    total

    この例では、ファイルのサイズは 681 GB です。

  2. 上記の結果を使用して、圧縮データの保存に必要な容量を計算します。

    圧縮データのサイズを見積もる方法の詳細は、「バックアップデータ圧縮率」を参照してください。

    この例では、バックアップの圧縮データに 180 GB が必要です。

  3. 必要な追加の空き容量を計算します。

    必要な追加容量は、圧縮後および圧縮前のファイルの合計の 20% であるため、この例で必要な追加容量は 178 GB です。

  4. 上記の結果の合計を計算します。

    この例では、次のようになります。

    Uncompressed size = 861 GB
    Compressed size = 180 GB
    Additional free space required = 172 GB
    Sum = 1033 GB

    この例では、バックアップの見積もりサイズは 1033 GB です。

8.2.2. 完全バックアップのオフライン実行

オフライン方法を使用して完全バックアップを実行します。バックアッププロセスが完了するまでの所要時間は長く、Satellite はこのバックアップ処理中は使用できません。

前提条件

  • バックアップ場所には、バックアップを保存するのに十分な空きディスク領域がある。詳細については、「完全バックアップサイズの見積もり」 を参照してください。
  • postgres ユーザーに、バックアップディレクトリーへの書き込み権限が割り当てられている。

手順

  1. foreman-maintain backup スクリプトを実行します。

    # foreman-maintain backup offline /var/backup_directory
  2. バックアップを開始するようにプロンプトが表示されたら、y を入力します。

    Do you want to proceed?, [y(yes), q(quit)] y

    バックアッププロセスの完了までに長時間かかります。

リンク

8.2.3. 完全バックアップのオンライン実行

問題をデバッグし、トラブルシューティングを行うには、オンライン方法を使用して、完全バックアップを実行します。Satellite はバックアップ処理中でも使用できます。

バックアップを成功させるには、バックアップが完了するまで次の操作を実行しないでください。

  • コンテンツビューの公開、追加、または削除
  • コンテンツビューバージョンのプロモート
  • 同期プランの追加、変更、または削除
  • リポジトリーの追加、削除、または同期

バックアッププロセスの完了までに長時間かかります。

前提条件

  • バックアップ場所には、バックアップを保存するのに十分な空きディスク領域がある。詳細については、「完全バックアップサイズの見積もり」 を参照してください。
  • postgres ユーザーに、バックアップディレクトリーへの書き込み権限が割り当てられている。

手順

  1. foreman-maintain backup スクリプトを実行します。

    # foreman-maintain backup online /var/backup_directory
  2. バックアップを開始するようにプロンプトが表示されたら、y を入力します。

    Do you want to proceed?, [y(yes), q(quit)] y

    バックアッププロセスの完了までに長時間かかります。

リンク

8.3. 増分バックアップ

増分バックアップには、前回実行したバックアップ以降に、データベースと設定ファイルに加えられた変更が含まれます。

最初の増分バックアップは完全バックアップをベースとし、その後の増分バックアップは前回のバックアップをベースとします。増分バックアップを使用して Satellite を復元するには、すべての増分バックアップと最初の完全バックアップが必要です。

8.3.1. 増分バックアップのオフライン実行

オフライン方法を使用して、増分バックアップを実行します。Satellite は、バックアップ処理中は使用できません。

前提条件

  • 増分バックアップのベースとして使用する前回のバックアップが利用可能であること。
  • postgres ユーザーに、バックアップディレクトリーへの書き込み権限が割り当てられている。

手順

  1. foreman-maintain backup スクリプトを実行します。

    # foreman-maintain backup offline --incremental /var/backup_dir/previous_backup_dir /var/backup_dir

    previous_backup_dir を、増分バックアップのベースとして使用する前回のバックアップの名前に置き換えます。

  2. バックアップを開始するようにプロンプトが表示されたら、y を入力します。

    Do you want to proceed?, [y(yes), q(quit)] y

リンク

8.3.2. 増分バックアップのオンライン実行

問題をデバッグし、トラブルシューティングを行うには、オンライン方法を使用して、増分バックアップを実行します。Satellite は、バックアップ処理中でも使用できます。

バックアップを成功させるには、バックアップが完了するまで次の操作を実行しないでください。

  • コンテンツビューの公開、追加、または削除
  • コンテンツビューバージョンのプロモート
  • 同期プランの追加、変更、または削除
  • リポジトリーの追加、削除、または同期

前提条件

  • 増分バックアップのベースとして使用する前回のバックアップが利用可能であること。
  • postgres ユーザーに、バックアップディレクトリーへの書き込み権限が割り当てられている。

手順

  1. foreman-maintain backup スクリプトを実行します。

    # foreman-maintain backup online --incremental /var/backup_dir/previous_backup_dir /var/backup_dir

    previous_backup_dir を、増分バックアップのベースとして使用する前回のバックアップの名前に置き換えます。

  2. バックアップを開始するようにプロンプトが表示されたら、y を入力します。

    Do you want to proceed?, [y(yes), q(quit)] y

リンク

8.4. Pulp コンテンツを含まないバックアップ

Pulp コンテンツを含まないバックアップでは、Satellite または Capsule Server のリポジトリー情報が除外されます。Pulp データベースに含まれるリポジトリー情報のバックアップは、Satellite バックアッププロセスで最も時間のかかる部分です。--skip-pulp-content オプションを使用して、Pulp データベースのバックアップをスキップできます。このオプションを使用すると、/var/lib/pulp ディレクトリーのバックアップが除外されます。

Pulp コンテンツを含まないバックアップから復元することはできません。

8.4.1. Pulp コンテンツを含まないバックアップのオフライン実行

問題をデバッグし、トラブルシューティングを行うには、オフライン方法を使用して、Pulp コンテンツを含まないバックアップを実行します。Satellite は、バックアップ処理中は使用できません。

手順

  1. foreman-maintain backup スクリプトを実行します。

    # foreman-maintain backup offline --skip-pulp-content /var/backup_directory
  2. バックアップを開始するようにプロンプトが表示されたら、y を入力します。

    Do you want to proceed?, [y(yes), q(quit)] y

rsync や共有ストレージなどの方法を使用して、/var/lib/pulp の内容をコピーできます。

リンク

8.4.2. Pulp コンテンツを含まないバックアップのオンライン実行

問題をデバッグしてトラブルシューティングするには、オンライン方法を使用して、Pulp コンテンツを含まないバックアップを作成します。Satellite は、バックアップ処理中でも使用できます。

手順

  1. foreman-maintain backup スクリプトを実行します。

    # foreman-maintain backup online --skip-pulp-content /var/backup_directory
  2. バックアップを開始するようにプロンプトが表示されたら、y を入力します。

    Do you want to proceed?, [y(yes), q(quit)] y

rsync や共有ストレージなどの方法を使用して、/var/lib/pulp の内容をコピーできます。

リンク

8.5. スナップショットのバックアップ

スナップショットのバックアップ方法は、Pulp、MongoDB、および PostgreSQL データベースの論理ボリュームマネージャー (LVM) のスナップショットを作成して、別の論理ボリューム (LV) にマウントします。

foreman-maintain backup ユーティリティーは、Satellite サービスがアクティブな時にスナップショットを作成し、バックアップに影響のあるサービスのみを停止します。Satellite または Capsule は、スナップショットを作成する場合のみ使用できません。バックアップが成功すると、すべてのサービスが再起動され、LVM スナップショットは削除されます。スナップショットのバックアップは、オフラインでの完全バックアップよりも所要時間が短く、Satellite または Capsule のダウンタイムが短縮されます。

8.5.1. スナップショットバックアップの実行

スナップショットの方法を使用してバックアップを実行します。Satellite は、LVM スナップショットを作成する場合には使用できません。

前提条件

  • システムで、以下のディレクトリーに対して LVM が使用されていること。

    • /var/lib/pulp/
    • /var/lib/mongodb/
    • /var/lib/pgsql/
  • 関連ボリュームグループ (VG) の空きディスクスペースが、スナップショットのサイズの 3 倍あること。正確には、VG には新規スナップショットを受け入れるために十分な、メンバーの論理ボリューム (LV) に予約されていないスペースが必要になります。また、LV のいずれかには、バックアップディレクトリー用の十分な空きスペースが必要になります。
  • ターゲットのバックアップディレクトリーが、スナップショットを作成するディレクトリー以外の LV にあること。

手順

  1. foreman-maintain backup スクリプトを実行します。

    # foreman-maintain backup snapshot /var/backup_directory
  2. バックアップを開始するようにプロンプトが表示されたら、y を入力します。

    Do you want to proceed?, [y(yes), q(quit)] y

リンク

8.6. 従来のバックアップ

Red Hat Enterprise Linux システムの従来のバックアップとリカバリーの方法を使用して、Satellite または Capsule Server をバックアップすることもできます。

従来のバックアップを実行する前に、foreman-maintain service stop コマンドを使用して Satellite サービスを停止し、完了後に foreman-maintain service start コマンドを使用してサービスを再起動します。

詳細は、『Red Hat Enterprise Linux 7 システム管理者のガイド』の「システムバックアップおよびリカバリー」セクションを参照してください。

8.7. バックアップデータ圧縮率

次の表は、Satellite データベースのデータ圧縮率を示しています。

表8.1 データと圧縮率

データ型ディレクトリー比率圧縮結果の例

MongoDB データベースファイル

/var/lib/mongodb

85 - 90 %

480 GB → 60 GB

PostgreSQL データベースファイル

/var/lib/pgsql/data

80 - 85%

100 GB → 20 GB

Pulp RPM ファイル

/var/lib/pulp

(非圧縮)

100 GB

設定ファイル

/var/lib/qpidd
/var/lib/tftpboot
/etc
/root-ssl/build
/var/www/html/pub
/opt/puppetlabs

85%

942 MB → 141 MB

8.8. バックアップユーティリティーの追加オプション

次の表で、foreman-maintain backup ユーティリティーで提供される追加オプションについてまとめています。

表8.2 バックアップの追加オプション

オプション

用途

--assume-yes

確認プロンプトをスキップ。

foreman-maintain backup offline --assume-yes

--whitelist

バックアップのラベル付きのステップをスキップ。ステップラベルのリストを表示するには、foreman-maintain advanced procedure run -h コマンドを実行します。

foreman-maintain backup offline --whitelist backup-metadata -y /var/backup_directory

--preserve-directory

バックアップにカスタム名を指定。

foreman-maintain backup offline --preserve-directory /var/backup_directory/ first-backup

8.9. オフラインバックアップのスケジュール設定のスクリプト例

完全バックアップとその後の日次増分バックアップの設定

以下のスクリプトでは、日曜日に完全バックアップを実行した後に、増分バックアップを毎日実行します。バックアップが実行されるたびに、新しいサブディレクトリーが作成されます。このスクリプトでは、日次の cron ジョブが必要になります。

foreman-maintain backup スクリプトでは、PATH/sbin/usr/sbin のディレクトリーを指定する必要があります。

#!/bin/bash -e
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DESTINATION=/var/backup_directory
if [[ $(date +%w) == 0 ]]; then
  foreman-maintain backup offline --assumeyes $DESTINATION
else
  LAST=$(ls -td -- $DESTINATION/*/ | head -n 1)
  foreman-maintain backup offline --assumeyes --incremental "$LAST" $DESTINATION
fi
exit 0

8.10. バックアップの方法と種類

次の表では、Satellite バックアップの種類と方法についてまとめています。

表8.3 バックアップの方法と種類

バックアップ種類方法コマンド

復元

完全、増分

オフライン

foreman-maintain backup offline [--incremental]

-

スナップショット

foreman-maintain snapshot

デバッグ

Pulp コンテンツなし

オフライン

foreman-maintain backup offline --skip-pulp-content

完全、増分、Pulp コンテンツなし

オンライン

foreman-maintain backup online [--incremental][--skip-pulp-content]