Pub/Sub 指標をスケーリング シグナルとして使用するためのベスト プラクティス

Pub/Sub 指標をシグナルとしてパイプラインを自動スケーリングする場合に使用する推奨事項は次のとおりです。

複数のシグナルを使用してパイプラインを自動スケーリングする

Pub/Sub 指標のみを使用してパイプラインの自動スケーリングを行わないでください。その結果、自動スケーリングの決定に単一障害点が生じる場合があります。代わりに、シグナルを組み合わせて自動スケーリングをトリガーします。追加のシグナルの例としては、クライアントの CPU 使用率レベルがあります。このシグナルは、クライアント タスクが処理を行っているかどうか、またスケールアップすることでクライアント タスクの処理を増やせるかどうかを示すことができます。パイプラインに使用できる他の Cloud プロダクトからのシグナルの例は次のとおりです。

  • Compute Engine(GCE)は、CPU 使用率や Monitoring 指標などのシグナルに基づく自動スケーリングをサポートします。また、Compute Engine は信頼性を高めるため、複数の指標と複数のシグナルもサポートしています。

    Monitoring 指標を使用したスケーリングの詳細については、Monitoring 指標に基づくスケーリングをご覧ください。CPU 使用率によるスケーリングの詳細については、CPU 使用率に基づいてスケーリングするをご覧ください。

  • Google Kubernetes Engine(GKE)水平 Pod 自動スケーリング(HPA)は、CPU とメモリの使用量などのリソース使用量、カスタムの Kubernetes 指標、Pub/Sub の Monitoring 指標などの外部指標に基づく自動スケーリングをサポートします。 また、複数のシグナルにも対応しています。

    詳細については、水平 Pod 自動スケーリングをご覧ください。

指標のギャップが発生した場合の対応方法

指標が存在しない場合、処理するメッセージがないとは限りません。たとえば、指標の欠落に応じて処理タスクをゼロにスケールダウンすると、すでにバックログにあるメッセージや、その期間中に公開されたメッセージは消費されません。これにより、エンドツーエンドのレイテンシが増加します。レイテンシを最小限に抑えるには、最小タスク数を 0 より大きい値に設定して、最新の Pub/Sub 指標で空のキューが示されていても、常にパブリッシュされたメッセージを処理できるように準備します。

GCE オートスケーラーと GKE HPA はどちらも、指標が利用できないときに現在のレプリカ数を維持するように設計されています。これは、指標が利用できない場合でも安全策として機能します。

また、Pub/Sub フロー制御メカニズムを実装して、指標の欠落が原因でタスクが意図せずにダウンスケールした場合にタスクが過負荷状態にならないようにすることもできます。