【问题标题】:Migration websites to Azure platform [closed]将网站迁移到 Azure 平台 [关闭]
【发布时间】:2018-07-18 17:10:05
【问题描述】:

我们有几个网站托管在具有以下配置的专用服务器上

  • 基于 Windows 操作系统的专用服务器
  • 用于数据库的 MS SQL SERVER Windows 2012
  • IIS 7.5+
  • 和其他管理网站的软件如plesk
  • 我们已经开发了带有框架 4.0 或 4.5 的 asp.net web-form 网站(大约 10 个网站)
  • 我们也有少数基于 asp.net MVC 的网站,框架 4.5(大约 5 个网站)
  • 我们使用 InProc 默认会话状态进行会话
  • 除此之外,我们还安装了其他安全软件。
  • 我们还有运行相同服务器的移动应用程序 API,并且使用相同的应用程序向操作系统和 Android 设备发送推送通知

现在我几乎没有关于迁移到 Azure 环境的问题。

首先,我最关心的是会话状态,我想迁移到 Azure 而不对代码进行任何更改,除了更改 web.config 这可能吗?

第二我们使用 MS SQL SERVER 2012 作为数据库,在 azure 上我们必须使用 Azure SQL 数据库,我认为这与 MS SQL SERVER 不同,我可以使用 Azure SQL 数据库还是我应该仍然使用到 MS SQL SERVER,因为我有应用程序在此运行并迁移到 Azure 数据库可能会产生问题?

第三,假设我选择web+Mobile--> App Service Standard Package(最多附带10个实例)这些实例是什么?单个会话是否总是连接到同一个实例?

第四:我有大约 20 个数据库,其中一个大约 6GB,其他数据库大约 200MB-700MB,如果我使用 Azure SQL 数据库,我应该为数据库使用哪个服务

  • 单数据库还是弹性数据库?
  • 弹性模式下可以创建多个数据库吗?
  • 假设我选择“100 个 eDTU:每个池包含 10 GB 存储,每个池 200 个 DB,0.20 美元/小时”,我将总共有 10 GB 空间 弹性池中的数据库以及每个池是什么以及将有多少个池 我选择了这个选项。

或虚拟机上的 MS SQL SERVER 是更好的选择,因为我可以运行基于 SQL Server 的会话

第五:磁盘空间,假设我选择应用服务“S2: 2 Cores(s), 3.5 GB RAM, 50 GB Storage, $0.200”,是 50GB 磁盘空间,包括操作系统或空间分配给我们上传的文件?

第六:我们的一些应用程序用于向 iOS 和 Android 设备发送推送通知,我不确定它们是否可以在 Azure 环境中工作,因为它们需要打开某些端口以及某种端口要在服务器上安装的证书。

我问了太多问题,因为我没有从 MS 聊天中得到明确的信息,因为他们只是传递了有时可能会令人困惑的链接,我希望我能在这里得到澄清

【问题讨论】:

  • 我建议您将这个问题分成 6 个单独的问题。恕我直言,要一个人一次性回答所有问题真的很麻烦。
  • @GauravMantri,我知道问题太多了,我这样做是为了让人们了解全貌。我不介意用户是否根据专业知识回复问题的特定部分

标签: azure azure-sql-database azure-web-app-service azure-mobile-services azure-virtual-machine


【解决方案1】:

问:首先,我最关心的是会话状态,我想迁移到 Azure,除了更改 web.config 之外不做任何更改,这可能吗?

如果您关心的问题之一是代码重构,那么您应该选择的模型是基础架构即服务。在此模型中,无需更改代码,因为 Azure 上的基础架构可以类似于您在其中配置虚拟机以运行 Windows Server、SQL Server 和 IIS 的本地。软件版本由您选择,没有限制。只要在购买新软件许可证时,该软件版本在 Microsoft 产品生命周期中仍受支持。

如果您希望对 Web 应用程序进行现代化改造,Azure 应用服务可能是一个不错的选择。 Azure 应用服务可以运行针对 .NET 4.0 框架编译的代码。 InProc 会话 状态在 Azure 应用服务中得不到保证,因此如果使用 Azure 应用服务,您需要寻找替代方案,例如 Azure Redis Cache

问:其次,我们使用 MS SQL SERVER 2012 作为数据库,在 azure 上我们必须使用 Azure SQL 数据库,我认为这与 MS SQL SERVER 不同,我可以使用 Azure SQL 数据库还是我应该仍然使用 MS SQL SERVER,因为我在其上运行应用程序并迁移到 Azure 数据库可能会产生问题?

如果没有影响分析以及您的数据模型有多复杂,很难说 Azure SQL 数据库是否与您的数据库兼容。幸运的是,Microsoft 提供了一个名为 Data Migration Assistant (DAM) 的工具,可帮助您对 Azure SQL 数据库执行数据库兼容性分析。此链接为您提供有关 DAM (https://docs.microsoft.com/en-us/azure/sql-database/sql-database-cloud-migrate) 的更多详细信息。从 SQL Server 迁移到 Azure SQL 数据库将在高可用性、灾难恢复和可扩展性方面获得更多好处。服务器管理和操作系统补丁的管理工作显着减少。使用 Azure VM 中的 SQL Server,迁移成本要低得多,因为您只需迁移和提升(配置 VM、执行数据库分离/附加或其他备份/恢复方法)。

问:第三,假设我选择web+Mobile--> App Service Standard Package(最多附带10个实例)这些实例是什么?单个会话是否总是连接到同一个实例?

不,会话不会在保证模式下保持。当您选择 Azure 应用服务时,您的 Web 应用程序将在运行 Windows Server 和 IIS 的虚拟化服务器上​​运行。术语“实例”是服务器实例。 Azure 应用服务通过跨多个实例分配计算资源来帮助你处理扩展,以确保你的应用程序不会因内存和资源不足而崩溃。首次配置 Web 应用时的默认值为 1,但实例数是可配置的。

问:第四:我有大约 20 个数据库,其中一个大约 6GB,其他数据库大约 200MB-700MB,如果我使用 Azure SQL 数据库,我应该为数据库使用哪个服务 单一数据库还是弹性数据库? 我可以在弹性模式下创建多个数据库吗? 假设我选择“100 个 eDTU:每个池包含 10 GB 存储,每个池 200 个 DB,0.20 美元/小时”,我将有 10 GB 空间用于弹性池中的所有数据库,每个池是什么,我将有多少个池进入这个选项。 或虚拟机上的 MS SQL SERVER 是更好的选择,因为我可以运行基于 SQL Server 的会话

选择单一数据库还是弹性数据库取决于数据库的性能和峰值负载。单一数据库用于独立数据库,当您可以指定 DTU(数据事务单元)以获得可预测的性能时。而弹性池最适合管理池中的一组数据库。弹性池是不可预测的性能和使用情况的选择。

在您的情况下,我建议使用弹性池来挽救性能。弹性池允许您为池设置 eDTU,无论池中的特定数据库需要多少 DTU。 Elastic Pool 监控并深入执行性能分析,让您深入了解每个数据库的性能。

当谈到池时,您不必担心为每个数据库分配了多少存储空间。您也不必担心可以存储在池中的数据库数量。假设您总共有 20 个数据库,那么您只需要一个池。 您需要的 eDTU 可以通过本网站http://dtucalculator.azurewebsites.net/ 计算。只需在您的 SQL Server(您的本地数据库正在运行的地方)上运行网站中的给定脚本之一以捕获性能指标,然后将 Excel 文件上传到网站。它会给你一个号码。例如,结果表明总共 20 个数据库总共需要 100 个 eDTU。然后,您只需创建一个弹性池并为该池调整 100 eDTU。但是,如果使用 Elastic Pool Basic,每个池仅给您 10 GB,这对于 120 GB (20 * 6 GB) 是不够的,那么您需要 Elastic Pool Standard for 100 eDTU 才能达到最大 750 GB。请注意,您可以选择 1,200 eDTU 的基本计划以实现最大 156 GB。但是,从不推荐这种方式,因为存储空间比 eDTU 便宜得多。

简而言之,根据您上面的草稿信息,我建议选择具有 100 eDTU 的弹性池标准计划。如果不能满足总共 20 个数据库的性能,可以增加 eDTU 的数量。调整 eDTU 编号时无需数据库停机。

仅创建 1 个池并不是我的建议。这取决于您的数据库工作负载。例如,在 20 个数据库中,有 5 个数据库对于 ERP 或关键业务系统来说是繁重的工作量,而其余的只是普通数据库。在这种情况下,您需要两个弹性池。设置了一个具有大量 eDTU 的池,而另一个池具有低数量的 eDTU。

问:第五:磁盘空间,假设我选择应用服务“S2:2 核,3.5 GB RAM,50 GB 存储,0.200 美元”,是 50 GB 磁盘空间,包括操作系统或分配给的空间我们上传的文件?

对于 Azure 应用服务,不计入操作系统。50 GB 存储空间直接分配给您的应用程序空间(用于存储图像、编译的 DLL、视频、库..)

问:第六:我们的一些应用程序用于向 iOS 和 Android 设备发送推送通知,我不确定它们是否可以在 Azure 环境中工作,因为它们需要打开某些端口以及某种证书安装在服务器上。

Azure 通知中心可以帮助您实现推送通知。 Azure Notification Hub 允许您使用各种平台的证书(例如 iOS 来管理设备。如果您熟悉 iOS,这是一个示例参考https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-ios-apple-push-notification-apns-get-started。如果您需要,Azure Notification Hub 还支持基于令牌的 APNS。

对于每个案例,请提供更多详细信息(例如您的移动场景),并尽可能提供具体问题,以便我和这里的人可以详细说明。

【讨论】:

  • 在 ARR Affinity 方面不会有问题。
  • 有了 Db 兼容性,更新连接会更好。这是参考msdn.microsoft.com/en-us/library/ee240720(v=sql.120).aspx
  • @Learning 你的存储实际上是一个文件服务器,它挂载 blob 并将它们作为网络驱动器公开给后端的工作引擎。该工作引擎将运行以确保您的应用程序始终在网络驱动器中看到“本地”文件。好吧,这将是 Azure App Service 架构如何在幕后运行的秘密的收据,我不知道。至少我们知道自动缩放是由工作人员完成的,您不必担心您的文件存储在应用程序的存储中。
  • 信任 Azure 来保护您的 Azure 应用程序部署是非常常见的误解之一。即使 Microsoft 获得了许多国际和国家范围内的安全合规性和认证,这并不意味着您受到了完全的保护。谈到 Azure 安全性,还有很多话要说,你必须关心每一个问题。例如,在 Azure 应用服务中,请注意使用具有良好证书的 HTTP 来保护 HTTP。或者在 DB 中,您需要研究动态数据屏蔽、透明数据加密。
  • 此外,您的 Web 应用程序可能还需要应用程序网关,它充当 Web 应用程序防火墙来检查传入的 HTTP 请求。您的数据库需要控制入站,以便您知道谁在内部连接到您的数据库连接字符串。好吧,我在这里的评论永远不够。给我一个具体的问题或联系我以获取进一步和全面的策略。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 2023-03-25
相关资源
最近更新 更多