将网站迁移到 Azure 平台

Migration websites to Azure platform

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

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

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

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

第三,比方说我选择web+Mobile--> App Service Standard Package (which comes with up to 10 instance) 这些实例是什么?单个会话是否始终连接到同一实例?

Forth:我有大约 20 个数据库,其中一个大约 6GB,其他数据库大约 200MB-700MB 如果我使用 Azure SQL 数据库

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

第五:磁盘Space,假设我选择应用服务"S2: 2 Cores(s), 3.5 GB RAM, 50 GB Storage, [=70=].200",是50GB磁盘space包括OS 或 space 分配给我们上传的文件?

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

我问了太多问题,因为我没有从 MS 聊天中弄清楚,因为他们只是传递了一些链接,这些链接有时会让人感到困惑,我希望我在这里能弄清楚

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

如果您关心的问题之一是代码重构,那么您应该选择的模型是基础架构即服务。在此模型中,无需更改代码,因为 Azure 上的基础结构可以类似于您将虚拟机供应到 运行 Windows 服务器、SQL 服务器的内部部署和 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 因为我有应用程序 运行ning 并且迁移到 Azure 数据库可能会产生问题?

没有影响分析和你的数据模型有多复杂,很难说 Azure SQL 数据库是否与你的数据库兼容。幸运的是,微软提供了一个名为数据迁移助手(DAM)的工具,它可以帮助您对 Azure SQL 数据库进行数据库兼容性分析。此 link 为您提供了有关 DAM (https://docs.microsoft.com/en-us/azure/sql-database/sql-database-cloud-migrate) 的更多详细信息。从 SQL 服务器迁移到 Azure SQL 数据库将在高可用性、灾难恢复和可伸缩性方面获得更多优势。服务器管理的管理工作,OS 补丁大大减少。使用 Azure VM 中的 SQL 服务器,迁移成本要低得多,因为您只需要移动和提升(配置 VM,执行数据库 detach/attach 或其他 backup/restore 方法)。

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

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

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

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

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

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

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

只创建 1 个池并不是我的建议。这取决于您的数据库工作负载。比如在20个数据库中,有5个数据库是ERP或者业务关键系统的高负载数据库,其余都是普通数据库。在这种情况下,您需要两个弹性池。设置了一个eDTU数高的pool,另一个pool的eDTU数低。

问:第五:磁盘Space,假设我选择应用服务"S2: 2 Cores(s), 3.5 GB RAM, 50 GB Storage, [=65=].200",是50GB磁盘space包括OS或space分配给我们上传的文件?

当涉及到 Azure App Service 时,OS 不算在内。50 GB 存储空间 space 直接分配给您的应用程序的 space(用于存储图像、已编译的 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。

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