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 自動スケーリングをご覧ください。
指標のギャップが発生した場合の対応方法
指標が存在しないからといって、処理するメッセージがないとは考えないでください。たとえば、指標がない場合に処理タスクをゼロにスケールダウンすると、この間にバックログに追加されたメッセージや公開されたメッセージが消費されない可能性があります。これにより、エンドツーエンドのレイテンシが増加します。レイテンシを最小限に抑えるには、最小タスク数をゼロより大きい値に設定して、最新の Pub/Sub 指標が空のキューを示している場合でも、パブリッシュされたメッセージを処理できるように常に準備します。
GCE オートスケーラーと GKE HPA はどちらも、指標が利用できない場合に現在のレプリカ数を維持するように設計されています。これにより、指標が利用できない場合にセーフティ ネットが提供されます。
また、Pub/Sub フロー制御メカニズムを実装して、指標がないことが原因でタスクが意図せずにダウンスケールされた場合に、タスクが過負荷になるのを防ぐこともできます。