この記事では、Azure Backup を使用して、Azure にデプロイされた Linux 仮想マシン (VM) のアプリケーション整合性バックアップを作成する方法について説明します。 スクリプト フレームワークの構成方法とトラブルシューティングについて説明します。
Azure Backup が VM のスナップショットを取得すると、アプリケーションの整合性により、VM の復元後にアプリケーションが正しく起動します。 この動作を実現するには、Azure Resource Manager でデプロイされた Linux VM をサポートする Linux プリスクリプトと postscript フレームワークを使用します。 これらのスクリプトは、System Center Service Manager または Windows でデプロイされた VM では機能しません。
フレームワークのしくみ
このフレームワークには、VM スナップショットを作成中にカスタムの前処理スクリプトと後処理スクリプトを実行するオプションが用意されています。 プリスクリプトは、VM スナップショットを取得する前に実行されます。 POSTSCRIPT は、VM スナップショットを取得した直後に実行されます。 前付き文字と後付き文字を使用すると、VM スナップショットの作成中にアプリケーションと環境を柔軟に制御できます。
プリスクリプトによってネイティブ アプリケーション API が呼び出され、I/O が静かになり、メモリ内のコンテンツがディスクにフラッシュされます。 これらのアクションにより、スナップショットのアプリケーション整合性が確保されます。 Postscript では、ネイティブ アプリケーション API を使用して I/O を解凍します。これにより、アプリケーションは VM スナップショットの後に通常の操作を再開できます。
Azure Linux VM のプリスクリプトとポストスクリプトを設定する
前付き文字と後付き文字を構成するには、次の手順に従います。
バックアップする Linux VM にルート ユーザーとしてサインインします。
GitHub から VMSnapshotScriptPluginConfig.json ダウンロードし、バックアップするすべての VM の /etc/azure フォルダーにコピーします。 /etc/azure フォルダーが存在しない場合は、作成します。
バックアップする予定のすべての VM で、アプリケーションの前付き文字と後付き文字をコピーします。 スクリプトは、VM 上の任意の場所にコピーできます。 VMSnapshotScriptPluginConfig.json ファイル内のスクリプトファイルのフルパスを必ず更新してください。
次のファイルを使用するには、対応する権限があることを確認してください。
- VMSnapshotScriptPluginConfig.json: アクセス許可は 600 です。 たとえば、ルート ユーザーのみがこのファイルに対する読み取りおよび書き込みアクセス許可を持つ必要があり、実行アクセス許可を持つユーザーは必要ありません。
- 事前スクリプト ファイル: アクセス許可は 700 です。 たとえば、ルート ユーザーのみが、このファイルに対する読み取り、書き込み、実行のアクセス許可を持つ必要があります。 ファイルはシェル スクリプトであると想定されていますが、理論的には、このスクリプトは内部的に生成したり、Python スクリプトなどの他のスクリプトを参照したりできます。
- Postscript: アクセス許可は 700 です。 たとえば、ルート ユーザーのみが、このファイルに対する読み取り、書き込み、実行のアクセス許可を持つ必要があります。 ファイルはシェル スクリプトであると想定されていますが、理論的には、このスクリプトは内部的に生成したり、Python スクリプトなどの他のスクリプトを参照したりできます。
Von Bedeutung
このフレームワークは、ユーザーに多くの力を与えます。 フレームワークをセキュリティで保護し、ルート ユーザーのみが重要な JSON ファイルとスクリプト ファイルにアクセスできることを確認します。
要件が満たされていない場合、スクリプトを実行できないため、ファイル システムがクラッシュし、バックアップが不整合になります。
次の説明に従って VMSnapshotScriptPluginConfig.json を構成します。
-
pluginName: このフィールドはそのままにするか、スクリプトが期待どおりに動作しない可能性があります。 -
preScriptLocation: バックアップする VM 上のプリスクリプトの完全なパスを指定します。 -
postScriptLocation: バックアップする VM 上の postscript の完全なパスを指定します。 -
preScriptParams: プリスクリプトに渡す必要がある省略可能なパラメーターを指定します。 すべてのパラメーターは引用符で囲む必要があります。 複数のパラメーターを使用する場合は、パラメーターをコンマで区切ります。 -
postScriptParams: 後付き文字に渡す必要がある省略可能なパラメーターを指定します。 すべてのパラメーターは引用符で囲む必要があります。 複数のパラメーターを使用する場合は、パラメーターをコンマで区切ります。 -
preScriptNoOfRetries: 終了する前にエラーが発生した場合に、プリスクリプトを再試行する回数を設定します。 ゼロは 1 回の試行のみを意味し、失敗した場合は再試行しません。 -
postScriptNoOfRetries: 終了する前にエラーが発生した場合に、postscript を再試行する回数を設定します。 ゼロは 1 回の試行のみを意味し、失敗した場合は再試行しません。 -
timeoutInSeconds: 前付き文字と後付き文字の個々のタイムアウトを指定します (最大値は 1800 です)。 -
continueBackupOnFailure: prescript または postscript が失敗した場合に、Azure Backup をファイル システム整合性/クラッシュ整合性バックアップに切り替えるには、この値を true に設定します。 スクリプトエラーが発生した場合、この値を false に設定するとバックアップが失敗します。 (例外は、この設定に関係なく、クラッシュ整合性バックアップにフォールバックする単一ディスク VM がある場合です)。continueBackupOnFailure値が false に設定されている場合、バックアップが失敗した場合、サービス内の再試行ロジックに基づいてバックアップ操作が再試行されます (指定された試行回数)。 -
fsFreezeEnabled: ファイル システムの一貫性を確保するために、VM スナップショットの作成中に Linuxfsfreezeを呼び出す必要があるかどうかを指定します。 アプリケーションがの無効化に依存しない限り、この設定をfsfreezeに設定しておくことをお勧めします。 -
ScriptsExecutionPollTimeSeconds: 各ポーリングからスクリプト実行までの間に拡張機能がスリープ状態にする必要がある時間を設定します。 たとえば、値が 2 の場合、拡張機能は、前付きまたは後付きの実行が 2 秒ごとに完了したかどうかを確認します。 取得できる最小値と最大値はそれぞれ 1 と 5 です。 値は厳密に整数である必要があります。
-
スクリプト フレームワークが構成されました。 VM バックアップが既に構成されている場合、次のバックアップによってスクリプトが呼び出され、アプリケーション整合性バックアップがトリガーされます。 VM バックアップが構成されていない場合は、「Azure 仮想マシンを Recovery Services コンテナーにバックアップする」の手順に従って構成します。
Azure Linux VM のアプリケーション整合性バックアップ エラーのトラブルシューティング
前付き文字と後付き文字を記述するときに、適切なログ記録を必ず追加してください。 スクリプト ログを確認して、スクリプトの問題を修正します。 スクリプトの実行で問題が解決しない場合は、次の表を参照してください。
| エラー | エラーメッセージ | 推奨されるアクション |
|---|---|---|
Pre-ScriptExecutionFailed |
スクリプトからエラーが返されたため、バックアップがアプリケーション整合性を保っていない可能性があります。 | スクリプトの失敗ログを確認して、問題を修正します。 |
Post-ScriptExecutionFailed |
postscript は、アプリケーションの状態に影響する可能性のあるエラーを返しました。 | スクリプトのエラー ログを調べて問題を解決し、アプリケーションの状態を確認します。 |
Pre-ScriptNotFound |
VMSnapshotScriptPluginConfig.json 構成ファイルで指定された場所に前付き文字が見つかりませんでした。 | アプリケーション整合性バックアップを確保するために、構成ファイルで指定されたパスに前付き文字が存在することを確認します。 |
Post-ScriptNotFound |
postscript が、VMSnapshotScriptPluginConfig.json 構成ファイルで指定された場所に見つかりませんでした。 | アプリケーション整合性バックアップを確保するために、構成ファイルで指定されたパスに postscript が存在することを確認します。 |
IncorrectPluginhostFile |
Pluginhost拡張子に付属するVmSnapshotLinux ファイルが破損しているため、前付き文字と後付き文字を実行できないので、バックアップはアプリケーション整合性がありません。 |
VmSnapshotLinux拡張機能をアンインストールします。 問題を解決するために、次のバックアップと共に自動的に再インストールされます。 |
IncorrectJSONConfigFile |
VMSnapshotScriptPluginConfig.json ファイルが正しくないため、プレスクリプトとポストスクリプトを実行できません。また、バックアップはアプリケーションの整合性が維持されていません。 | GitHub からコピーをダウンロードし、再度構成します。 |
InsufficientPermissionforPre-Script |
スクリプトを実行する場合、ルート ユーザーはファイルの所有者である必要があります。 ファイルには 700 のアクセス許可が必要です。 (つまり、所有者のみが読み取り、書き込み、実行のアクセス許可を持つ必要があります)。 | ルート ユーザーがスクリプト ファイルの所有者であり、所有者のみが読み取り、書き込み、実行のアクセス許可を持っていることを確認します。 |
InsufficientPermissionforPost-Script |
スクリプトを実行する場合、ルート ユーザーはファイルの所有者である必要があります。 ファイルには 700 のアクセス許可が必要です。 (つまり、所有者のみが読み取り、書き込み、実行のアクセス許可を持つ必要があります)。 | ルート ユーザーがスクリプト ファイルの所有者であり、所有者のみが読み取り、書き込み、実行のアクセス許可を持っていることを確認します。 |
Pre-ScriptTimeout |
アプリケーション整合性バックアップのプリスクリプトの実行がタイムアウトしました。 | スクリプトを確認し、/etc/azure にある VMSnapshotScriptPluginConfig.json ファイルのタイムアウトを増やします。 |
Post-ScriptTimeout |
アプリケーション整合性バックアップの postscript の実行がタイムアウトしました。 | スクリプトを確認し、/etc/azure にある VMSnapshotScriptPluginConfig.json ファイルのタイムアウトを増やします。 |