高可用性パイプラインのベストプラクティス

大量のデータの収集と処理に依存する重要なアプリケーションや位置情報サービスには、信頼性と応答性に優れた基盤となるインフラストラクチャが必要です。 HERE platform 内では、位置データを処理するためのさまざまなフレームワークを提供しています。 バッチまたはストリームパイプラインを使用して処理が行われます。 本番パイプラインで発生する可能性のある障害または例外があります。 パイプラインが確実に動作し、ビジネス要件を満たすように、可用性の高いパイプラインを作成して展開するためのオプションをいくつか提供しています。 このガイドでは、これらのオプションについて理解し、これらのオプションを使用して特定のエラー / 例外状況を管理する最適な方法について説明します。

パイプラインでは、次の状況によって高可用性になることがありません。

以下のセクションでは、各状況とその管理方法について説明します。

ストリーム パイプラインが失敗し、再起動時にデータが再処理されたか、または一部のデータが処理されませんでした

ストリームパイプラインのチェックポイントを有効化します

失敗したストリーム パイプラインが処理を続行するには、前の実行状態から復元することが重要です。 このような状態を作成するには、 Flink のチェックポイントが必要です。 既定では、チェックポイントは無効になっています。 有効にすると、 Flink は、指定した間隔でパイプラインの整合性のあるスナップショット(チェックポイント)(または Flink 用語ではジョブグラフ)を取得します。 これらのチェックポイントは、パイプラインの再起動時に、パイプラインを最後に実行した状態から復元するために使用されます。 詳細について は、「ストリーム パイプラインのベストプラクティス」の「 Flink チェックポイント」セクションを参照してください。

ストリーム パイプラインが失敗し、再起動しませんでした

ストリームパイプラインの再起動ストラテジを有効化します

デフォルトでは、失敗したストリーム パイプラインは再起動されません。 障害発生時にパイプラインを再起動できるようにするために、 Flink では次の再起動方法をサポートしています。これにより、障害発生時のジョブの再起動方法を制御できます。

  • 固定遅延再起動戦略 固定遅延再起動戦略では、ジョブの再起動を所定の回数試行します。 最大試行回数を超過すると、最終的にジョブは失敗します。
  • 失敗率の再起動ストラテジ 失敗率の再起動ストラテジは、失敗後にジョブを再起動しますが failure rate 、 ( 時間間隔あたりの失敗数 ) を超えると、最終的にジョブは失敗します。
  • No Restart Strategy ( デフォルト ) ジョブは直接失敗し、再起動は試行されません。

チェックポイントが有効になっていない場合 は、再起動なしの方法が使用されます。 詳細について は、「 Flink の再起動の戦略」を参照してください。

タスク管理者が失敗したため、ストリーム パイプラインに失敗しました

短い再起動ストラテジを使用して、追加のタスク管理者をプロビジョニングします

Flink タスクマネージャに障害が発生したか、または到達不能になった場合、パイプラインはタスクマネージャの交換を取得しようとします。 この処理には数分かかることがあり、その時間内にデータ処理が保留になります。 新しいタスクマネージャがスプールされて割り当てられる前に、再試行が時間または頻度のしきい値を超えると、パイプラインが失敗することもあります。 このような状況を回避するには、パイプラインのリソースクラスタを設定しながら、予備のタスクマネージャをスタンバイにプロビジョニングすることをお勧めします。 追加のタスク管理者は、通常のパイプライン操作ではデータを処理せず、アクティブなタスク管理者に障害が発生した場合にのみ使用されます。

たとえば、パイプラインの並列処理数が 8 で、 9 つのタスク管理者が割り当てられている場合、 8 つのタスク管理者のみがデータの処理に使用されます。 9 番目のタスクは、 8 つのアクティブなタスクマネージャのいずれかに障害が発生するまでスタンバイ状態になります。 この設定を利用するには、 Flink 再起動ストラテジ内で短い時間間隔を設定することをお勧めします。 アクティブなタスク管理者のいずれかに障害が発生すると、パイプラインはすでに利用可能な追加のタスク管理者をすばやく選択して処理を続行します。パイプラインは再試行を続け、新しいタスク管理者を待機しません。 Flink の並列処理の詳細については、「ストリーム パイプラインのベストプラクティス」の「並列処理の設定」および「クラスタの設定」および「並列処理」の項を参照してください。 再起動方法の詳細については、上の「ストリーム パイプライン failed and did not restart 」 ( 再起動に失敗しました ) の項を参照してください。

注 : 追加コスト

追加のタスク管理者をプロビジョニングすると、追加のコストが発生します。 クリティカルなパイプラインの場合、複数の追加のタスク管理者をプロビジョニングできます。

ジョブマネージャーが失敗したため、ストリーム パイプラインに失敗しました

ストリームパイプラインの高可用性オプションを有効化します

ストリーム パイプラインの Flink ジョブマネージャに障害が発生し、実行中のジョブとパイプラインに障害が発生することがあります。 この状況を回避するには、 Flink ジョブマネージャーの高可用性オプションを有効にします。 高可用性モードでは、処理中のダウンタイムがほぼゼロに削減され、時間の制約があるストリームデータ処理に役立ちます。 このオプションの設定方法については 、 Steam パイプラインのベストプラクティスの「 Flink ジョブマネージャーの高可用性」セクションを参照してください。

パイプラインに失敗し、到達できませんでした

パイプラインの複数リージョンの設定を有効にします

パイプライン に障害が発生し、完全に到達不能になった場合は、そのがホストされているリージョンで重大な問題が発生した可能性があります。 プライマリリージョンに障害が発生した場合にダウンタイムを最小限に抑える必要があるバッチパイプラインとストリーム パイプラインの両方で、パイプライン に複数リージョンオプションを設定して、プライマリリージョンに障害が発生した場合にパイプライン が自動的にセカンダリリージョンに転送されるようにできます。 実行中のパイプラインがセカンダリリージョンで再起動されます。 実行されていないパイプラインはそのまま転送されます。 プライマリリージョンが再びアクティブになると、パイプラインは同じ注意でプライマリリージョンに転送されます。

バッチ パイプラインの場合、 Spark 履歴の詳細もリージョンの障害時に転送されます。

プライマリリージョンに障害が発生すると 、実行 状態のオンデマンドバッチ パイプライン がセカンダリリージョンで自動的に再アクティブ化されます。 ただし、失敗したオンデマンドバッチ パイプライン を手動で再アクティブ化する必要があります。

注 : 複数リージョンの設定に追加のコストがかかります

2 つのリージョン間でのパイプライン状態の転送は、パイプライン I/O として請求されます

複数リージョンの設定を有効にするには、次の設定が行われていることを確認してください。

  • パイプラインがセカンダリ領域で正常に動作するには、パイプラインで使用される入力および出力カタログがセカンダリ領域で使用可能である必要があります。
  • ストリーム パイプライン が複数リージョンのオプションを正常に利用できるようにするには、コード内のチェックポイントを有効にして、プライマリリージョンでパイプライン を実行しているときに Flink が定期的なセーブポイントを取得できるようにすることが重要です。 プライマリリージョンに障害が発生すると、最後に利用可能なセーブポイントを使用してセカンダリリージョンのパイプライン が再起動されます。 チェックポイントの詳細について は、「ストリーム パイプライン が失敗しました」および「再起動時にデータが再処理されたか、上記の一部のデータが処理されませんでした」を参照してください。

注 : 複数リージョンの設定は中国 では利用できません

中国 環境で複数リージョンの設定を有効にしようとすると、次のエラーメッセージが表示されて失敗します。 組織にセカンダリリージョンが設定されていませ multiRegionEnabledん。フラグを "true" に設定しないでください。

パイプラインが失敗したか、通知なしで再起動されました

パイプライン連絡先情報を更新します

通知なしに HERE platform によってパイプラインが再起動された場合、都合の悪いときに再起動されることがあります。

ストリーム パイプラインの場合 は、予定されている停電などの理由でパイプラインが HERE platform によって再起動されるように、電子メールフィールドに電子メールアドレスを入力することをお勧めします。 割り当てられたメールアドレスに電子メール通知が送信され、都合のよいときに適切なアクションを実行できます。

詳細については 、「ストリームパイプラインの通知と復旧を有効にする」を参照してください

パイプラインの監視と警告を使用します

パイプラインは、時間の経過とともにステータスを追跡するために使用できる特定の標準的なメトリクスを生成します。 パイプラインのステータスを監視するために、パイプラインステータスホームが Grafana で利用できます。 そのホームに基づいて、電子メールまたはその他のメディアを介して送信できる障害アラートを設定できます。 さらに、バッチパイプライン用の Spark UI およびストリーム for Flink ホームパイプラインは、プラットフォームで利用でき、パイプラインのパフォーマンスを評価して改善するのに役立ちます。 最後に、パイプラインのカスタムメトリクスを作成して、特定の予想される出力を監視し、警告を受け取ることもできます。 詳細について は、「パイプライン監視」セクションおよび「ログ、監視、および警告ユーザー ガイド」を参照してください。

」に一致する結果は 件です

    」に一致する結果はありません