アプリケーション実行フックを管理します
実行フックは、管理対象アプリケーションのデータ保護操作と組み合わせて実行するように構成できるカスタムアクションです。たとえば、データベースアプリケーションがある場合、実行フックを使用して、スナップショットの前にすべてのデータベーストランザクションを一時停止し、スナップショットの完了後にトランザクションを再開できます。これにより、アプリケーションと整合性のある Snapshot を作成できます。
実行フックのタイプ
Astra Controlは、実行可能なタイミングに基づいて、次の種類の実行フックをサポートします。
-
Snapshot前
-
Snapshot後
-
バックアップ前
-
バックアップ後
-
リストア後のPOSTコマンドです
実行フックフィルタ
アプリケーションに実行フックを追加または編集するとき、実行フックにフィルタを追加して、フックが一致するコンテナを管理できます。フィルタは、すべてのコンテナで同じコンテナイメージを使用し、各イメージを別の目的(Elasticsearchなど)に使用するアプリケーションに便利です。フィルタを使用すると、同じコンテナの一部で実行フックが実行されるシナリオを作成できますが、すべてのコンテナで実行フックが実行されるわけではありません。1つの実行フックに対して複数のフィルタを作成すると、それらは論理AND演算子と結合されます。実行フックごとに最大10個のアクティブフィルタを使用できます。
実行フックに追加する各フィルタは、正規表現を使用してクラスタ内のコンテナを照合します。フックがコンテナと一致すると、そのコンテナに関連付けられたスクリプトがフックによって実行されます。
|
フィルタの正規表現では、正規表現2(RE2)構文を使用します。この構文では、一致リストからコンテナを除外するフィルタの作成はサポートされていません。 |
実行フックフィルタの正規表現でAstra Controlがサポートする構文については、を参照してください "正規表現2(RE2)構文のサポート"。
カスタム実行フックに関する重要な注意事項
アプリケーションの実行フックを計画するときは、次の点を考慮してください。
|
実行フックは、実行中のアプリケーションの機能を低下させるか、完全に無効にすることが多いため、カスタム実行フックの実行時間を最小限に抑えるようにしてください。 |
-
実行フックは、スクリプトを使用してアクションを実行する必要があります。多くの実行フックは、同じスクリプトを参照できます。
-
Astra Controlでは、実行フックが実行可能なシェルスクリプトの形式で記述されるようにするスクリプトが必要です。
-
スクリプトのサイズは96KBに制限されています。
-
Astra Controlは、実行フックの設定と一致条件を使用して、スナップショット、バックアップ、または復元操作に適用できるフックを決定します。
-
実行フックの障害はすべて’ソフトな障害ですフックが失敗しても’他のフックとデータ保護操作は試行されますただし、フックが失敗すると、 * アクティビティ * ページイベントログに警告イベントが記録されます。
-
実行フックを作成、編集、または削除するには、 Owner 、 Admin 、または Member 権限を持つユーザーである必要があります。
-
実行フックの実行に 25 分以上かかる場合 ' フックは失敗し ' 戻りコードが N/A のイベント・ログ・エントリが作成されます該当する Snapshot はタイムアウトして失敗とマークされ、タイムアウトを通知するイベントログエントリが生成されます。
-
アドホックデータ保護操作の場合、すべてのフックイベントが生成され、[Activity]ページのイベントログに保存されます。ただし、スケジュールされたデータ保護処理については、フック障害イベントだけがイベントログに記録されます(スケジュールされたデータ保護処理自体によって生成されたイベントは記録されたままです)。
-
レプリケートされたソースアプリケーションをAstra Control Centerがデスティネーションアプリケーションにフェイルオーバーすると、フェイルオーバーの完了後に、ソースアプリケーションに対して有効になっているリストア後の実行フックがデスティネーションアプリケーションに対して実行されます。
-
リストアまたはクローン処理のあとに実行される実行フックにネームスペースフィルタを追加し、リストアまたはクローンのソースとデスティネーションが異なるネームスペースにある場合、ネームスペースフィルタはデスティネーションネームスペースにのみ適用されます。
実行順序
データ保護操作を実行すると、実行フックイベントが次の順序で実行されます。
-
適用可能なカスタムプリオペレーション実行フックは、適切なコンテナで実行されます。カスタムのプリオペレーションフックは必要なだけ作成して実行できますが、操作前のこれらのフックの実行順序は保証も構成もされていません。
-
データ保護処理が実行されます。
-
適用可能なカスタムポストオペレーション実行フックは、適切なコンテナで実行されます。必要な数のカスタムポストオペレーションフックを作成して実行できますが、操作後のこれらのフックの実行順序は保証されず、設定もできません。
同じ種類の実行フック(スナップショット前など)を複数作成する場合、これらのフックの実行順序は保証されません。ただし、異なるタイプのフックの実行順序は保証されています。たとえば、5つの異なるタイプのフックをすべて持つ構成の実行順序は、次のようになります。
-
予備フックが実行されます
-
スナップショット前フックが実行されます
-
スナップショット後フックが実行されます
-
バックアップ後のフックが実行されます
-
復元後のフックが実行されます
シナリオ番号2のこの設定の例は、の表を参照してください フックが実行されるかどうかを確認します。
|
本番環境で実行スクリプトを有効にする前に、必ず実行フックスクリプトをテストしてください。'kubectl exec' コマンドを使用すると、スクリプトを簡単にテストできます。本番環境で実行フックを有効にしたら、作成されたSnapshotとバックアップをテストして整合性があることを確認します。これを行うには、アプリケーションを一時的なネームスペースにクローニングし、スナップショットまたはバックアップをリストアしてから、アプリケーションをテストします。 |
フックが実行されるかどうかを確認します
次の表を使用して、アプリケーションでカスタム実行フックが実行されるかどうかを判断します。
アプリケーションの高レベルの処理は、すべてスナップショット、バックアップ、またはリストアの基本的な処理のいずれかを実行することで構成されることに注意してください。シナリオによっては、クローニング処理はこれらの処理のさまざまな組み合わせで構成されるため、クローン処理を実行する実行フックはさまざまです。
In Placeリストア処理では既存のSnapshotまたはバックアップが必要になるため、これらの処理ではSnapshotまたはバックアップフックは実行されません。
|
開始してスナップショットを含むバックアップをキャンセルし’実行フックが関連付けられている場合は’一部のフックが実行され’ほかのフックが実行されないことがありますつまり、バックアップ後の実行フックでは、バックアップが完了したとは判断できません。キャンセルしたバックアップに関連する実行フックがある場合は、次の点に注意してください。
|
シナリオ( Scenario ) | 操作 | 既存のSnapshot | 既存のバックアップ | ネームスペース | クラスタ | スナップショットフックが実行されます | バックアップフックが実行されます | フックを元に戻します |
---|---|---|---|---|---|---|---|---|
1. |
クローン |
N |
N |
新規 |
同じ |
Y |
N |
Y |
2. |
クローン |
N |
N |
新規 |
違う |
Y |
Y |
Y |
3. |
クローンまたはリストア |
Y |
N |
新規 |
同じ |
N |
N |
Y |
4. |
クローンまたはリストア |
N |
Y |
新規 |
同じ |
N |
N |
Y |
5. |
クローンまたはリストア |
Y |
N |
新規 |
違う |
N |
N |
Y |
6. |
クローンまたはリストア |
N |
Y |
新規 |
違う |
N |
N |
Y |
7. |
リストア |
Y |
N |
既存 |
同じ |
N |
N |
Y |
8 |
リストア |
N |
Y |
既存 |
同じ |
N |
N |
Y |
9 |
スナップショット |
該当なし |
該当なし |
該当なし |
該当なし |
Y |
該当なし |
該当なし |
10 |
バックアップ |
N |
該当なし |
該当なし |
該当なし |
Y |
Y |
該当なし |
11 |
バックアップ |
Y |
該当なし |
該当なし |
該当なし |
N |
N |
該当なし |
実行フックの例
にアクセスします "NetApp Verda GitHubプロジェクト" Apache CassandraやElasticsearchなどの一般的なアプリケーションの実行フックをダウンロードします。また、独自のカスタム実行フックを構築するための例やアイデアを得ることもできます。
既存の実行フックを表示します
アプリケーションの既存のカスタム実行フックを表示できます。
-
「 * アプリケーション」に移動し、管理アプリの名前を選択します。
-
[ 実行フック * ] タブを選択します。
有効または無効になっているすべての実行フックを結果リストに表示できます。フックのステータス、一致するコンテナの数、作成時間、および実行時間(プリ/ポストオペレーション)を確認できます。を選択できます
+
アイコンをクリックして、実行するコンテナのリストを展開します。このアプリケーションの実行フックに関連するイベントログを表示するには、*アクティビティ*タブに移動します。
既存のスクリプトを表示します
アップロードされた既存のスクリプトを表示できます。このページでは、使用中のスクリプトと、使用中のフックを確認することもできます。
-
「アカウント」に移動します。
-
[スクリプト]タブを選択します。
このページには、アップロードされた既存のスクリプトのリストが表示されます。[使用者*]列には、各スクリプトを使用している実行フックが表示されます。
スクリプトを追加します
各実行フックは、スクリプトを使用してアクションを実行する必要があります。実行フックが参照できるスクリプトを1つ以上追加できます。多くの実行フックは、同じスクリプトを参照できます。これにより、1つのスクリプトのみを変更することで、多数の実行フックを更新できます。
-
「アカウント」に移動します。
-
[スクリプト]タブを選択します。
-
「 * 追加」を選択します。
-
次のいずれかを実行します。
-
カスタムスクリプトをアップロードする。
-
[ ファイルのアップロード( Upload file ) ] オプションを選択します。
-
ファイルを参照してアップロードします。
-
スクリプトに一意の名前を付けます。
-
(オプション)他の管理者がスクリプトについて知っておく必要があるメモを入力します。
-
「スクリプトを保存」を選択します。
-
-
クリップボードからカスタムスクリプトを貼り付けます。
-
[貼り付け(Paste)]または[タイプ(* type)]オプションを選択する
-
テキストフィールドを選択し、スクリプトテキストをフィールドに貼り付けます。
-
スクリプトに一意の名前を付けます。
-
(オプション)他の管理者がスクリプトについて知っておく必要があるメモを入力します。
-
-
-
「スクリプトを保存」を選択します。
新しいスクリプトが、[スクリプト]タブのリストに表示されます。
スクリプトを削除します
不要になって実行フックで使用されなくなったスクリプトは、システムから削除できます。
-
「アカウント」に移動します。
-
[スクリプト]タブを選択します。
-
削除するスクリプトを選択し、「アクション」列のメニューを選択します。
-
「 * 削除」を選択します。
|
スクリプトが1つまたは複数の実行フックに関連付けられている場合、*Delete*アクションは使用できません。スクリプトを削除するには、まず関連する実行フックを編集し、別のスクリプトに関連付けます。 |
カスタム実行フックを作成します
アプリケーションのカスタム実行フックを作成できます。を参照してください 実行フックの例 フックの例を参照してください。実行フックを作成するには、 Owner 、 Admin 、または Member のいずれかの権限が必要です。
|
実行フックとして使用するカスタムシェルスクリプトを作成する場合は、特定のコマンドを実行するか、実行可能ファイルへの完全パスを指定する場合を除き、ファイルの先頭に適切なシェルを指定するようにしてください。 |
-
「 * アプリケーション」を選択し、管理アプリの名前を選択します。
-
[ 実行フック * ] タブを選択します。
-
「 * 追加」を選択します。
-
[フックの詳細*(Hook Details *)]領域で、次の
-
*操作*ドロップダウンメニューから操作タイプを選択して、フックをいつ実行するかを決定します。
-
フックの一意の名前を入力します。
-
(オプション)実行中にフックに渡す引数を入力し、各引数を入力した後で Enter キーを押して、それぞれを記録します。
-
-
(オプション)フックフィルタの詳細(* Hook Filter Details *)領域で、実行フックが実行されるコンテナを制御するフィルタを追加できます。
-
[フィルタの追加]を選択します。
-
[フックフィルタータイプ*]列で、フィルターを適用する属性をドロップダウンメニューから選択します。
-
[Regex]列に、フィルタとして使用する正規表現を入力します。Astra Controlでは、を使用します "正規表現2(RE2)正規表現の正規表現構文"。
正規表現フィールドに他のテキストを含まない属性(ポッド名など)の正確な名前でフィルタリングすると、部分文字列の照合が実行されます。正確な名前とその名前だけを照合するには、完全に一致する文字列の一致構文を使用します(例: ^exact_podname$
)。 -
フィルタをさらに追加するには、*フィルタを追加*を選択します。
実行フックの複数のフィルタは、論理AND演算子と結合されます。実行フックごとに最大10個のアクティブフィルタを使用できます。
-
-
完了したら、「次へ」を選択します。
-
[* スクリプト * ( * Script * ) ] 領域で、次のいずれかを実行します。
-
新しいスクリプトを追加します。
-
「 * 追加」を選択します。
-
次のいずれかを実行します。
-
カスタムスクリプトをアップロードする。
-
[ ファイルのアップロード( Upload file ) ] オプションを選択します。
-
ファイルを参照してアップロードします。
-
スクリプトに一意の名前を付けます。
-
(オプション)他の管理者がスクリプトについて知っておく必要があるメモを入力します。
-
「スクリプトを保存」を選択します。
-
-
クリップボードからカスタムスクリプトを貼り付けます。
-
[貼り付け(Paste)]または[タイプ(* type)]オプションを選択する
-
テキストフィールドを選択し、スクリプトテキストをフィールドに貼り付けます。
-
スクリプトに一意の名前を付けます。
-
(オプション)他の管理者がスクリプトについて知っておく必要があるメモを入力します。
-
-
-
-
リストから既存のスクリプトを選択します。
このスクリプトを使用するように実行フックに指示します。
-
-
「 * 次へ * 」を選択します。
-
実行フックの設定を確認します。
-
「 * 追加」を選択します。
実行フックの状態を確認します
スナップショット、バックアップ、または復元操作の実行が終了したら、操作の一部として実行された実行フックの状態を確認できます。このステータス情報を使用して、実行フックを保持するか、変更するか、削除するかを決定できます。
-
「 * アプリケーション」を選択し、管理アプリの名前を選択します。
-
[データ保護]タブを選択します。
-
実行中のSnapshotを表示するには「* Snapshots」を選択し、実行中のバックアップを表示するには「* Backups」を選択します。
フック状態*は、操作完了後の実行フックランのステータスを示します。状態にカーソルを合わせると、詳細を確認できます。たとえば、スナップショット中に実行フック障害が発生した場合、そのスナップショットのフック状態にカーソルを合わせると、失敗した実行フックのリストが表示されます。各失敗の理由を確認するには、左側のナビゲーション領域の*アクティビティ*ページを確認します。
スクリプトの使用状況を表示します
どの実行フックがAstra Control Web UIの特定のスクリプトを使用しているかを確認できます。
-
「 * アカウント * 」を選択します。
-
[スクリプト]タブを選択します。
スクリプトのリストにある* Used by *列には、リスト内の各スクリプトを使用しているフックの詳細が表示されます。
-
目的のスクリプトの[使用者*]列の情報を選択します。
より詳細なリストが表示され、スクリプトを使用しているフックの名前と、それらが実行されるように構成されている操作のタイプが示されます。
実行フックを編集します
実行フックを編集して、その属性、フィルタ、または使用するスクリプトを変更できます。実行フックを編集するには、Owner、Admin、またはMemberのいずれかの権限が必要です。
-
「 * アプリケーション」を選択し、管理アプリの名前を選択します。
-
[ 実行フック * ] タブを選択します。
-
編集するフックの*アクション*列のオプションメニューを選択します。
-
「 * 編集 * 」を選択します。
-
各セクションを完了したら、「次へ」を選択して、必要な変更を行います。
-
[ 保存( Save ) ] を選択します。
実行フックを無効にします
アプリケーションのスナップショットの前または後に実行を一時的に禁止する場合は、実行フックを無効にできます。実行フックを無効にするには、 Owner 、 Admin 、または Member のいずれかの権限が必要です。
-
「 * アプリケーション」を選択し、管理アプリの名前を選択します。
-
[ 実行フック * ] タブを選択します。
-
無効にするフックの * アクション * 列のオプションメニューを選択します。
-
[Disable] を選択します。
実行フックを削除します
不要になった実行フックは完全に削除できます。実行フックを削除するには、 Owner 、 Admin 、または Member のいずれかの権限が必要です。
-
「 * アプリケーション」を選択し、管理アプリの名前を選択します。
-
[ 実行フック * ] タブを選択します。
-
削除するフックの * アクション * 列のオプションメニューを選択します。
-
「 * 削除」を選択します。
-
表示されたダイアログで、「delete」と入力して確定します。
-
[はい]を選択し、実行フックを削除します。*