GCE实例组是否可以根据Google Cloud PubSub队列计数或其他异步任务队列(如PSQ)进行放大/缩小?
是!
该功能现在处于alpha中:https://cloud.google.com/compute/docs/autoscaler/scaling-queue-based
我自己还没有尝试过,但查看文档,可以根据Pub/Sub消息队列计数设置自动缩放。
此页面[0]解释了如何设置自动缩放器以基于云监控服务提供的标准度量进行缩放。
本页[1]介绍了可以用于自动缩放的指标。这两个看起来很有用:
pubsub.googleapis.com/subscription/num_outstanding_messagespubsub.googleapis.com/subscription/num_undelivered_messages
[0]https://cloud.google.com/compute/docs/autoscaler/scaling-cloud-monitoring-metrics[1]https://cloud.google.com/monitoring/api/metrics
您不能为此目的使用pubsub度量(pubsub.googleapis.com/subscription/num_outstanding_messages或pubsub.goggleapis.com/subscription/num_undelivered_messages)。根据文件:
缩放的有效利用率指标符合以下标准:
标准度量有一个resource_id的标签,每个流的标签值是实例的id。
标准度量描述实例的繁忙程度,度量值与组中虚拟机实例的数量成比例地增加或减少。
pubsub指标不符合该标准。
但是,有两种方法可以使用基于pubsub的自动缩放:
-
编写您自己的自定义度量-您可以使用gcloud监控api来获取您的pubsub时间序列数据。然后使用它来计算您自己的自定义监控指标——例如,最后一个时间序列值除以您的平均/期望延迟。您可以将此方法用于正在使用的每个异步队列解决方案。
-
仍然在alpha中,有一个用于基于订阅者的自动缩放的gcloud api:https://cloud.google.com/compute/docs/autoscaler/scaling-queue-based.此解决方案仅适用于谷歌云pubsub,您不能将其与其他异步队列解决方案一起使用。