Red Hat Training

A Red Hat training course is available for Red Hat Satellite

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

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

7.1. Satellite Server および Capsule Server のバックアップ

本セクションでは、Satellite Server または Capsule Server とすべての関連データのバックアップを foreman-maintain backup スクリプトで作成する方法について説明します。バックアップは、異なるシステム上の別個のストレージデバイスに作成することが強く推奨されます。バックアップ中は Satellite サービスが利用できなくなります。バックアップは、cron を使用して稼働率が低い時間にスケジュールすることができます。週次の完全バックアップの後に日次増分バックアップを実行する場合 を参照してください。

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

前提条件

定期的なバックアップを計画する際には、以下の点に注意してください。

  • 同じ時間に他のタスクが他の管理者によってスケジュールされないようにしてください。これは、管理者がそれぞれ異なる場所やタイムゾーンで働いている場合に特に重要です。
  • バックアップを暗号化するか、安全な場所に移動し、ホストへの不正アクセスや破損のリスクを最小化します。

従来のバックアップ方法

Red Hat Enterprise Linux 7 システム管理者のガイド』 にある システムバックアップおよびリカバリー セクションで説明されている従来のバックアップ方法を使用することもできます。スナップショットまたは従来のバックアップを作成する際には、すべてのサービスを停止してください (foreman-maintain backup スクリプトの使用時を除く)。

# foreman-maintain service stop

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

# foreman-maintain service start

7.1.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. 圧縮データを保存するために必要な領域を計算します。

    表7.1「バックアップデータ圧縮率」 は、バックアップで使用されるすべてのデータアイテムの圧縮率を提示します。

    表7.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 をバックアップの場所に割り当てる必要があります。

7.1.2. Satellite Server および Capsule Server の完全バックアップの実行

Red Hat Satellite 6.4 では、foreman-maintain backup スクリプトを使用してバックアップを作成します。使用方法を表示するには、以下のコマンドを使用します。

# foreman-maintain backup --help

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

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

    それぞれの方法については、スクリプトごとに以下のコマンドで表示できます。

オフラインバックアップ

# foreman-maintain backup offline --help

オンラインバックアップ

# foreman-maintain backup online --help

スナップショットからのバックアップ

# foreman-maintain backup snapshot --help

ディレクトリーの作成

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

ディレクトリー名を付ける場合は、--preserve-directory オプションを追加して名前を追加します。バックアップはコマンドラインで指定したディレクトリーに保存されます。

--preserve-directory を使用すると、バックアップに失敗してもデータは削除されません。

ローカルの PgSQL データベースがある場合は、ユーザー postgres はそのディレクトリーへの書き込みアクセスを必要とします。

リモートデータベース

foreman-maintain backup スクリプトを使用してリモートデータベースのバックアップを作成できます。

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

Satellite Server または Capsule Server の完全オフラインバックアップの実行

以下の手順では、完全なオフラインバックアップが実行されます。このバックアッププロセス中は、Satellite サービスが利用できなくなります。

警告

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

  1. バックアップの場所に、バックアップを保存するための十分なディスク領域があることを確認します。詳細は 「バックアップサイズの予測」 を参照してください。
  2. バックアップスクリプトを実行します。

    # foreman-maintain backup offline /var/backup_directory

    コピーするデータサイズのために、このプロセスの完了には時間がかかることがあります。

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

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

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

警告

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

  1. バックアップの場所に、バックアップを保存するための十分なディスク領域があることを確認します。詳細は 「バックアップサイズの予測」 を参照してください。
  2. バックアップスクリプトを実行します。

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

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

増分バックアップの実行:

この手順では、前回のバックアップ以降のすべての変更のオフラインバックアップを実行します。完全バックアップを土台とし、最初の増分バックアップを実行します。少なくとも最後に正常に完了した完全バックアップと復元する増分バックアップの完全なシーケンスを保持します。

警告

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

  1. バックアップの場所に、バックアップを保存するための十分なディスク領域があることを確認します。詳細は 「バックアップサイズの予測」 を参照してください。
  2. 完全バックアップを作成します。

    # foreman-maintain backup offline  /var/backup_directory
  3. --incremental 引数を使用してバックアップスクリプトを実行します。これで初回増分バックアップを保存するディレクトリーがバックアップディレクトリー内に作成されます。

    # foreman-maintain backup offline --incremental /var/backup_directory/full_backup  /var/backup_directory
  4. バックアップスクリプトを再度実行して、2 回目の増分バックアップを作成します。次回増分の開始点を示すために、初回増分バックアップをポイントします。これで 2 回目増分バックアップのディレクトリーがバックアップディレクトリー内に作成されます。

    # foreman-maintain backup offline --incremental /var/backup_directory/first_incremental_backup  /var/backup_directory

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

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

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

週次の完全バックアップの後に日次増分バックアップを実行する場合

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

#!/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

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

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

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

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

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

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

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

警告

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

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

  1. バックアップの場所に、バックアップを保存するための十分なディスク領域があることを確認します。詳細は 「バックアップサイズの予測」 を参照してください。
  2. バックアップスクリプトを実行します。

    # foreman-maintain backup online /var/backup_directory

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

スナップショットバックアップでは、Pulp、MongoDB、および PostgreSQL ディレクトリーの論理ボリュームマネージャー (LVM) のスナップショットを使用します。バックアップは、オンラインバックアップの場合と同様に、実行中の Satellite からではなく、LVM スナップショットから作成され、一貫性のないバックアップを作成するリスクを減らします。スナップショットバックアップは完全なオフラインバックアップよりも迅速なので、Satellite のダウンタイムを短縮することができます。

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

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

foreman-maintain backup snapshot -h

前提条件

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

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

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

バックアップスクリプトを実行します。

# foreman-maintain backup snapshot /var/backup_directory

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

7.1.8. ホワイトリスト化とステップの省略

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

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

利用可能なステップラベルを一覧表示するには、以下を実行します。

# foreman-maintain advanced procedure run -h