IBM Cloud Docs
在共享和专用 VPC 环境中扩展工作负载

在共享和专用 VPC 环境中扩展工作负载

本教程可能会发生成本。 使用“成本估算器”根据您的预计使用量生成成本估算。

本教程将指导您完成在共享 (多租户) 环境和专用 (单租户) 环境中设置隔离工作负载的步骤。 供应 IBM Cloud® Virtual Private Cloud (VPC) 以及跨多个可用性区域 (AZs) 和虚拟服务器实例 (VSI) 的子网,这些子网可根据您的需求进行扩展,以确保应用程序的高可用性。 此外,配置负载均衡器以在一个区域内的区域之间提供高可用性。 为 VPC 配置虚拟专用端点 (VPE),以向 IBM Cloud上的服务提供专用路由。

通过供应专用主机,将加密数据卷连接到 VSI,扩展连接的数据卷以及在事后调整 VSI 大小来隔离工作负载。

您将使用提供 Terraform-as-a-Service 功能的 IBM Cloud Schematics来供应所有这些服务和 VPC 资源。 Terraform 模板定义要创建,更新或删除的 IBM Cloud 资源。

目标

  • 了解如何使用实例自动缩放来设置多专区 VPC。
  • 了解公共和专用负载均衡的概念。
  • 了解如何动态或定期扩展实例。
  • 了解专用主机的使用。

架构*" caption-side="bottom"}{: caption="*

  1. 部署在 VSI 上的前端应用程序通过专用负载均衡器与后端应用程序通信。
  2. 后端应用程序通过虚拟专用端点 (VPE) 安全地与云服务通信。
  3. 随着应用程序上的负载增加,将启用 VPC 的缩放,并根据 CPU,RAM 等指标或通过调度的缩放来动态添加或除去 VSI。
  4. 随着作用域的扩大,专用主机将隔离并对数据执行大量计算。 通过根据您的需求更新概要文件来调整专用主机上的实例大小。 此外,扩展块存储卷容量。
  5. 所有实例都使用虚拟专用端点 (VPE) 通过专用主干与 IBM Cloud 服务进行通信。 有关更多详细信息,请参阅 关于虚拟专用端点网关 主题。

准备工作

本教程需要:

启用日志记录和监视

  1. 将IBM Cloud Logs实例配置为IBM Cloud Logs Routing 的目标。 请参阅 开始使用IBM® Cloud Logs Routing
  2. 配置用于收集平台指标的Monitoring实例。 参见 启用平台指标

供应必需的云服务

在此部分中,您将使用 IBM Cloud Schematics创建应用程序所需的以下云服务: IBM Cloud Databases for PostgreSQL 和 IBM Cloud Object Storage。

  1. 浏览至 Schematics 工作空间,单击 创建工作空间
    1. Specify Template 部分,提供 https://github.com/IBM-Cloud/vpc-scaling-dedicated-host 下的 GitHub 或 GitLab 版本库 URL。
    2. 选择 terraform_v1.5 作为 Terraform 版本,然后单击 下一步
  2. 工作空间详细信息下,
    1. 提供工作区名称:"vpc-scaling-workspace
    2. 选择 Resource GroupLocation
    3. 点击下一步
  3. 验证详细信息,然后点击创建
  4. 变量下,通过单击行>“编辑”中的操作菜单将 step1_create_services 设置为 true,取消选中 使用缺省值,从 Override Value 下拉列表中选择 true,然后单击 保存
  5. 设置要覆盖的任何其他变量,最典型的变量是 regionresource_group_name
  6. 滚动到页面顶部,单击生成计划。 这与 terraform plan 命令相同。
  7. 单击 显示更多 以检查要供应的资源。
  8. 使用面包屑菜单浏览到工作空间页面,然后单击 应用计划。 请检查日志以查看所创建服务的状态。

浏览至 资源列表。 在此处,您可以按用于创建资源 (即 vpc-缩放) 的 basename 进行过滤,您将看到在您指定的资源组中供应的本教程所需的云服务。 使用这些服务存储的所有数据都会使用生成的密钥进行加密,并存储在 IBM Key Protect for IBM Cloud中。

设置多专区虚拟私有云

在此部分中,您将执行以下操作:

  • 配置一个IBM Cloud® Virtual Private Cloud(VPC),子网跨越两个区域。 为了确保前端应用程序和后端应用程序的高可用性,您将在这些区域中创建多个 VSI。
  • 为前端配置公共负载均衡器,为后端应用程序配置专用负载均衡器,以在专区之间提供高可用性。
  • 创建用于在实例组中供应实例的实例模板。

最初,您可能不会部署所有基础架构资源以使其扩展,即使以这种方式进行设计也是如此。 您只能从一个或几个实例开始,如下所示。

部署一个 VSI
部署一个 VSI

随着负载增加,您可能需要更多实例来处理流量。 您可以为前端应用程序配置公共负载均衡器,为后端应用程序配置专用负载均衡器,以在实例之间平均分发入局请求。 通过负载均衡器,您可以为与实例关联的池成员配置特定运行状况检查。

部署多个 VSI
部署多个 VSI

需要实例模板,然后才能创建用于自动缩放的实例组。 实例模板定义了为实例组创建的虚拟服务器实例的详细信息。 例如,指定映像模板的概要文件 (vCPU 和内存),映像,连接的卷和网络接口。 此外,指定了 user data 以分别自动运行前端和后端应用程序所需的 初始化脚本。 为实例组创建的所有 VSI 都使用实例组中定义的实例模板。 该脚本供应实例模板和实例组 (一个用于前端,一个用于后端),但尚未定义自动缩放策略。 此示例不需要数据卷,因此会在 modules/create_vpc/autoscale/main.tf ibm_is_instance_group 资源中注释掉这些卷。

VPC 使用 cloud-init 技术来配置虚拟服务器实例。 VPC 页面的新虚拟服务器上的 user data 字段允许用户使用 cloud-init 来放入定制配置选项。

使用实例组
使用实例组

供应资源

如果要稍后直接访问 VSI,那么可以选择 创建 SSH 密钥 并将 ssh_keyname 设置为 VPC SSH 密钥的名称。

  1. 转至 Schematics 工作空间的 设置 选项卡,单击 step2_create_vpc 的操作菜单,取消选中 使用缺省值,将覆盖值更改为 true保存 设置。

  2. 单击 应用套餐 以供应 VPC 资源。

    供应 VPC 资源时涉及多个 Terraform 模块。 为了更好地理解,请检查 main.tf 文件。

  3. 通过单击 显示更多来关注状态日志。 应用成功后,您应该会看到供应了以下资源:

    • VPC

    • 两个子网 (每个专区一个子网)

    • 具有 安全组 的公共负载均衡器,可将流量驱动到前端应用程序

    • 具有安全组的专用负载均衡器,用于将请求从前端驱动到后端

    • 实例模板和实例组,用于供应和缩放实例

    • 最初,两个 VSI (一个前端实例和一个后端实例) 连接了各自的安全组

      前端实例运行 Nginx 服务器以提供 PHP Web 应用程序,该应用程序与后端通信以存储和检索数据。 后端实例使用 IBM Cloud Databases for PostgreSQL 和 IBM Cloud Object Storage的 GraphQL API 包装器运行 Node.js 应用程序。

  4. 从日志输出 复制 公共负载均衡器主机名,并通过在浏览器中添加前缀 http:// 来粘贴该主机名,以查看前端应用程序。 如下图所示,输入余额 e.g.,10,然后单击 提交 以查看为请求提供服务的 VSI 的详细信息。

    查看应用程序
    查看应用程序

    要检查供应的 VPC 资源,可以将 VPC UICloud Shellibmcloud is 命令配合使用。

在下一部分中,您将选择缩放方法 (静态或动态) 并创建缩放策略。

增加实例上的负载以检查缩放

在此部分中,您将开始使用初始设置为 静态的缩放方法来缩放实例。 然后,通过设置实例管理器和实例组管理器策略,使用 动态 缩放来缩放实例。 根据您定义的目标利用率指标,实例组可以动态添加或除去实例以实现指定的实例可用性。

手动缩放

  1. 要检查 静态 缩放方法,请浏览到 Schematics 工作空间的 设置 选项卡,以查看 step3_is_dynamic 变量是否设置为 false
  2. step3_instance_count 变量更新为 2保存 设置。
  3. 应用计划以查看供应的额外两个实例 (一个前端 VSI 和一个后端 VSI)。
  4. 在前端 实例组成员资格 选项卡下,您现在应该会看到 2 实例。
  5. 浏览至显示前端应用程序的浏览器,然后单击 刷新 按钮或多次 提交 新的平衡,以查看前端 VSI 和后端 VSI 为请求提供服务的详细信息。 您应该会看到四个 VSI 中的两个为您的请求提供服务。
  6. 在移至下一步之前,请将 step3_instance_count 变量从 2 更新为 1,并 保存 设置。

您可以稍后在教程中检查日志并监视负载均衡器。

自动缩放

  1. 要切换到 动态 缩放方法,请将 step3_is_dynamic 变量设置为 true保存 设置并 应用 计划。 此设置将实例组管理器和实例组管理器策略添加到现有实例组,从而将实例组缩放方法从 static 切换到 dynamic

    缩放实例
    缩放实例

  2. 要检查自动缩放功能,可以对应用程序使用负载生成器。 以下 shell 脚本模拟 90000 个请求的基本负载,最多并行 300 个请求。

    1. 打开本地终端。

    2. 为上述步骤中的公共负载平衡器 URL 创建一个 shell 变量,并附加 /v1/controller/balance.php

      export APPURL=http://<load-balancer>/v1/controller/balance.php
      
    3. 运行以下脚本以生成一些装入。 您可以重复此操作以创建更多流量。 该 [1-1000] 要求每次curl调用都进行相同数量的GET。 --retry 将捕捉 seq 命令中的每个数字。

      seq 1 1000 | xargs -n1 -P100  curl -s $APPURL/"[1-1000]" -o /dev/null --retry
      
  3. 实例组成员资格 选项卡下,您应该会看到正在供应新实例。

    当最大成员资格计数设置为 5 时,您最多应该会看到 5 个实例正在进行装入。 可以在实例组的 Overview 选项卡下检查最小和最大实例组大小。

  4. 浏览到浏览器,其中显示前端应用程序并多次 提交 平衡,以查看前端 VSI 和后端 VSI 为请求提供服务的详细信息。

    等待实例缩放,因为聚集时间段设置为 90 seconds,冷却时间段设置为 120 seconds

  5. 请等待实例扩展至 1,然后再移至下一步。

调度的操作 (可选)

在此部分中,您将使用 VPC 的调度缩放来调度根据每日,间歇或季节性需求自动添加或除去实例组容量的操作。 您可以创建多个调度操作,这些操作可按月,按周,按日,按小时甚至按设定的分钟数来扩展容量。 此部分是可选的,不需要完成本教程的其余部分。

  1. 要创建一次性调度操作,请将 step3_is_scheduled 变量设置为 true保存 设置并 应用 计划。
  2. 在实例组的 已调度操作 选项卡下检查已调度操作的状态。 Terraform 模板将在应用计划后的 5 分钟内调度操作。 当操作状态更改为 completed 时,实例组大小将设置为最少 2 个实例,最多 5 个实例。 您应该会在实例组的 成员资格 选项卡下看到 2 实例。
  3. 单击几次 生成装入 以生成更多流量,以查看实例大小达到最大 5

监视 Load Balancer for VPC 度量

负载均衡器会计算度量值,并将这些度量值发送到监视实例,这反映了不同类型的使用和流量。 您可以从 IBM Cloud Monitoring 仪表板对度量进行可视化和分析。

  1. 您可以从“VPC 的负载均衡器”页面监视负载均衡器,
    1. 点击负载平衡器的名称
    2. 在负载均衡器的 Monitoring preview 磁贴下,单击 启动监视
  2. 或者,您还可以通过浏览至“可观察性”页面并单击左侧窗格上的 监视 来监视负载均衡器
    1. 点击实例
    2. 单击标记为 Platform metrics 的实例旁边的 打开仪表板
    3. 单击左侧边栏上的 仪表板 以打开“IBM Load Balancer for VPC 监视度量”仪表板。
    4. 在“仪表板”模板下,展开 IBM > Load Balancer for VPC Monitoring Metrics。 缺省仪表板不可编辑
  3. 请记住针对应用程序生成负载。

检查日志

VPC 服务在其可用的区域中生成平台日志。 平台日志是IBM Cloud中启用日志功能的服务和平台暴露的日志。 有关更多信息,请参阅配置 IBM Cloud平台日志

  1. 导航至 Observability 页面,单击左窗格中的日志 > 实例
  2. 单击窗格顶部的云日志
  3. 单击先前配置的实例旁边的“打开仪表板” 以捕获日志。
  4. 单击左侧工具选择器上的探索日志 > 日志
  5. 在搜索栏中粘贴负载平衡器 CRN,即可查看日志。

有关检查其他 VPC 资源的日志,请参阅 VPC 日志记录

设置专用主机并使用加密数据卷供应 VSI

供应专用主机将产生成本。 使用“成本估算器”根据您的预计使用量生成成本估算。

在本部分中,您将在组中创建专用主机,并使用加密数据卷供应实例。

创建专用主机的原因是要创建单租户计算节点,而该节点不受组织外部用户的限制。 在该专用空间内,您可以根据需要创建虚拟服务器实例。 此外,您可以创建包含用于特定用途的专用主机的专用主机组。 由于专用主机是单租户空间,因此只有帐户中具有所需许可权的用户才能在主机上创建实例。

  1. 浏览至 Schematics 工作空间的 设置 选项卡,将 step4_create_dedicated 变量更新为 true保存 设置。

  2. 单击 应用套餐 以供应以下资源:

    • 专用主机组
    • 专用主机
    • 具有加密数据卷 (使用 IBM Key Protect for IBM Cloud进行加密) 并连接了安全组的 VSI。

    添加专用主机
    添加专用主机

  3. 从日志输出中,复制 实例 IP 地址并启动 Cloud Shell,以通过将占位符 <IP_ADDRESS> 替换为实例 IP 地址来运行以下命令

    export INSTANCE_IP=<IP_ADDRESS>
    

    通常,您不会为实例设置公共 IP (浮动 IP)。 在这种情况下,会将浮动 IP 设置为允许对实例上部署的应用程序执行 curl 操作。

  4. 发出以下 curl 命令来查询数据库。 在实例上运行的应用程序将通过专用端点从 Databases for PostgreSQL 读取内容。 这些数据与前端应用程序中提供的数据相同。

    curl \
    -s -X POST \
    -H "Content-Type: application/json" \
    --data '{ "query": "query read_database { read_database { id balance transactiontime } }" }' \
    http://$INSTANCE_IP/api/bank
    
  5. 发出以下 curl 命令以查询 COS 存储区。 在实例上运行的应用程序将从 Object Storage 中读取内容,并以 JSON 格式返回结果。 存储在 COS 中的数据仅可用于从专用主机上的实例运行的应用程序。

    curl \
    -s -X POST \
    -H "Content-Type: application/json" \
    --data '{ "query": "query read_items { read_items { key size modified } }" }' \
    http://$INSTANCE_IP/api/bank
    
  6. 一次性发出以下 curl 命令以查询数据库和 COS 存储区。 在实例上运行的应用程序将从 Databases for PostgreSQL 和 Object Storage 中读取内容,并以 JSON 格式返回结果。

    curl \
    -s -X POST \
    -H "Content-Type: application/json" \
    --data '{ "query": "query read_database_and_items { read_database { id balance transactiontime } read_items { key size modified } }" }' \
    http://$INSTANCE_IP/api/bank
    

调整 VSI 大小并扩展专用主机上的连接块存储卷

如果您已观察到在专用主机上供应的实例的概要文件,那么会将其设置为 cx2-2x4,其中 c 表示具有 2 vCPUs 和 4 GiB RAM 的 Compute 系列 (类别)。 在本节中,您将把配置文件更新为 cx2-8x16 8 vCPUs, 16 GiB 内存,从而调整实例的大小。

在此部分中,您还会将连接到 VSI 的块存储卷从 100 GB 扩展至 250 GB。 要了解所选卷概要文件的最大容量,请选中 扩展块存储卷容量

调整 VSI 的大小

  1. 要调整 VSI 的大小,请浏览到 Schematics 工作空间的 设置 选项卡,将 step5_resize_dedicated_instance 变量更新为 true保存 设置。

    只能将虚拟服务器调整为受托管实例的专用主机支持的概要文件。 例如,使用来自 Compute 系列的概要文件供应的虚拟服务器可以将大小调整为同样属于 Compute 系列的其他概要文件。 有关概要文件的更多信息,请参阅 实例概要文件

  2. 应用计划 以将实例大小从 2 VCPUs | 4 GiB RAM 调整为 8 VCPUs | 16 GiB RAM

  3. 您可以通过启动 Cloud Shell 来检查实例的概要文件,将区域更改为使用 ibmcloud target -r us-south 命令供应 VPC 的区域,然后运行 ibmcloud is instances 命令,或者通过单击专用实例名称从 VPC 的虚拟服务器实例 UI 执行此操作。

扩展块存储卷容量

  1. 要扩展附加块存储卷的容量,请浏览至 Schematics 工作空间的 设置 选项卡,将 step5_resize_dedicated_instance_volume 变量更新为 true保存 设置。
  2. 应用套餐 以将块存储卷容量从 100 GB 增加到 250 GB
  3. 您可以通过单击专用实例名称从 VPC 的虚拟服务器实例 UI 检查 Data volume 的大小。

后续步骤?

通过配置 SSL 终止,粘性会话和端到端加密来扩展方案。 有关更多信息,请参阅此 博客帖子

除去资源

要除去 Schematics 工作空间及其资源,请执行以下步骤:

  1. 浏览至 Schematics 工作空间并选择工作空间。
  2. 单击 操作 ... 下拉列表,然后单击 销毁资源 以清除通过 Schematics供应的所有资源。
  3. 单击 操作 ... 下拉列表,然后单击 删除工作空间 以删除工作空间。

根据资源的不同,可能不会立即将其删除,但会保留 (缺省情况下为 7 天)。 您可以通过永久删除该资源或在保留期内将其复原来回收该资源。 请参阅本文档,以了解如何 使用资源回收