【发布时间】:2018-11-02 16:05:18
【问题描述】:
有没有办法在 GCE 自动缩放组中获取/订阅/用于运行实例列表。
通过 gcloud 工具,我们可以定期调用列表,但我想订阅列表更新。
我怀疑 GCE 中目前是否有这样的 API 实现(项目元数据除外),但我需要在我的应用程序中拥有这样的功能,以便我可以在上面编写逻辑。
也许有人有类似案例的经验或知道任何“黑客”?
【问题讨论】:
有没有办法在 GCE 自动缩放组中获取/订阅/用于运行实例列表。
通过 gcloud 工具,我们可以定期调用列表,但我想订阅列表更新。
我怀疑 GCE 中目前是否有这样的 API 实现(项目元数据除外),但我需要在我的应用程序中拥有这样的功能,以便我可以在上面编写逻辑。
也许有人有类似案例的经验或知道任何“黑客”?
【问题讨论】:
据我所知,没有办法订阅托管实例组中的实例列表。
您需要手动轮询托管实例组以确定当前实例的列表。
gcloud compute instance-groups managed list <NAME>
这是一项可以在 Cloud Functions 中轻松完成的任务。例如,以固定的时间间隔扫描组并将 Json 中的列表通过电子邮件发送给您。可能性无穷无尽。
【讨论】:
您可以使用 (1) 发布订阅主题“instance-group-changes”和 (2) 在启动和关闭脚本中将事件推送到此轻松构建。
gcloud init
gcloud pubsub topics create instance-group-changes
注意:一定要在实例模板中添加“cloud pubsub api access scope”
使用元数据服务获取instance-id、hostname等
TOPIC=instance-group-changes
instance_id=`curl -s http://metadata.google.internal/0.1/meta-data/instance-id`
gcloud pubsub topics publish "$TOPIC" \
--attribute 'event=addInstance' \
--message "instance_id=$instance_id"
TOPIC=instance-group-changes
instance_id=`curl -s http://metadata.google.internal/0.1/meta-data/instance-id`
gcloud pubsub topics publish "$TOPIC" \
--attribute 'event=removeInstance' \
--message "instance_id=$instance_id"
创建订阅
gcloud pubsub subscriptions create sub-instance-group-changes --topic=instance-group-changes
从订阅中拉取
gcloud pubsub subscriptions pull --limit 5 sub-instance-group-changes
┌─────────────────────────────────┬─────────────────┬──────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ DATA │ MESSAGE_ID │ ATTRIBUTES │ ACK_ID │
├─────────────────────────────────┼─────────────────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│
│ instance_id=5396233750823583338 │ 407816607936940 │ event=addInstance │ XkASTD4HRElTK0MLKlgRTgQhIT4wPkVTRFAGFixdRkhRNxkIaFEOT14jPzUgKEUaC1MTUVx1Hk4Qb1gzdQdRDRlze2hxO1kaAFMTUHRdURsfWVx-SgNRChFze2d1bVMQBwtBU1b55f_L9q0zZhs9XBJLLD5-NTJFQQ │
│ instance_id=5396233750823583338 │ 407816742842477 │ event=removeInstance │ XkASTD4HRElTK0MLKlgRTgQhIT4wPkVTRFAGFixdRkhRNxkIaFEOT14jPzUgKEUaC1MTUVx1Hk4Qb1gzdQdRDRlze2hxO1kaAFMTUHRcURsfWVx-SgNRChFze2ZxaFIXAwZCVFb55f_L9q0zZhs9XBJLLD5-NTJFQQ │
【讨论】: