在本教程中,您将部署一个示例日志应用,该应用使用 Node.js 作为其前端,并使用 MySQL 作为其后端。在本教程结束时,您的部署具有以下资源:
如果您刚接触 Deployment Manager,请参阅快速入门或分步指南教程。
准备工作
- 如果要使用本指南中的命令行示例,请安装 “gcloud” 命令行工具。
- 如果希望使用本指南中的 API 示例,请设置 API 访问权限。
- 阅读 Compute Engine 网络负载平衡概述。
- 阅读 Docker 容器概览。
创建资源模板
此示例启动了包含各种 Google Cloud 资源的部署。首先,您要创建分别定义这些资源的模板。随后,您将在最终配置中调用这些模板。您的部署包含以下资源:
- 托管应用程序 MySQL 数据库的 Compute Engine实例。
- 将 Docker 映像用于 Node.js 应用程序的前端实例模板。
- 使用实例模板创建两个前端实例的托管实例组。
- 根据传入流量启动或停止其他前端实例的自动缩放器。
- 检查前端实例是否可用于执行工作的健康检查。
- 包含转发规则的网络负载平衡器。
- 托管实例组的目标池。
为 MySQL 后端创建模板
此应用的后端是一个运行 MySQL Docker 容器的单个 Compute Engine 实例。container_vm.py
模板定义了可以运行 Docker 容器的 Compute Engine 实例。要确保模板采用正确的结构并包含所有必要属性,还需要一个架构文件。
复制下面的模板,或从 GitHub 代码库下载:
该模板有一些未定义的属性(例如 containerImage
)将在以后的模板中定义。
您在 Compute Engine 实例上使用容器映像时,还需要提供描述要使用的容器映像的清单文件。创建一个名为 container_helper.py
的辅助方法,用于动态定义容器清单:
为 Node.js 前端创建模板
应用的前端运行 Node.js,并允许用户将消息发布到网页上。在一组虚拟机实例上运行的前端,由自动调节程序和负载平衡器提供支持。要创建前端模板,请按照以下说明操作。
创建实例模板资源。
您需要实例模板来创建托管实例组,这是您作为单个实体控制的一组相同的虚拟机 (VM) 实例。
创建名为
container_instance_template.py
的文件,然后下载模板的架构:创建自动调节程序、托管实例组和负载平衡器。
下一步,创建使用
container_instance_template.py
模板的另一个模板,并创建其余的前端资源,包括自动调节程序、负载平衡器和托管实例组。
此模板包含以下资源:
使用
container_instance_template.py
模板的实例模板。使用实例模板的托管实例组以及引用托管实例组的自动调节程序。使用引用确保 Deployment Manager 按特定顺序创建资源。在此情况下,在自动调节程序之前创建托管实例组。
包含以下资源的网络负载平衡器:
- 向互联网公开单个外部 IP 地址的转发规则。
- 包含您之前创建的托管实例组的目标池。
- 要附加到目标池的健康检查。
创建名为 frontend.py
的文件,然后下载模板的架构:
创建统一模板
最后,创建一个结合后端和前端模板的模板。创建名为 nodejs.py
且包含以下内容的文件:
请注意,应用的前端名为 env["deployment"]-frontend
,并且您的后端也采用相似的名称。部署应用时,Deployment Manager 会自动将 env["deployment"]
替换为部署名称。
创建配置
准备好所有模板后,您可以创建用于部署资源的配置。创建名为 nodejs.yaml
且包含以下内容的配置文件:
将 ZONE_TO_RUN
替换为您需要从中获取资源的地区,例如 us-central1-a
。
部署资源
现在,部署您的资源。使用 Google Cloud CLI 运行以下命令:
gcloud deployment-manager deployments create advanced-configuration --config nodejs.yaml
部署完成后,Deployment Manager 将显示已创建资源的摘要,类似以下所示:
Waiting for create operation-1468522101491-5379cf2344539-5961abe8-a500190c...done.
Create operation operation-1468522101491-5379cf2344539-5961abe8-a500190c completed successfully.
NAME TYPE STATE ERRORS
advanced-configuration-application-fw compute.v1.firewall COMPLETED []
advanced-configuration-backend compute.v1.instance COMPLETED []
advanced-configuration-frontend-as compute.v1.autoscaler COMPLETED []
advanced-configuration-frontend-hc compute.v1.httpHealthCheck COMPLETED []
advanced-configuration-frontend-igm compute.v1.instanceGroupManager COMPLETED []
advanced-configuration-frontend-it compute.v1.instanceTemplate COMPLETED []
advanced-configuration-frontend-lb compute.v1.forwardingRule COMPLETED []
advanced-configuration-frontend-tp compute.v1.targetPool COMPLETED []
测试应用
要测试应用,请先通过查询转发规则获取传送流量的外部 IP 地址:
$ gcloud compute forwarding-rules describe advanced-configuration-frontend-lb --region us-central1 IPAddress: 104.154.81.44 IPProtocol: TCP creationTimestamp: '2016-07-14T11:48:37.228-07:00' description: '' id: '9033201246750269546' kind: compute#forwardingRule name: advanced-configuration-frontend-lb portRange: 8080-8080 region: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1 selfLink: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/forwardingRules/advanced-configuration-frontend-lb target: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/targetPools/advanced-configuration-frontend-tp
在此示例中,外部 IP 为 104.154.81.44
。
接下来,在浏览器中,通过端口 8080 访问外部 IP 地址。例如,如果您的外部 IP 地址是 104.154.81.44
,则网址为:
http://104.154.81.44:8080
系统应该会显示一个空白页面。下一步,在页面发布消息。转到以下网址:
http://104.154.81.44:8080?msg=hellothere!
系统会向您发送确认消息,告知您消息已添加至页面。返回主网址,这时,该页面应显示以下消息:
hellothere!
您现在有一个已部署的应用,可以记录发送给它的消息。
后续步骤
完成此示例后,您可以:
- 通过用您自己的 Docker 容器部署实例来构建此示例。 如果要修改本教程中使用的 Docker 容器,请修改 GitHub 代码库中的 Dockerfile。
- 请参阅 Deployment Manager GitHub 代码库中的更多示例部署。
- 详细了解模板和部署。