本指南介绍了如何完成以下操作:
- 在 Google Cloud Platform App Engine 上手动配置代码植入服务器。
- 升级自动配置的代码植入服务器,以使其能够处理实时流量。
- 增加或减少运行服务器容器的服务器数量。
过程包括以下步骤:
- 在 Google Cloud Console 中创建 Google Cloud Platform 项目或转到现有项目。
- 运行 Shell 脚本后,系统会引导您完成设置代码植入服务器或更改现有代码植入服务器配置的步骤。
测试配置(在自动配置过程中默认设置)适用于以下情况:测试流量较少;使用跟踪代码管理器中的预览功能。不过,我们建议您使用 Shell 脚本将服务器升级到生产配置,然后再将大量实时流量发送到服务器。
在测试配置中,大多数情况下不会产生任何费用。在标准环境中,测试配置是 App Engine F1 实例类。
在生产配置中,每个服务器每月的费用约为 40 美元。在柔性环境中,每个服务器都是一个 App Engine 实例,具有 1 个 vCPU、0.5 GB 内存和容量为 10 GB 的磁盘。我们建议您运行至少 3 个服务器,以降低服务器中断时数据丢失的风险。不过,您可以选择运行更少(或更多)的服务器。根据我们的预期,自动扩缩 3-6 个服务器(默认值)每秒可处理 50-200 个请求,不过性能会因代码数量和这些代码的作用而异。
如需了解 App Engine 计费和结算提醒的配置方式,请参阅管理 App Engine 费用。我们强烈建议您设置结算提醒。
创建 Google Cloud Platform (GCP) 项目
如果您通过自动配置过程创建了 GCP 服务器,则 GCP 项目已存在。要访问该项目,请转到 console.cloud.google.com,查看您有权访问的项目。项目 ID 即为您的容器 ID,后缀为一系列随机字符。
如果您没有通过自动配置过程创建 GCP 服务器,请按以下步骤操作:
对于新 GCP 用户:请创建一个新的 GCP 帐号和一个 GCP 结算帐号。
对于现有 GCP 用户:请在 GCP 中创建一个新项目。您可以根据自己的喜好为项目命名,但为方便起见,我们建议您使用容器 ID。此名称仅在 GCP 内使用。请记下您的项目 ID。
创建代码植入服务器或重新配置现有代码植入服务器
- 打开 Google Cloud Platform Cloud Shell
在 Cloud Shell 中设置 Cloud Platform 项目。将
<PROJECT_ID>
替换为您之前记下的 GCP 项目 ID:gcloud config set project <PROJECT_ID>
运行以下命令,并按照脚本提供的说明操作。
bash -c "$(curl -fsSL https://googletagmanager.com/static/serverjs/setup.sh)"
借助此 Shell 脚本,您可以执行以下任一任务:
- 如果您尚未设置代码植入服务器,此脚本可帮助您进行设置。
- 如果您想要开始传送来自现有代码植入服务器的生产流量,此脚本可帮助您添加其他服务器。
- 如果您已有代码植入服务器,此脚本可帮助您更改配置。
配置服务器容器网址
如果您之前通过自动配置过程设置了服务器,请跳过此步骤。
系统会将您的应用部署到 App Engine 子网域。您可以运行以下命令来获取网址:
gcloud app browse
复制相应网址,然后转到管理 > 容器设置下的服务器端跟踪代码管理器容器。将该网址粘贴到服务器容器网址中,点击“保存”,然后返回到您的工作区。
验证
在跟踪代码管理器中,预览容器。如果预览页面成功加载,表示所有设置都正确无误。
映射自定义网域
如果您刚刚创建了新的代码植入服务器,请按照这些说明操作,将您网站的子网域指向代码植入服务器。
停用 App Engine 请求日志记录(可选)
默认情况下,App Engine 会记录收到的每个请求的相关信息(例如请求路径、查询参数等)。如果代码植入服务器每月处理大量请求(例如超过 100 万个),则这些日志消息可能会产生高昂的日志记录费用。要减少或削减日志记录费用,我们建议您停用 App Engine 请求日志记录。要停用 App Engine 请求日志记录,请按以下步骤操作:
- 导航到日志记录 -> 日志路由器。确保您正在查看的项目与您的容器 ID 一致:
- 对于“类型:Cloud Logging 存储分区”、“名称:_Default 行”,请选择溢出菜单,然后点击修改接收器
- 在接收器目标位置下,选择日志存储分区 _Default
- 在选择要包含在接收器中的日志下,将此文本添加到新行上的现有包含项过滤条件中:
NOT LOG_ID("appengine.googleapis.com/nginx.request") AND NOT LOG_ID("appengine.googleapis.com/request_log")
- 如需同时停用来自负载平衡器的日志记录,请将以下文本另起一行添加到现有的包含过滤器中:
NOT LOG_ID("requests")
。注意:这将停用来自负载平衡器的所有日志记录,包括未发送到服务器容器的请求。 - 点击底部的更新接收器按钮
现在,App Engine 请求将从日志记录中排除。检查日志记录 -> 日志查看器,确保新请求未显示在日志中。
排查生产部署超时问题
运行设置脚本以创建或重新配置代码植入服务器时,相应脚本可能会超时。出现这种情况的原因有多种,最常见的两种为:
服务帐号的权限有误 - Compute Engine 和 App Engine 服务帐号负责部署和维护生产部署。默认情况下,系统已分别为二者预先配置了所需权限。但在某些情况下,组织的政策可能会导致所配置的权限有误。
- 转到 Google Cloud Console 左侧导航栏中的 IAM 和管理页面。
- 查找 Compute Engine 服务帐号
<project_number>-compute@developer.gserviceaccount.com
及 App Engine 服务帐号<project_name>@appspot.gserviceaccount.com
。 - 两个服务帐号都必须具有
Editor
角色。如果其中一个帐号没有Editor
角色,请更新相应角色,具体操作为:依次点击相应帐号右侧的铅笔图标 > 现有角色的下拉菜单,向上滚动到顶部,然后依次点击 Project > Editor。
配额不足 - 生产部署会消耗 Compute Engine 配额。如果项目没有足够的配额,尝试预配资源时可能会遇到部署超时。
- 转到 Google Cloud Console 左侧导航栏中的 IAM 和管理页面,然后点击左侧导航栏中的配额标签页。
- 在页面顶部附近,点击显示过滤表的文本框,然后输入
Compute Engine API
。点击出现的唯一结果。 - 验证是否所有配额都在限额范围内或都有绿色对勾标记。
- 找到并点击 CPU。验证当前使用量以及所部署的实例数是否仍低于部署区域的限额。