Amazon Managed Service for Apache Flink (Amazon MSF) は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。
Managed Service for Apache Flink アプリケーションのシステムロールバックを有効にする
システムロールバック機能を使用すると、Amazon Managed Service for Apache Flink で実行中の Apache Flink アプリケーションの高可用性を実現できます。この設定をオプトインすると、UpdateApplication や autoscaling などのアクションでコードや設定のバグが発生したときに、サービスによってアプリケーションを、以前に実行されていたバージョンに自動的に戻すことができます。
注記
システムロールバック機能を使用するには、アプリケーションを更新してオプトインする必要があります。既存のアプリケーションは、デフォルトではシステムロールバックを自動的に使用しません。
仕組み
更新やアクションのスケールなど、アプリケーション操作を開始すると、Amazon Managed Service for Apache Flink は、最初にその操作を実行しようとします。コードのバグやアクセス許可の不足など、問題が検出されて操作が成功しない場合、サービスは自動的に RollbackApplication 操作を開始します。
ロールバックでは、アプリケーションを、関連するアプリケーションの状態とともに、正常に実行されていた以前のバージョンにリストアしようとします。ロールバックが成功すると、アプリケーションは以前のバージョンを使用して、最小限のダウンタイムでデータを処理し続けます。自動ロールバックも失敗した場合、Amazon Managed Service for Apache Flink は、アプリケーションを READY ステータスに移行させるため、ユーザーがエラーを修正して操作を再試行するなどのアクションを実行できます。
自動システムロールバックを使用するには、オプトインする必要があります。コンソールまたは API を使用して、アプリケーションに対するこの時点以降のすべての操作で有効にすることができます。
UpdateApplication アクションの以下のリクエスト例は、アプリケーションのシステムロールバックを有効にします。
{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationSystemRollbackConfigurationUpdate": { "RollbackEnabledUpdate": "true" } } }
自動システムロールバックの一般的なシナリオを確認する
次のシナリオは、自動システムロールバックが役立つケースを示しています。
アプリケーションの更新: メインメソッドを使用して Flink ジョブを初期化するときにバグがある新しいコードでアプリケーションを更新した場合、自動ロールバックで、以前に動作していたバージョンに復元できます。システムロールバックが役立つその他の更新シナリオは次のとおりです。
-
アプリケーションが maxParallelism よりも多い並列処理数で実行されるように更新された場合。
-
VPC アプリケーションのサブネットが正しくない状態で実行されるようにアプリケーションが更新され、Flink ジョブの起動中に失敗する場合。
-
Flink バージョンのアップグレード: 新しい Apache Flink バージョンにアップグレードし、アップグレードしたアプリケーションでスナップショットの互換性の問題が発生した場合、システムロールバックで以前の Flink バージョンに自動的に戻すことができます。
AutoScaling: スナップショットと Flink ジョブグラフの間でオペレーターの不一致があるため、アプリケーションがスケールアップしてもセーブポイントから復元する際に問題が発生する場合。
システムロールバックにオペレーション API を使用する
可視性を高めるために、Amazon Managed Service for Apache Flink には、障害や関連するシステムロールバックの追跡に役立つアプリケーションオペレーションに関連する 2 つの API があります。
ListApplicationOperations
この API は、UpdateApplication、Maintenance、RollbackApplication など、アプリケーションで実行されたすべてのオペレーションを逆の時系列で一覧表示します。ListApplicationOperations アクションの以下のリクエスト例では、アプリケーションに対する最初の 10 件のアプリケーションオペレーションが一覧表示されます。
{ "ApplicationName": "MyApplication", "Limit": 10 }
次の ListApplicationOperations のリクエスト例は、リストをフィルタリングしてアプリケーションの以前の更新のみ表示するのに役立ちます。
{ "ApplicationName": "MyApplication", "operation": "UpdateApplication" }
DescribeApplicationOperation
この API は、障害の理由 (該当する場合) など、ListApplicationOperations に一覧表示されている特定のオペレーションに関する詳細情報を提供します。DescribeApplicationOperation アクションの以下のリクエスト例では、特定のアプリケーションオペレーションの詳細を一覧表示します。
{ "ApplicationName": "MyApplication", "OperationId": "xyzoperation" }
トラブルシューティング情報については、「システムロールバックのベストプラクティス」を参照してください。