你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:在 Linux 上创建虚拟机规模集并部署高度可用的应用

适用于:✔️ Linux VM ✔️ 统一规模集

使用具有灵活业务流程的虚拟机规模集可以创建并管理一组负载均衡的 VM。 可以根据需求或定义的计划自动增减 VM 实例的数目。

在本教程中,请在 Azure 中部署虚拟机规模集,并了解如何执行以下操作:

  • 创建资源组。
  • 创建具有负载均衡器的灵活规模集。
  • 将 nginx 添加到规模集实例。
  • 打开 HTTP 流量的对应端口 80。
  • 测试规模集。

规模集概述

规模集具有下述主要优势:

  • 易于创建和管理多个 VM
  • 将 VM 分散到多个容错域,从而提供高可用性和应用程序复原能力
  • 允许应用程序随资源需求变化自动进行缩放
  • 大规模工作

借助灵活业务流程,Azure 可在整个 Azure VM 生态系统中提供统一的体验。 灵活业务流程将 VM 分散到某个地理区域或可用性区域的多个容错域中,从而提供高可用性保证(最多支持 1000 个 VM)。 这样,你便可以横向扩展应用程序,同时保持对容错域的隔离,这对于运行基于仲裁的工作负载或有状态工作负载而言至关重要,包括:

  • 基于仲裁的工作负载
  • 开源数据库
  • 有状态应用程序
  • 需要高可用性和较大规模的服务
  • 需要混合虚拟机类型或同时利用现成 VM 和按需 VM 的服务
  • 现有的可用性集应用程序

业务流程模式中详细了解统一规模集与灵活规模集之间的差异。

创建规模集

使用 Azure 门户创建灵活规模集。

  1. 打开 Azure 门户
  2. 搜索并选择“虚拟机规模集”。
  3. 在“虚拟机规模集”页上选择“创建”。 此时会打开“创建虚拟机规模集”。
  4. 对于“订阅”,请选择要使用的订阅。
  5. 对于“资源组”,请选择“新建”,键入 myVMSSRG 作为名称,然后选择“确定” 。 项目详细信息。
  6. 对于“虚拟机规模集名称”,请键入 myVMSS。
  7. 在“区域”中,选择离你近的区域,例如“美国东部”。 名称和区域。
  8. 对于此示例,请将“可用性区域”留空。
  9. 对于“业务流程模式”,请选择“灵活” 。
  10. 对于“映像”,请选择“Ubuntu 18.04 LTS”。
  11. 对于“大小”,请保留默认值或选择一个大小,例如 Standard_E2s_V3。
  12. 在“用户名”处键入 azureuser。
  13. 对于“SSH 公钥源”,请保留默认的“生成新密钥对”,然后为“密钥对名称”键入 myKey 。 管理员帐户部分的屏幕截图,可以在其中选择身份验证类型并提供管理员凭据。
  14. 在“网络”选项卡上,在“负载均衡”下选择“使用负载均衡器” 。
  15. 对于“负载均衡选项”,请将“Azure 负载均衡器”保留为默认值 。
  16. 对于“选择负载均衡器”,请选择“新建” 。 负载平衡器设置。
  17. 在“创建负载均衡器”页面,键入负载均衡器的名称和公共 IP 地址名称 。
  18. 对于“域名标签”,请键入一个名称以用作域名的前缀。 此名称必须唯一。
  19. 完成操作后,选择“创建”。 创建负载均衡器。
  20. 在“网络”选项卡上,保留后端池的默认名称。
  21. 在“缩放”选项卡上,保留默认实例计数 2,或添加你自己的值。 这是将创建的 VM 数,因此,如果更改此值,应注意该订阅的成本和限制。
  22. 将“缩放策略”设置为“手动”。 缩放策略设置。
  23. 选择“高级”选项卡。
  24. 在“自定义数据和云初始化”下,复制以下内容并将其粘贴到“自定义数据”文本框 :
    #cloud-config
    package_upgrade: true
    packages:
      - nginx
      - nodejs
      - npm
    write_files:
      - owner: www-data:www-data
      - path: /etc/nginx/sites-available/default
        content: |
          server {
            listen 80;
            location / {
              proxy_pass http://localhost:3000;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection keep-alive;
              proxy_set_header Host $host;
              proxy_cache_bypass $http_upgrade;
            }
          }
      - owner: azureuser:azureuser
      - path: /home/azureuser/myapp/index.js
        content: |
          var express = require('express')
          var app = express()
          var os = require('os');
          app.get('/', function (req, res) {
            res.send('Hello World from host ' + os.hostname() + '!')
          })
          app.listen(3000, function () {
            console.log('Hello world app listening on port 3000!')
          })
    runcmd:
      - service nginx restart
      - cd "/home/azureuser/myapp"
      - npm init
      - npm install express -y
      - nodejs index.js
    
  25. 完成操作后,选择“查看 + 创建”。
  26. 通过验证后,可选择页面底部的“创建”来部署规模集。
  27. “生成新密钥对”窗口打开时,选择“下载私钥并创建资源” 。 下载的密钥文件将名为“myKey.pem”。 请确保知道 .pem 文件的下载位置,下一步需要用到该文件的路径。
  28. 部署完成后,选择“转到资源”以查看规模集。

查看规模集中的 VM

在规模集页面上,从左侧菜单中选择“实例”。

你将看到属于规模集的 VM 列表。 此列表包括:

  • VM 的名称
  • VM 使用的计算机名称。
  • VM 的当前状态,例如“正在运行”。
  • VM 的预配状态,例如“已成功” 。

有关规模集实例的信息表。

打开端口 80

通过向网络安全组添加入站规则 (NSG),打开规模集上的端口 80。

  1. 在规模集页面上,从左侧菜单中选择“网络”。 随即将打开“网络”页面。
  2. 选择“添加入站端口规则”。 随即将打开“添加入站安全规则”页面。
  3. 在页面底部,选择“服务”下的 HTTP,再选择“添加”。

测试规模集

从浏览器连接到规模集以对其进行测试。

  1. 在规模集的“概述”页面,复制公共 IP 地址。
  2. 在浏览器中打开另一个选项卡并将公共 IP 地址粘贴到地址栏中。
  3. 加载页面时,记下显示的计算名称。
  4. 刷新页面,直到看到计算机名称更改。

删除规模集

完成后,应删除资源组,这样就会删除为规模集部署的所有内容。

  1. 在规模集页面上,选择“资源组”。 此时会打开包含资源组的页面。
  2. 在该页面顶部,选择“删除资源组”。
  3. 在“是否确实要删除”页面中,键入资源组的名称并选择“删除” 。

后续步骤

在本教程中,已创建虚拟机规模集。 你已了解如何执行以下操作:

  • 创建资源组。
  • 创建具有负载均衡器的灵活规模集。
  • 将 nginx 添加到规模集实例。
  • 打开 HTTP 流量的对应端口 80。
  • 测试规模集。

请继续学习下一主题,详细了解虚拟机的负载均衡概念。