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

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

Satellite Server と Capsule Server のどちらか、およびすべての関連データのバックアップを作成するには、satellite-maintain backup コマンドを使用します。別のシステム上の別のストレージデバイスにバックアップすることを強くお勧めします。

バックアップ中は Satellite サービスは利用できません。したがって、他の管理者が他のタスクをスケジュールしていないか確認する必要があります。cron を使用して、バックアップをスケジュールできます。詳細は、「例 - 週次の完全バックアップの後に日次増分バックアップを実行する」 を参照してください。

オフラインバックアップまたはスナップショットバックアップ中はサービスが非アクティブになり、Satellite はメンテナンスモードに入ります。ポート 443 上での外部からのトラフィックはすべてファイアウォールで拒否され、修正がトリガーされないようになります。

バックアップには、/root/ssl-build ディレクトリーの機密情報が含まれます。たとえば、ホスト名、SSH キー、要求ファイル、SSL 証明書が含まれる場合があります。バックアップを暗号化するか、安全な場所に移動し、破損のリスクやホストへの不正アクセスを最小限に抑えます。

従来のバックアップ方法

Red Hat Enterprise Linux 7 システム管理者のガイド』の「システムバックアップおよびリカバリー」で説明されている、従来のバックアップ方法を使用することもできます。

注記

satellite-maintain backup コマンドを使用してバックアップを作成する場合は、satellite-maintain サービスを停止しないでください。

  • スナップショットまたは従来のバックアップを作成するときは、以下のようにすべてのサービスを停止する必要があります。

    # satellite-maintain service stop
  • スナップショットまたは従来のバックアップを作成したら、サービスを起動します。

    # satellite-maintain service start

8.1. バックアップサイズの予測

完全バックアップでは、MongoDB、PostgreSQL、および Pulp のデータベースファイルと Satellite 設定ファイルの非圧縮アーカイブを作成します。Satellite サービスが利用できない時間を短縮するため、圧縮はアーカイブの作成後に実行されます。

完全バックアップには、以下のデータを格納するための領域が必要です。

  • 非圧縮の Satellite データベースおよび設定ファイル。
  • 圧縮された Satellite データベースおよび設定ファイル。
  • バックアップを確実にするため、予測領域全体の 20% を追加。

手順

  1. du コマンドを入力して、Satellite データベースおよび設定ファイルを含む非圧縮ディレクトリーのサイズを予測します。

    # du -sh /var/lib/mongodb /var/lib/pgsql/data /var/lib/pulp
    480G	/var/lib/mongodb
    100G    /var/lib/pgsql/data
    100G	/var/lib/pulp
    # du -csh /var/lib/qpidd /var/lib/tftpboot /etc /root/ssl-build \
    /var/www/html/pub /opt/puppetlabs
    886M    /var/lib/qpidd
    16M     /var/lib/tftpboot
    37M	/etc
    900K	/root/ssl-build
    100K	/var/www/html/pub
    2M	/opt/puppetlabs
    942M   total
  2. 圧縮データを保存するために必要な領域を計算します。

    以下の表は、バックアップに含まれるすべてのデータ項目の圧縮率を示しています。

    表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

    この例では、圧縮されたバックアップデータは合計 180 GB を占有します。

  3. バックアップの保存に必要な利用可能な領域を計算するには、圧縮および非圧縮のバックアップデータの予測値を合計し、合計値の 20% をさらに追加してバックアップの信頼性を高めます。

    この例では、非圧縮および圧縮のバックアップデータに 681 GB と 180 GB の合計 861 GB が必要です。172 GB の予備領域もあわせ、1033 GB をバックアップの場所に割り当てる必要があります。

8.2. Satellite Server または Capsule Server の完全バックアップの実行

Red Hat Satellite 6.7 は、satellite-maintain backup コマンドを使用してバックアップを作成します。

Satellite Server のバックアップには、以下の 3 つの方法があります。

  • オフラインバックアップ
  • オンラインバックアップ
  • スナップショットバックアップ

    それぞれの方法の詳細については、各バックアップ方法の使用法ステートメントを表示できます。

オフラインバックアップの場合:

# satellite-maintain backup offline --help

オンラインバックアップの場合:

# satellite-maintain backup online --help

スナップショットバックアップの場合:

# satellite-maintain backup snapshot --help

ディレクトリーの作成

satellite-maintain backup コマンドを実行すると、指定したバックアップディレクトリーにタイムスタンプの付いたサブディレクトリーが作成されます。satellite-maintain backup コマンドではバックアップは上書きされないので、バックアップまたは増分バックアップから復元する際には、適切なディレクトリーまたはサブディレクトリーを選択する必要があります。satellite-maintain backup コマンドは、必要に応じてサービスを停止したり、再開したりします。

satellite-maintain backup offline コマンドを実行すると、以下のデフォルトのバックアップディレクトリーが作成されます。

  • Satellite では satellite-backup
  • Capsule では foreman-proxy-backup

カスタムディレクトリー名を設定する場合は、--preserve-directory オプションを追加して、ディレクトリー名を追加します。バックアップはその後、コマンドラインで指定したディレクトリーに保存されます。--preserve-directory オプションを使用した場合、バックアップが失敗してもデータは削除されません。

ローカルの PgSQL データベースを使用する場合、postgres ユーザーには、バックアップディレクトリーへの書き込みアクセス権が必要です。

リモートデータベース

satellite-maintain backup コマンドを使用して、リモートデータベースをバックアップできます。

リモートデータベースのバックアップには、オンラインとオフラインの両方の方法を使用できますが、スナップショットなどのオフライン方法を使用すると satellite-maintain backup コマンドはデータベースダンプを実行します。

前提条件

  • バックアップ場所には、バックアップを保存するのに十分な空きディスク領域があること。詳細は、「バックアップサイズの予測」 を参照してください。

手順

Satellite Server または Capsule Server の完全なオフラインバックアップを実行するには、以下の手順のいずれかを実行します。

警告

Satellite Server および Capsule Server の他のユーザーにすべての変更を保存するよう指示して、バックアップ中は Satellite サービスが利用できないことを警告してください。バックアップと同じ時間に他のタスクがスケジュールされていないことを確認してください。

  • Satellite Server で以下のコマンドを入力します。

    # satellite-maintain backup offline /var/satellite-backup
  • Capsule Server で以下のコマンドを入力します。

    # satellite-maintain backup offline /var/foreman-proxy-backup

8.3. Pulp コンテンツなしでのバックアップの実行

Pulp ディレクトリーの内容を除外するオフラインバックアップを実行できます。Pulp コンテンツなしのバックアップはデバッグに役に立ち、Pulp データベースのバックアップなしに設定ファイルへのアクセスを提供することを目的としています。Pulp コンテンツを含まないディレクトリーから復元することはできません。

警告

Satellite Server および Capsule Server の他のユーザーにすべての変更を保存するよう指示して、バックアップ中は Satellite サービスが利用できないことを警告してください。バックアップと同じ時間に他のタスクがスケジュールされていないことを確認してください。

前提条件

  • バックアップ場所には、バックアップを保存するのに十分な空きディスク領域があること。詳細は、「バックアップサイズの予測」 を参照してください。

手順

  • Pulp コンテンツなしでオフラインバックアップを実行するには、以下のコマンドを入力します。

    # satellite-maintain backup offline --skip-pulp-content /var/backup_directory

8.4. 増分バックアップの実行

この手順を使用して、前回のバックアップ以降のすべての変更のオフラインバックアップを実行します。

増分バックアップを実行するには、シーケンスの最初の増分バックアップを作成するための参照として完全バックアップを実行する必要があります。復元用として、最新の完全バックアップと、増分バックアップの完全なシーケンスを保持します。

警告

Satellite Server および Capsule Server の他のユーザーにすべての変更を保存するよう指示して、バックアップ中は Satellite サービスが利用できないことを警告してください。バックアップと同じ時間に他のタスクがスケジュールされていないことを確認してください。

前提条件

  • バックアップ場所には、バックアップを保存するのに十分な空きディスク領域があること。詳細は、「バックアップサイズの予測」 を参照してください。

手順

  1. 完全なオフラインバックアップを実行するには、以下のコマンドを入力します。

    # satellite-maintain backup offline  /var/backup_directory
  2. バックアップディレクトリー内にディレクトリーを作成し、初回増分バックアップを保存するには、--incremental オプションを使用する satellite-maintain backup コマンドを入力します。

    # satellite-maintain backup offline --incremental /var/backup_directory/full_backup  /var/backup_directory
  3. 2 回目増分バックアップを作成するには、--incremental オプションを使用する satellite-maintain backup コマンドを入力し、次回増分の開始点を示すために、初回増分バックアップへのパスを追加します。これで 2 回目増分バックアップのディレクトリーがバックアップディレクトリー内に作成されます。

    # satellite-maintain backup offline --incremental /var/backup_directory/first_incremental_backup  /var/backup_directory
  4. オプション: 別のバージョンのバックアップをポイントし、開始点としてそのバックアップバージョンでの増分シリーズを作成する場合は、いつでもこれを行うことができます。たとえば、初回もしくは 2 回目増分バックアップからではなく、完全バックアップから新しい増分バックアップを作成するには、完全バックアップディレクトリーをポイントします。

    # satellite-maintain backup offline --incremental /var/backup_directory/full_backup  /var/backup_directory

8.5. 例 - 週次の完全バックアップの後に日次増分バックアップを実行する

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

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

satellite-maintain backup コマンドでは、PATH 内に /sbin ディレクトリーおよび /usr/sbin ディレクトリーを格納する必要があり、確認プロンプトをスキップするために --assumeyes オプションを使用することに注意してください。

8.6. オンラインバックアップの実行

デバッグ目的でのみ、オンラインバックアップを実行します。

オンラインバックアップに関するリスク

サービスがオンラインの間は、Mongo と Postgres データベース間でデータの不一致が発生する可能性があります。

オンラインバックアップ実行時は、Pulp データベースに影響を与える手順がある場合は、Pulp 部分のバックアップ手順は変更がなくなるまで繰り返されます。Pulp データベースのバックアップは Satellite バックアップの中で最も時間のかかる部分であるため、バックアップ中に Pulp データベースが変更される変更を加えると、バックアップ手順が繰り返されます。

実稼働環境では、スナップショット方法を使用します。詳細は、「スナップショットバックアップの実行」 を参照してください。実稼働環境でオンラインバックアップ方法を使用する場合は、バックアップ中に変更がないように注意して実行してください。

警告

Satellite Server および Capsule Server の他のユーザーにすべての変更を保存するよう指示して、バックアップ中は Satellite サービスが利用できないことを警告してください。バックアップと同じ時間に他のタスクがスケジュールされていないことを確認してください。

前提条件

  • バックアップ場所には、バックアップを保存するのに十分な空きディスク領域があること。詳細は、「バックアップサイズの予測」 を参照してください。

手順

  • オンラインバックアップを実行するには、以下のコマンドを入力します。

    # satellite-maintain backup online /var/backup_directory

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

Pulp、MongoDB、および PostgreSQL ディレクトリーの論理ボリュームマネージャー (LVM) スナップショットを使用するスナップショットバックアップを実行できます。LVM スナップショットからバックアップを作成すると、一貫性のないバックアップのリスクが軽減されます。

スナップショットバックアップ方法は、完全なオフラインバックアップよりも速いため、Satellite のダウンタイムが短縮されます。

使用方法を表示するには、以下のコマンドを入力します。

satellite-maintain backup snapshot -h
警告

Satellite Server および Capsule Server の他のユーザーにすべての変更を保存するよう指示して、バックアップ中は Satellite サービスが利用できないことを警告してください。バックアップと同じ時間に他のタスクがスケジュールされていないことを確認してください。

前提条件

スナップショットバックアップを開始する前に、以下の条件を満たしていることを確認してください。

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

手順

  • スナップショットバックアップを実行するには、satellite-maintain backup snapshot コマンドを入力します。

    # satellite-maintain backup snapshot /var/backup_directory

satellite-maintain backup snapshot コマンドは、サービスがアクティブな際にスナップショットを作成し、バックアップに影響を与える可能性があるすべてのサービスを停止します。これにより、メンテナンスの時間が短縮されます。バックアップが正常に実行されると、全サービスが再起動され、LVM スナップショットが削除されます。

8.8. バックアップを実行する際のホワイトリスト化とスキップの手順

satellite-maintain backup コマンドを使用したバックアップは、ステップ順に進められます。バックアップの一部を省略するには、--whitelist オプションをコマンドに追加し、省略するステップのラベルを追加します。

  • 利用可能なステップのラベルを一覧表示するには、以下のコマンドを入力します。

    # satellite-maintain advanced procedure run -h
  • バックアップの手順をスキップするには、--whitelist オプションを指定して satellite-maintain backup コマンドを入力します。以下に例を示します。

    # satellite-maintain backup online --whitelist backup-metadata  -y /var/backup_directory