本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
了解 IIS 到 Elastic Beanstalk 的迁移映射
从 IIS 迁移到 Elastic Beanstalk 涉及将您的本地 Windows 服务器配置映射到云资源。 Amazon 了解此映射对于成功进行迁移和迁移后管理至关重要。
Elastic Beanstalk 中的 IIS 网站和应用程序
在 IIS 中,网站代表一组 Web 应用程序和虚拟目录,每个应用程序和虚拟目录都有自己的配置和内容。迁移到 Elastic Beanstalk 时,这些组件将按如下方式进行转换:
- IIS 网站
-
您的 IIS 网站将变成 Elastic Beanstalk 中的应用程序。每个网站的配置,包括其绑定、应用程序池和身份验证设置,都通过 Elastic Beanstalk 的部署清单 () 保留。
aws-windows-deployment-manifest.json
例如,如果您有多个站点,例如默认网站和 IntranetSite,则会将每个网站的内容和配置eb migrate打包,同时保持其隔离。
该命令创建相应的 Application Load Balancer (ALB) 侦听器规则,以处理对应用程序的路由请求。它还配置安全组,以确保根据您的原始 IIS 绑定进行适当的端口访问。
- 应用程序池
-
IIS 应用程序池为您的应用程序提供工作进程隔离、运行时管理和回收功能。在 Elastic Beanstalk 中,它们映射到通过命名空间定义并
aws:elasticbeanstalk:environment:process
通过 IIS 在实例上配置的环境进程。 EC2迁移会保留关键的应用程序池设置,包括:
-
流程模型配置-身份(ApplicationPoolIdentity NetworkService、或自定义帐户)、空闲超时设置和进程回收间隔
-
.NET CLR 版本设置-维护您指定的.NET Framework 版本(v2.0、v4.0 或无托管代码)以确保应用程序兼容性
-
托管管道模式-保留集成或经典管道模式设置以维护您的 HTTP 请求处理架构
-
高级设置-队列长度、CPU 限制、快速故障保护阈值和启动时间限制
在迁移到 Elastic Beanstalk 环境期间,该eb migrate命令会保留站点和应用程序池之间的映射。
如果您的应用程序池使用自定义回收计划(特定时间或内存阈值),则这些计划是通过部署包中的 PowerShell 脚本实现的,这些脚本在 EC2 实例上配置相应的 IIS 设置。
-
- 网站绑定
-
定义客户端如何访问您的应用程序的 IIS 网站绑定已转换为以下 Application Load Balancer (ALB) 配置:
-
端口绑定映射到相应的 ALB 侦听器规则
-
主机标头配置转换为 ALB 路由规则
-
启用 SSL 的网站使用 Certifice Manager (ACM) 进行 Amazon 证书管理
-
虚拟目录和应用程序路径管理
IIS 虚拟目录和应用程序提供物理目录的 URL 路径映射。Elastic Beanstalk 通过以下结构来维持这些关系:
- 虚拟目录
-
迁移过程会将虚拟目录的物理路径保留在部署包中。
路径映射是在 EC2 实例上的 IIS 配置中配置的,可确保迁移后您的 URL 结构保持不变。
- 非系统驱动器的物理路径
-
重要
默认情况下,Elastic Beanstalk Windows 环境仅配置 C:\ 驱动器(根卷)。在当前版本中,不支持在非系统驱动器上包含内容的应用程序(D:\、E:\ 等)进行迁移。
该eb migrate命令会自动检测位于非系统驱动器上的物理路径,并警告您可能出现的问题,如下例所示:
ERROR: Detected physical paths on drive D:\ which are not supported in the current version: - D:\websites\intranet - D:\shared\images Migration of content from non-system drives is not supported. Please relocate this content to the C:\ drive before migration. Otherwise, select only those sites that are on C:\.
如果您的应用程序依赖于非系统驱动器,则在迁移之前,您需要修改应用程序以将所有内容存储在 C:\ 驱动器上。
- 嵌套应用程序
-
嵌套在网站下的应用程序使用正确的路径配置和适当的应用程序池分配进行部署。迁移过程会保留所有
web.config
设置,确保特定于应用程序的配置在云环境中继续按预期运行。
URL 重写和应用程序请求路由 (ARR)
如果您的 IIS 部署使用 URL 重写或应用程序请求路由 (ARR),请通过以下规则和配置来eb migrate处理这些配置:
- 网址重写规则
-
如果可能,
web.config
文件中的 URL 重写规则会转换为 ALB 路由规则。例如,以下条目变成 ALB 监听器规则,根据主机标头和路径模式引导流量。 :<!-- Original IIS URL Rewrite Rule --> <rule name="Redirect to WWW" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^example.com$" /> </conditions> <action type="Redirect" url="http://www.example.com/{R:1}" /> </rule>
- 应用程序请求路由
-
通过在 EC2实例上安装 ARR 功能来保留 ARR 配置。迁移过程完成了以下任务:
-
配置代理设置以匹配您的源环境
-
维护与 ARR 关联的 URL 重写规则
-
迁移构件结构
运行时eb migrate,它会创建一个包含所有必需部署组件的结构化目录。以下清单描述了目录结构:
C:\migration_workspace\
└── .\migrations\latest\
└── upload_target\
├── [SiteName].zip # One ZIP per IIS site
├── aws-windows-deployment-manifest.json
└── ebmigrateScripts\
├── site_installer.ps1 # Site installation scripts
├── arr_configuration.ps1 # ARR configuration scripts
├── permission_handler.ps1 # Permission management
└── firewall_config.ps1 # Windows Firewall rules
该aws-windows-deployment-manifest.json
文件是指示 Elastic Beanstalk 如何部署应用程序的核心配置文件。请参阅以下示例结构:
{ "manifestVersion": 1, "deployments": { "msDeploy": [ { "name": "Primary Site", "parameters": { "appBundle": "DefaultWebSite.zip", "iisPath": "/", "iisWebSite": "Default Web Site" } } ], "custom": [ { "name": "ConfigureARR", "scripts": { "install": { "file": "ebmigrateScripts\\arr_configuration.ps1" }, "uninstall": { "file": "ebmigrateScripts\\noop.ps1" }, "restart": { "file": "ebmigrateScripts\\noop.ps1" } } } ] } }
此清单可确保您的迁移结果如下:
-
部署应用程序是为了更正 IIS 路径
-
已应用自定义配置
-
保留特定于站点的设置
-
部署顺序得以维持