google-cloud-platform - 如何在 Google Cloud Platform 中配置托管实例组和自动缩放

标签 google-cloud-platform google-compute-engine autoscaling

自动缩放可帮助您根据负载自动添加或删除计算引擎。 GCP 中自动扩缩的先决条件是实例模板和托管实例组。

这个问题是另一个question's answer的一部分,这是关于构建自动缩放和负载平衡的后端。

我写了以下答案,其中包含在 GCP 中设置自动缩放的步骤。

最佳答案

自动缩放是 的一项功能托管实例组 在 GCP 中。这有助于通过扩展实例来处理非常高的流量,同时它还会在没有流量时缩减实例,从而节省大量资金。

要设置自动缩放,我们需要以下内容:

  • 实例模板
  • 托管实例组
  • 自动缩放策略
  • 健康检查

  • 实例模板是一个蓝图,用于定义将在自动扩展的托管实例组中运行的同类实例的机器类型、镜像和磁盘。我已经写了设置实例模板的步骤 here .

    托管实例组 有助于保持一组基于单个实例模板的同类实例。假设实例模板为 样本模板 .这可以通过在 gcloud 中运行以下命令来设置:
    gcloud compute instance-groups managed \
    create autoscale-managed-instance-group \
    --base-instance-name autoscaled-instance \
    --size 3 \
    --template sample-template \
    --region asia-northeast1
    

    上述命令基于示例模板创建了一个托管实例组,其中包含位于 asia-northeast1 区域的三个不同区域中的 3 个计算引擎。
  • 基础实例名称 将是所有自动创建的实例的基本名称。除了基本名称之外,每个实例名称都将附加一个唯一生成的随机字符串。
  • 尺寸 表示组中所需的实例数。到目前为止,无论应用程序产生的流量有多大,都会有 3 个实例一直运行。稍后,它可以通过将策略应用于该组来自动缩放。
  • 区域(多区域)或单区域 :托管实例组可以设置在一个区域(多可用区)中,即同构实例将均匀分布在给定区域的所有可用区中,或者所有实例都可以部署在一个区域内的同一可用区中。它也可以作为跨区域一部署,目前处于 alpha 阶段。

  • 自动缩放策略 确定自动调节程序的行为。自动缩放器聚合来自实例的数据,并将其与策略中指定的所需容量进行比较,并确定要采取的操作。有许多自动缩放策略,例如:
  • 平均 CPU 使用率
  • HTTP 负载均衡服务容量(请求数/秒)
  • Stackdriver 标准和自定义指标
  • many more

  • 现在,介绍 自动缩放 通过在 gcloud 中运行以下命令来访问此托管实例组:
    gcloud compute instance-groups managed \
    set-autoscaling \
    autoscale-managed-instance-group \
    --max-num-replicas 6 \
    --min-num-replicas 2 \
    --target-cpu-utilization 0.60 \
    --cool-down-period 120 \
    --region asia-northeast1
    

    上面的命令基于 设置了一个自动缩放器CPU 利用率 范围从 2 (在没有流量的情况下)到 6 (在交通繁忙的情况下)。
  • 冷却期标志指定实例启动后在关联的自动缩放器开始从中收集信息之前等待的秒数。
  • 一个自动缩放器最多可以关联到 5 种不同的政策 .如果有多个策略,Autoscaler 会推荐具有最大实例数的策略。
  • 有趣的事实:当一个实例被自动缩放器启动时,它确保实例运行至少 10 分钟,而不管流量如何。这样做是因为 GCP 对计算引擎的至少 10 分钟运行时间收费。它还可以防止实例异常启动和关闭。

  • 最佳实践:从我的角度来看,与使用启动脚本相比,最好在安装了所有软件的情况下创建自定义镜像。因为在自动缩放组中启动新实例所花费的时间应尽可能短。这将提高您扩展 Web 应用程序的速度。

    这是第 2 部分 3-part series关于构建自动缩放和负载平衡的后端。

    关于google-cloud-platform - 如何在 Google Cloud Platform 中配置托管实例组和自动缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41541761/

    相关文章:

    google-app-engine - 爆炸式索引和 unix 时间戳

    google-cloud-platform - 如何使用API​​或Terraform模板在GCP中创建StackDriver工作区

    python - 在 Ubuntu 中设置 Google Cloud Managed VM 时出现 Docker Daemon 连接错误

    amazon-web-services - AWS Cloudwatch - 当我尝试为 SQS 创建警报时没有显示自动扩展组

    azure - 使用自动缩放维持最小数量的 Microsoft Azure 虚拟机实例

    google-cloud-platform - 区域丢失后从 Dataflow 恢复 PubSub Acked 消息

    linux - 命令 "gcloud compute ssh"和 "ssh"之间的区别

    google-compute-engine - 如何向计算引擎虚拟机添加额外的网卡?

    google-cloud-platform - 如何将文件从存储桶 GCP 复制到我的本地机器

    amazon-web-services - 防止 AWS Autoscalingroup 在通过 Cloudformation 更新期间启动超过最大大小的实例