本文是更广泛系列的一部分,当你在 Azure 中构建应用程序基础结构时,这些系列向你提供设计注意事项和准则。 用户可以查看系列中的其他主题。 尽管用户可以在 Azure 中快速地构建出开发/测试环境,但在实现生产就绪、高度可用且安全的环境时,有一些其他注意事项。

本文逐步讲述如何构建示例应用程序基础结构。 我们详细介绍如何设计简单在线商店的基础结构,此在线商店可将关于命名约定、可用性集、虚拟网络及负载均衡器的所有准则和决策聚集在一起;以及如何实际部署你的虚拟机 (VM)。

示例工作负荷

Adventure Works Cycles 想要在 Azure 中生成一个在线商店应用程序,该应用程序包含:

  • 位于 Web 层中、用于运行客户端前端的两个 IIS 服务器
  • 位于应用程序层中、用于处理数据和订单的两个 IIS 服务器
  • 位于数据库层中、用于存储产品数据和订单、具有 AlwaysOn 可用性组的两个 Microsoft SQL Server 实例(两个 SQL Server 和一个多数节点见证)
  • 位于身份验证层中、用于客户帐户和供应商的两个 Active Directory 域控制器
  • 所有服务器皆位于两个子网中:
    • Web 服务器位于前端子网中
    • 应用程序服务器、SQL 群集和域控制器位于后端子网中

当客户浏览在线商店时,传入的安全 Web 流量必须在 Web 服务器之间进行负载均衡。 来自 Web 服务器的 HTTP 请求形式的订单处理流量必须在应用程序服务器之间进行负载均衡。 此外,基础结构必须设计为具有高可用性。

生成的设计必须引入:

  • Azure 订阅和帐户
  • 单个资源组
  • Azure 托管磁盘
  • 包含两个子网的虚拟网络
  • 具有类似角色的 VM 的可用性集
  • 虚拟机

以上各项都会遵循以下命名约定:

  • Adventure Works Cycles 使用 [IT 工作负荷]-[位置]-[Azure 资源] 作为前缀

    • 在本示例中,IT 工作负荷名为 azos(Azure On-line Store,Azure 在线商店),位置为 che(China East,中国东部)
  • 虚拟网络使用 AZOS-CHE-VN [number]
  • 可用性集使用 azos-che-as-[role]
  • 虚拟机名称使用 azos-che-vm-[vmname]

Azure 订阅和帐户

Adventure Works Cycles 使用名为 Adventure Works 企业订阅的企业订阅为此 IT 工作负荷提供计费。

存储

Adventure Works Cycles 确定其应使用 Azure 托管磁盘。 创建 VM 时,会使用两种存储可用的存储层:

  • 标准存储用于 Web 服务器、应用程序服务器和域控制器及其数据磁盘。
  • 高级存储用于 SQL Server VM 及其数据磁盘。

虚拟网络和子网

由于虚拟网络不需要持续连接到 Adventure Work Cycles 本地网络,因此,他们决定选择仅限云的虚拟网络。

他们通过 Azure 门户使用以下设置创建了仅限云的虚拟网络:

  • 名称:AZOS-CHE-VN01
  • 位置:中国东部
  • 虚拟网络地址空间:10.0.0.0/8
  • 第一个子网:
    • 名称:FrontEnd
    • 地址空间:10.0.1.0/24
  • 第二个子网:
    • 名称:BackEnd
    • 地址空间:10.0.2.0/24

可用性集

为了维护其在线商店的所有四个层的高可用性,Adventure Works Cycles 决定使用四个可用性集:

  • azos-che-as-web 用于 Web 服务器
  • azos-che-as-app 用于应用程序服务器
  • azos-che-as-sql 用于 SQL 服务器
  • azos-che-as-dc 用于域控制器

虚拟机

Adventure Works Cycles 决定为其 Azure VM 使用以下名称:

  • azos-che-vm-web01 用于第一个 Web 服务器
  • azos-che-vm-web02 用于第二个 Web 服务器
  • azos-che-vm-app01 用于第一个应用程序服务器
  • azos-che-vm-app02 用于第二个应用程序服务器
  • azos-che-vm-sql01 用于群集中的第一个 SQL Server
  • azos-che-vm-sql02 用于群集中的第二个 SQL Server
  • azos-che-vm-dc01 用于第一个域控制器
  • azos-che-vm-dc02 用于第二个域控制器

这是生成的配置。

此配置引入以下项:

  • 包含两个子网(FrontEnd 和 BackEnd)的仅限云虚拟网络
  • 同时具有标准磁盘和高级磁盘的 Azure 托管磁盘
  • 四个可用性集,每个在线商店层一个
  • 四个层中的虚拟机
  • 用于从 Internet 到 Web 服务器的基于 HTTPS 的 Web 流量的外部负载均衡集
  • 用于从 Web 服务器到应用程序服务器的未加密 Web 流量的内部负载均衡集
  • 单个资源组      立即访问http://market.azure.cn

适用于 Windows VM 的 Azure 示例基础结构演练的更多相关文章

  1. Azure 元数据服务:适用于 Windows VM 的计划事件(预览)

    计划事件是 Azure 元数据服务中的其中一个子服务. 它负责显示有关即将发生的事件(例如,重新启动)的信息,使应用程序可以为其做准备并限制中断. 它可用于所有 Azure 虚拟机类型(包括 PaaS ...

  2. 使用 Azure PowerShell 模块创建和管理 Windows VM

    Azure 虚拟机提供完全可配置的灵活计算环境. 本教程介绍 Azure 虚拟机的基本部署项目,例如选择 VM 大小.选择 VM 映像和部署 VM. 你将学习如何执行以下操作: 创建并连接到 VM 选 ...

  3. 微软开放技术开发了适用于 Windows Azure 移动服务的开源 Android SDK

     发布于 2014-02-10 作者 陈 忠岳 为进一步实现连接微软与非微软技术的目标,微软开放技术有限公司开发了适用于 Windows Azure 移动服务的 Android SDK,由Scot ...

  4. 如何使用 Azure PowerShell 在 Azure Marketplace 中查找 Windows VM 映像

    本主题介绍如何使用 Azure PowerShell 在 Azure Marketplace 中查找 VM 映像. 创建 Windows VM 时使用此信息来指定 Marketplace 映像. 确保 ...

  5. 将 Windows VM 移到其他 Azure 订阅或资源组

    本文逐步说明如何在资源组或订阅之间移动 Windows VM. 如果最初在个人订阅中创建了 VM,现在想要将其移到公司的订阅以继续工作,则在订阅之间移动 VM 可能很方便. Important 不可在 ...

  6. 关于 Azure Windows VM 的磁盘和 VHD

    就像其他任何计算机一样,Azure 中的虚拟机将磁盘用作存储操作系统.应用程序和数据的位置. 所有 Azure 虚拟机都至少有两个磁盘,即 Windows 操作系统磁盘和临时磁盘. 操作系统磁盘基于映 ...

  7. 如何在 Azure 门户中将托管数据磁盘附加到 Windows VM

    本文介绍了如何通过 Azure 门户将新的托管数据磁盘附加到 Windows 虚拟机. 在开始之前,请查看以下提示: 虚拟机的大小决定了可以附加多少个磁盘. 有关详细信息,请参阅虚拟机大小. 对于新磁 ...

  8. 如何使用 Jenkins、GitHub 和 Docker 在 Azure 中的 Linux VM 上创建开发基础结构

    若要将应用程序开发的生成和测试阶段自动化,可以使用持续集成和部署 (CI/CD) 管道. 本教程介绍如何在 Azure VM 上创建 CI/CD 管道,包括如何: 创建 Jenkins VM 安装并配 ...

  9. 排查在 Azure 中新建 Windows VM 时遇到的部署问题

    尝试创建新的 Azure 虚拟机 (VM) 时,遇到的常见错误是预配失败或分配失败. 当由于准备步骤不当,或者在从门户捕获映像期间选择了错误的设置而导致 OS 映像无法加载时,将发生预配失败. 当群集 ...

随机推荐

  1. 面试题-----按位翻转32位unsigned

    // test.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include < ...

  2. python 详解正则表达式的使用(re模块)

    一,什么是正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件 ...

  3. list双向链表容器(常用的方法总结)

    特别注意,由于list对象的结点并不要求在一段连续的内存中,所以,对于迭代器,只能通过++或者--的操作将迭代器移动到后继或者前驱结点元素处.而不能对迭代器进行+n或者-n的操作,这点与vector等 ...

  4. Netty 核心组件 EventLoop 源码解析

    前言 在前文 Netty 启动过程源码分析 (本文超长慎读)(基于4.1.23) 中,我们分析了整个服务器端的启动过程.在那篇文章中,我们重点关注了启动过程,而在启动过程中对核心组件并没有进行详细介绍 ...

  5. 【转】GDI+中发生一般性错误的解决办法

    今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现“GDI+中发生一般性错误”的异常. 于是开始 ...

  6. AssemblyInfo.cs 详解

    前言 ? .net工程(包括Web和WinForm)的Properties文件夹下自动生成一个名为AssemblyInfo.cs的文件,一般情况下我们很少直接改动该文件.但我们实际上通过另一个形式操作 ...

  7. Java多线程--JDK并发包(1)

    Java多线程--JDK并发包(1) 之前介绍了synchronized关键字,它决定了额一个线程是否可以进入临界区:还有Object类的wait()和notify()方法,起到线程等待和唤醒作用.s ...

  8. 中国网建SMS短信接口调用(java发送和接收手机短信)

    1.先注册账号,一定要填写好签名格式.不填会返回-51错误.   代码信息接口详细==>http://sms.webchinese.cn/api.shtml   . 2.测试代码 package ...

  9. 开放本地MYSQL服务器端口

    有时候别人需要连接你的数据库,这个时候你就要开放数据库的端口,让别的主机可以连接上,步骤如下: 1.打开防火墙,新建入站规则,开放MySQL3306端口 2.执行以下两个命令: (1)如果你想允许用户 ...

  10. oracle逐步学习总结之oracle数字函数和日期函数(基础四)

    原创作品,转自请注明出处:https://www.cnblogs.com/sunshine5683/p/10140716.html 继上篇总结,继续进行总结: 以下下数字函数: 1.abs(n):返回 ...