注:

使用自动缩放来调整计算资源

简介

在本教程中,您将构建可根据 CPU 利用率自动扩展/收缩的负载平衡 Web 应用程序。

在本教程中,您将创建负载平衡器、计算实例、实例配置,然后配置自动缩放。然后,您将验证自动缩放功能,因为已超出 CPU 上配置的阈值。

利用自动缩放,您可以根据性能度量(例如 CPU 占用率)自动调整实例池中的计算实例数。这有助于您在高需求期间为最终用户提供一致的性能,并有助于您在低需求期间降低成本。

您可以选择一个性能度量来监视和设置性能度量触发自动缩放事件时必须达到的阈值。当系统使用量达到阈值时,自动缩放会以接近实时的方式动态分配资源。随着负载的增加,系统会自动预配实例:实例池会横向扩展。随着负载的减少,系统会自动删除实例:实例池会横向收缩。

自动缩放依赖于监视服务收集的性能指标。这些性能度量聚合为一分钟的时间段,然后计算整个实例池的平均值。当连续三个值(即连续三分钟的平均度量)达到阈值时,将触发自动缩放事件。

自动缩放事件之间的冷却期允许系统在更新后的级别稳定。冷却期从实例池达到稳定状态时开始计算。自动缩放将继续评估冷却期内的性能指标。冷却期结束时,如果需要,自动缩放会再次调整实例池的大小。

:Oracle Cloud Infrastructure (OCI) 用户界面正在更新,因此说明中的某些屏幕截图可能与实际 UI 不同

创建 VCN 和子网

设置 VCN 以将 Linux 实例连接到 Internet。您将配置创建虚拟网络所需的所有组件。

  1. 打开导航菜单。在“核心基础结构”下,转到“网络”并单击虚拟云网络

    确保在左侧的“区间”列表中选择了区间(或为您指定的区间)。

  2. 单击启动 VCN 向导

  3. 选择“具有 Internet 连接的 VCN”,然后单击启动 VCN 向导

  4. 输入以下内容(说明以斜体表示。请替换为方案的值):

    • 名称:输入云网络的名称
    • 比较:选择所需的区间
    • VCN CIDR 块: 10.0.0.0.0/16
    • 公共子网 CIDR 块: 10.0.0.0/24
    • 专用子网 CIDR 块: 10.0.1.0/24
    • DNS 解析: checked

    :公共子网和专用子网具有不同的 CIDR 块。

  5. 单击“下一步”。

    此时将显示“Create a VCN with Internet Connection(使用 Internet 连接创建 VCN)”配置对话框,确认刚输入的所有值并列出将要创建的其他组件。

  6. 单击创建以启动工作流。

    这将创建具有以下组件的 VCN:

    VCN,公共子网,专用子网,Internet 网关 (IG),NAT 网关 (NAT),服务网关 (SG)

  7. 工作流完成后,单击查看虚拟云网络,您将被定向到您创建的 VCN 的详细信息页。

创建负载平衡器和更新安全列表

  1. 打开导航菜单。在“核心基础结构”下,转到“网络”并单击负载平衡器

  2. 单击创建负载平衡器。填写对话框;

    低于添加详细信息

    • LOAD BALANCER NAME :输入负载平衡器的名称。

    • CHOOSE VISIBILITY TYPE :公共

    • 选择最大带宽:选择动态配置,然后在 Micro - 10Mbps 上选择 clikc。(此项指定负载平衡器的带宽。)

    • 虚拟云网络:选择您的虚拟云网络

    • SUBNET :选择公共子网

    单击下一步

    在“选择后端”下:

    • SPECIFY A LOAD BALANCING POLICY :加权循环
    • 添加后端:不添加任何后端。这将由实例池管理。

    根据特殊健康检查政策

    • 协议:HTTP

    • 端口: 80

    • URL PATH (URI):/

      将其他选项保留为默认设置

    Click **Next**.
    

    正在配置监听程序

    • 指定监听程序处理的流量类型:HTTP

    • SPECIFY THE PORT YOUR LISTENER MONITORS FOR INGRESS TRAFFIC:80

      将其他选项保留为默认设置

  3. 单击提交

  4. 等待负载平衡器变为活动状态,然后记下负载平衡器的公共 IP 地址。

  5. 打开导航菜单。在“核心基础结构”下,转到“网络”并单击虚拟云网络。找到您之前创建的 VCN。

  6. 单击 VCN 名称以显示“VCN 详细信息”页。

  7. 单击安全列表并找到默认安全列表。

  8. 单击 Default Security List for Your_VCN ,然后单击 Add Ingress Rules

  9. 单击 "Add Ingress Rules"。

    此时将显示添加入站规则对话框。

  10. 输入以下信息:

    • 确保未选中 "STATELESS" 标志
    • 源类型:CIDR
    • 来源 CIDR:输入 0.0.0.0/0
    • IP 协议:选择 TCP
    • 源端口范围:全部
    • 目的地端口范围:输入 80(监听程序端口)
    • 说明:允许传入 HTTP 连接

  11. 单击添加入站规则

创建实例池并配置自动缩放

创建 Web 服务器并配置实例

使用 Apache Web 服务器创建 Oracle Linux 实例,并基于 Web 服务器配置实例。这将是自动缩放配置的基础。

  1. 打开 Oracle Cloud Infrastructure 主菜单。

  2. 依次选择计算实例

  3. 从实例列表中单击创建实例

  4. 输入实例名称。

  5. 选择要在其中创建实例的分区。

  6. 在 "Configure placement and hardware" 部分中,选择以下内容:

    • 可用性域 选择要在其中创建实例的可用性域
    • 容错域可选。可以保持未选中状态
    • Image Latest Oracle Linux(默认情况下,已选择受支持的最新版本)
    • 配置 选择所需的配置
  7. 配置网络部分中,选择以下内容:

    • 网络 选择现有虚拟云网络
    • 选择具有所需 VCN 的区间中的虚拟云网络
    • 网络:选择虚拟网络云网络
    • 选择具有所需 VCN 的区间中的子网
    • 子网 选择公共子网
    • 使用网络安全组控制未检查的流量
    • 公共 IP 地址 * 分配公共 IPv4 地址
  8. 添加 SSH 密钥部分中:

    如果您没有 SSH 密钥对:

    1. 选择生成 SSH 密钥对
    2. 单击保存专用密钥,然后按照浏览器提示保存专用密钥。
    3. 单击保存公共密钥,然后按照浏览器提示保存公共密钥。

    如果您有公共密钥,可以:

    1. 选择选择公共密钥文件
    2. 将公钥文件拖放到上方或或者浏览到某个位置,找到该位置并选择文件。

    或者

    1. 选择粘贴公共密钥
    2. 将公钥值粘贴到 SSH 密钥中(可以通过单击 Anotehr 密钥来添加多个密钥)。
  9. 配置引导卷中,取消选中所有选项。

  10. 单击显示高级选项

    正在管理

    • 初始化脚本:选择粘贴 cloud-init 脚本并粘贴以下脚本。仅在首次引导时为配置实例执行 Cloud-init 脚本。
    #cloud-config
    yum_repos:
        epel-testing:
            baseurl: https://yum.oracle.com/repo/OracleLinux/OL7/developer_EPEL/$basearch/
            enabled: true
            failovermethod: priority
            gpgcheck: true
            gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
            name: EPEL ($basearch)
    
    packages:
    - httpd
    - stress
    
    runcmd:
    - [sh, -c, echo "<html>Web Server IP `hostname --ip-address`</html>" > /var/www/html/index.html]
    - [firewall-offline-cmd, --add-port=80/tcp]
    - [systemctl, start, httpd]
    - [systemctl, restart, firewalld]
    
  11. 单击创建

  12. 您将转到实例的详细信息页面。黄色正方形变为绿色后,您的实例将被预配、启动并运行。

  13. 等待实例处于正在运行状态。您可以向下滚动到工作请求以检查预配过程。

  14. 单击“实例名”。单击更多操作,然后选择创建实例配置。输入以下信息:

    • 在区间中创建:选择区间。
    • 名称:提供名称。
  15. 单击创建实例池并输入以下内容:

    • 在区间中创建:选择区间
    • 名称:提供名称。
    • COMPARTMENT_NAME 中的实例配置:如果区间与当前所选区间不同,请选择您的区间
    • 实例配置名称:它应该已填充步骤 14 中创建的实例池。
    • 实例数: 0

  16. 单击“下一步”以适应“配置轮询放置”

  17. 在“配置池放置”页上,输入以下内容:

    • 可用性域:选择要放置实例的 AD(如果在多 AD 区域中,则可以选择 AD 1)。
    • 选择虚拟云网络区间:如果与当前所选区间不同,请选择 VCN 的区间,然后选择您的 VCN。
    • COMPARTMENT_NAME 中的子网:如果与当前所选区间不同,请选择子网的区间,然后选择您的子网。
    • 附加负载平衡器:选择此选项。
    • COMPARTMENT_NAME 中的负载平衡器:如果与当前所选区间不同,请选择 LB 的区间,然后选择负载平衡器
    • 后端集:选择第一个后端集
    • 端口: 80
    • VNIC :保留默认值
  18. 单击下一步,复查信息,然后单击创建

  19. 打开导航菜单。在“核心基础结构”下,选择暂存池,然后单击实例池名称。

  20. 在“实例池详细信息”屏幕中,单击更多操作,选择创建自动缩放配置,然后输入以下内容:

    • 名称:定义名称
    • 在区间中创建:选择区间
    • COMPARTMENT_NAME 中的实例池:如果区间与当前所选区间不同,请选择您的区间,然后选择实例池(如果池不可见,请刷新浏览器并重试)

  21. 单击下一步,然后在“配置自动缩放策略”页上输入以下内容:

    • 选择基于度量的自动缩放
    • AUTOSCALING POLICY NAME :提供名称
    • 秒内冷却:300(这是缩放操作之间的最短时间段。)
    • 性能指标:CPU 利用率(这是用于触发缩放操作的指标。)
    • SCALE-OUT OPERATOR :大于 (>)
    • 阈值百分比:80
    • 要添加的实例数:1
    • SCALE-IN 运算符:小于 (<)
    • 阈值百分比:20
    • 要删除的实例数:1
    • 最小 INSTANCES 数量:1(这是池将始终具有的最小实例数量)
    • 最多实例数:2(这是池将始终具有的最大实例数)
    • 初始实例数:1(这是在实例池中最初创建的实例数)

  22. 单击下一步,复查信息,然后单击创建

测试设置

  1. 在负载平衡器详细信息中,查看负载平衡器的公共 IP,并在 Web 浏览器中打开。

  2. 返回 OCI 控制台,在计算下,单击实例池,然后单击您的池名称。单击创建的实例,您应该会看到已创建的计算实例。单击计算实例名称。

  3. 在您保存密钥的终端中,ssh 到实例

    ssh -i <private_key> opc@<PUBLIC_IP_OF_COMPUTE>
    
  4. 现在启动 CPU 压力,输入命令:

    sudo stress --cpu 4 --timeout 350
    

    产生 4 个工作人员,但超时为 350 秒。

  5. 切换回 OCI 控制台并导航到“实例池详细信息”页。向下滚动到 Metric 屏幕,您应在一分钟左右后看到 CPU 峰值。

  6. 在大约 3-5 分钟(创建自动缩放配置时配置时间)内,池的状态应更改为缩放,并且应启动第二个计算实例。单击 ** 工作请求,您将看到将创建新实例的工作请求。

    这是因为满足了 CPU 利用率 > 10 的标准。

  7. 当第二个实例已启动且正在运行并且实例池状态为“正在运行”时,切换到 Web 浏览器并多次刷新页面,观察两个 Web 服务器之间的负载平衡器流量平衡情况。

  8. 切换回终端,如果压力工具仍在运行,请单击 Ctrl + C 停止脚本。

  9. 切换回 OCI 控制台窗口并导航到计算实例详细信息页面。验证 CPU 占用率是否在一分钟后下降。

  10. 导航到实例池详细信息页,3-4 分钟后,实例池状态将更改为缩放。将删除其他计算实例。

    这是因为满足 CPU 占用率 < 5 的标准。

删除资源

  1. 切换到 OCI 控制台窗口。

  2. 打开导航菜单。在“核心基础结构”下,选择入站池。在最右侧,单击三个点 ,然后选择终止。提示时确认。

  3. 打开导航菜单。在“核心基础结构”下,选择插入配置。在最右侧,单击三个点 并选择终止

  4. 打开导航菜单。在“核心基础结构”下,选择入站。在最右侧,单击三个点 ,然后选择终止。选中 Permanently delete the attach boot volume 框并单击 Terminate Instance

  5. 打开导航菜单。在“联网”下,选择负载平衡器。在最右侧,单击三个点 ,然后选择终止。提示时确认。

  6. 打开导航菜单。在 "Networking"(网络)下,选择 Virtual Cloud Networks 。在最右侧,单击三个点 ,然后选择终止。提示时确认。

  7. 打开导航菜单。在“核心基础结构”下,选择入站池。在最右侧,单击三个点 ,然后选择终止。列出完资源后,单击全部终止

  8. 找到第一个计算实例,单击“操作”图标,然后单击终止

  9. 确保已选中“永久删除附加的引导卷”,然后单击“Terminate Instance(终止实例)”。等待实例完全终止。

  10. 在“实例池详细信息”页的 OCI 控制台窗口中,单击操作下的终止。在弹出对话框中提供实例池名称,然后单击终止。这将删除池以及计算实例和自动缩放配置。

  11. 导航到计算下的实例配置。对于实例配置,单击三个垂直点下的删除

  12. 导航到计算下的 AutoScaling 配置。对于实例配置,单击删除

  13. 从 OCI 服务菜单中,单击“网络”下的负载平衡器,找到负载平衡器并单击三个垂直点下的终止

  14. 从 OCI 服务菜单中,单击“网络”下的虚拟云网络,找到 VCN,单击“操作”图标,然后单击终止。在“确认”窗口中单击全部删除。删除 VCN 后,单击关闭

恭喜!您已成功完成实验室。

致谢

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或在 Oracle Learning YouTube 频道上访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心