2016-06-13 2 views
0

サービスファブリックのサービスアップグレードの一環としてサービスをウォームアップする組み込みの方法があるかどうかは、さまざまな方法と同様です。要求にヒットする前にIISベースのアプリケーションプール。理想的には、開始されたとみなされ、他のサービスが接触できるようになる前に、個々のサービスが初期化の一部としてウォームアップ・タスクを実行することが望まれます(キャッシュ・ロード、リカバリなど)。このウォーミングアップはアップグレードドメイン処理の一部である必要があります。そのため、アップグレードプロセスはウォーミングアップが完了し、サービスがOK/Readyとして報告されるまで待つ必要があります。サービスファブリックのアップグレードに関するウォームアップサービス

特定のサービスが完全に開始され、他のサービスと連絡する準備ができていることをサービスファブリックにシグナリングするプロセスを制御する、他の人はどのようにこのようなシナリオを処理しますか?健康政策で

答えて

1

この概念があります:

HealthCheckWaitDurationSecサービスファブリックは、アプリケーションの健全性を評価する前にアップグレードがアップグレードドメインに終了した後(秒)待機する時間。この期間は、アプリケーションが正常に動作する前に実行する必要がある時間と考えることもできます。ヘルスチェックに合格すると、アップグレードプロセスは次のアップグレードドメインに進みます。ヘルスチェックが失敗した場合、Service Fabricは一定の間隔(UpgradeHealthCheckInterval)を待ってから、HealthCheckRetryTimeoutに達するまでヘルスチェックを再試行します。デフォルト値と推奨値は0秒です。

Source

これはしかし、固定の待機期間です。

ヘルスイベントyourselfを発行することもできます。たとえば、ウォームアップ中に健康状態を「不明」として報告できます。これを確認するために健康状態(HealthCheckWaitDurationSec)を調整してください。

+0

返信ありがとうございます@LoekD。これを試しましたが、この待機時間に関係なく、最初のアップグレードドメインからアップグレードプロセスが継続されます。これまでに読んだことのないところでは、Unknown Healthイベントを非常に早く放出し、ウォーミングアップが完了したらOKに設定する必要があるようです。 –

0

健康状態の報告は役に立ちます。 Unknownを報告することはできません。非常に早い段階でエラーを報告し、サービスが準備完了したときにエラーをクリアする必要があります。警告とOKはアップグレードに影響しません。エラーをクリアするには、サービスが正常状態、OK、RemoveWhenExpired = true、低TTLを報告できます(詳細はhow to reportを参照してください)。

最大ウォームアップ時間に基づいてHealthCheckRetryTimeoutを増やす必要があります。それ以外の場合は、ヘルスチェックが実行され、clusterがErrorに評価されると、アップグレードは失敗します(ポリシーごとにロールバックまたは一時停止されます)。

ので、順序のイベントは次のとおりです。

  • あなたのサービスレポートエラー - 固定HealthCheckWaitDurationSecため
  • アップグレード待ち「を進行中のウォーミングアップ」(あなたがウォームアップする分の時間に設定することができます)
  • アップグレードはヘルスチェックを実行します。サービスがまだウォームアップされていない場合、ヘルス状態はErrorであるため、HealthCheckRetryTimeoutに達するかサービスがエラーになるまでアップグレードが再試行されます(ウォームアップが完了し、 。
+0

@ oana-platonのボールを落として申し訳ありません。私はちょうどこれをテストし、サービスがOKになるまでアップグレードドメインの進捗を遅らせ、カスタムヘルスイベント(https://github.com/enemaerke/servicefabric-upgradetestsを参照)によって制御される実用的なソリューションを持っています。 –

関連する問題