【问题标题】:Subscribe for instances list update in GCE autoscaled group订阅 GCE 自动缩放组中的实例列表更新
【发布时间】:2018-11-02 16:05:18
【问题描述】:

有没有办法在 GCE 自动缩放组中获取/订阅/用于运行实例列表。
通过 gcloud 工具,我们可以定期调用列表,但我想订阅列表更新。 我怀疑 GCE 中目前是否有这样的 API 实现(项目元数据除外),但我需要在我的应用程序中拥有这样的功能,以便我可以在上面编写逻辑。
也许有人有类似案例的经验或知道任何“黑客”?

【问题讨论】:

    标签: google-compute-engine


    【解决方案1】:

    据我所知,没有办法订阅托管实例组中的实例列表。

    您需要手动轮询托管实例组以确定当前实例的列表。

    gcloud compute instance-groups managed list <NAME>

    这是一项可以在 Cloud Functions 中轻松完成的任务。例如,以固定的时间间隔扫描组并将 Json 中的列表通过电子邮件发送给您。可能性无穷无尽。

    【讨论】:

      【解决方案2】:

      您可以使用 (1) 发布订阅主题“instance-group-changes”和 (2) 在启动和关闭脚本中将事件推送到此轻松构建。

      (1) 创建“instance-group-changes”主题

      gcloud init
      gcloud pubsub topics create instance-group-changes
      

      (2)修改实例组的启动脚本发送addInstance事件

      注意:一定要在实例模板中添加“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"
      

      (3)修改关闭脚本发送removeInstance事件

      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 │
      
      

      【讨论】:

        猜你喜欢
        • 2017-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-10
        • 2014-05-05
        • 2012-09-08
        相关资源
        最近更新 更多