本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从 Amazon Linux AMI(AL1)迁移到 AL2 或 AL2023
如果您的 Elastic Beanstalk 应用程序基于 Amazon Linux AMI 平台分支,请使用此部分了解如何将应用程序的环境迁移到 Amazon Linux 2 或 Amazon Linux 2023。上一代平台分支基于 Amazon Linux AMI
强烈建议您迁移到 Amazon Linux 2023,因为它比 Amazon Linux 2 更新。Amazon Linux 2 操作系统将在 Amazon Linux 2023 之前终止支持,因此,如果您迁移到 Amazon Linux 2023,则将受益于更长的支持时间。
值得注意的是,Elastic Beanstalk Amazon Linux 2 和 Amazon Linux 2023 平台之间具有高度的兼容性。尽管有些方面确实存在差异:实例元数据服务版本 1(IMDSv1)选项默认支持 pkg-repo 实例工具的支持以及某些 Apache HTTPd 配置。有关更多信息,请参阅Amazon Linux 2023。
差异和兼容性
不能保证基于 AL2023/AL2 的平台分支向下兼容您的现有应用程序。另外,同样重要的要注意,即使您的应用程序代码成功部署到新平台版本,其行为和性能也可能会因操作系统和运行时而异。
虽然 Amazon Linux AMI 和 AL2023/AL2 使用的是相同的 Linux 内核,但它们在以下方面存在差异:初始化系统、libc
版本、编译器工具链和各种软件包。更多有关信息,请参阅 Amazon Linux 2 FAQs
Elastic Beanstalk 服务还更新了特定于平台的运行时版本、构建工具和其他依赖项。
因此,我们建议您花些时间在开发环境中彻底测试您的应用程序,并进行任何必要的调整。
一般迁移流程
当您准备开始生产时,Elastic Beanstalk 需要蓝/绿部署才能执行升级。以下是建议使用蓝/绿部署程序进行迁移的一般最佳实践步骤。
准备对您的迁移进行测试
在部署应用程序并开始测试之前,请查看 所有 Linux 平台的注意事项 中的信息,本主题后面将介绍这些信息。此外,请在以下 平台特定注意事项 部分中查看适用于您的平台的信息。记下此内容中应用于或可能应用于您的应用程序和配置设置的特定信息。
高级迁移步骤
-
创建基于 AL2 或 AL2023 平台分支的新环境。建议您迁移到 AL2023 平台分支。
-
将您的应用程序部署到目标 AL2023/AL2 环境。
在您通过测试和调整新环境进行迭代时,您的现有生产环境将保持活动状态且不受影响。
-
在新环境中全面测试您的应用程序。
-
当您的目标 AL2023/AL2 环境准备好投入生产时,您将交换两个环境的规范名称记录(CNAME),将流量重定向到新环境。
更详细的迁移步骤和最佳实践
有关蓝/绿部署过程的更多详细信息,请参阅 使用 Elastic Beanstalk 进行蓝/绿部署。
有关更具体的指导和详细的最佳实践步骤,请参阅蓝/绿方法。
可帮助您规划迁移的更多参考
以下参考可以为规划迁移提供更多信息。
-
比较 Amazon Linux 2 与 Amazon Linux 2023 Amazon Linux 2023 用户指南。
-
《Amazon Linux 2023 用户指南》中的什么是 Amazon Linux 2023?
-
Amazon Elastic Beanstalk 平台中支持 Elastic Beanstalk 的平台
所有 Linux 平台的注意事项
下表讨论了在规划将应用程序迁移到 AL2023/AL2 时应注意的事项。这些注意事项适用于任何 Elastic Beanstalk Linux 平台,而不管平台采用何种特定的编程语言或应用程序服务器。
领域 | 更改和信息 |
---|---|
配置文件 |
在 AL2023/AL2 平台上,您可以像以前一样使用配置文件,并且所有部分的工作方式相同。但是,某些特定设置的工作方式可能与早期 Amazon Linux AMI 平台上的工作方式不同。例如:
我们建议使用平台挂钩在环境实例上运行自定义代码。您仍可以在 对于需要引用 Amazon CloudFormation 资源的任何脚本,您仍需要使用 |
平台挂钩 |
AL2 平台引入了一种新的方法来扩展您的环境平台,即将可执行文件添加到环境实例上的挂钩目录中。对于以前的 Linux 平台版本,您可能使用了自定义平台挂钩。这些挂钩不是为托管平台设计的,因此不受支持,但在某些情况下使用可能会有效。对于 AL2023/AL2 平台版本,自定义平台挂钩不起作用。应当将所有挂钩迁移到新的平台挂钩。有关详细信息,请在 扩展 Elastic Beanstalk Linux 平台 中展开平台挂钩部分。 |
支持的代理服务器 |
AL2023/AL2 平台版本与在 Amazon Linux AMI 平台版本中支持的每个平台支持相同的反向代理服务器。所有 AL2023/AL2 平台版本都使用 nginx 作为其默认反向代理服务器,但 ECS 和 Docker 平台除外。Tomcat、Node.js、PHP 和 Python 平台也支持将 Apache HTTPD 作为替代方案。所有平台都以一致的方式启用代理服务器配置,如本节所述。但是,配置代理服务器与其在 Amazon Linux AMI 上时略有不同。以下是所有平台的区别:
有关特定于平台的代理配置更改,请参阅平台特定注意事项。有关 AL2023/AL2 平台上的代理配置的信息,请展开反向代理配置部分于 扩展 Elastic Beanstalk Linux 平台 中。 |
代理配置更改 |
除了特定于每个平台的代理配置更改外,还有一些代理配置更改统一适用于所有平台。为了准确配置您的环境,请务必参考两者。
|
实例配置文件 |
AL2023/AL2 平台需要配置实例配置文件。如果没有该配置文件,环境创建可能会暂时成功,但是当需要实例配置文件的操作开始失败时,该环境可能会在创建后很快出现错误。有关详细信息,请参阅 管理 Elastic Beanstalk 实例配置文件。 |
增强型运行状况 |
AL2023/AL2 平台版本默认启用增强型运行状况。如果您未使用 Elastic Beanstalk 控制台创建环境,则该功能是一种更改。无论平台版本如何,默认情况下,该控制台尽可能启用增强型运行状况。有关详细信息,请参阅 增强型运行状况报告和监控。 |
自定义 AMI |
如果您的环境使用自定义 AMI,请根据 AL2023/AL2 为使用 Elastic Beanstalk AL2023/AL2 平台的新环境创建新 AMI。 |
自定义平台 |
AL2023/AL2 平台版本的托管 AMI 不支持自定义平台。 |
平台特定注意事项
本节讨论特定 Elastic Beanstalk Linux 平台特有的迁移注意事项。
基于 Amazon Linux AMI (AL1) 的 Docker 平台分支系列包括三个平台分支。我们建议为每个平台分支制定一条不同的迁移路径。
AL1 平台分支 | 迁移到 AL2023/AL2 的路径 | ||||||||
---|---|---|---|---|---|---|---|---|---|
由运行于 Amazon Linux AMI (AL1) 上的 Amazon ECS 托管的多容器 Docker |
基于 ECS 的 Docker AL2023/AL2 平台分支基于 ECS 的 Docker AL2023/AL2 平台分支将为多容器 Docker AL1 平台分支上运行的环境提供直接迁移路径。
有关将在多容器 Docker Amazon Linux 平台分支上运行的应用程序迁移到在 AL2023/AL2 上运行的 Amazon ECS 平台分支的更多信息,请参阅 将在 Amazon Linux 上运行的多容器 Docker 迁移到 Amazon Linux 2023 上的 ECS。 |
||||||||
在 Amazon Linux AMI (AL1) 上运行的 Docker 运行 Amazon Linux AMI (AL1) 的预配置 Docker (Glassfish 5.0) |
在 AL2023/AL2 平台分支上运行的 Docker我们建议您将在基于预配置 Docker(Glassfish 5.0)或在 Amazon Linux AMI(AL1)上运行的 Docker 的环境中运行的应用程序,迁移到基于在 Amazon Linux 2 上运行的 Docker 或在 AL2023 上运行的 Docker 平台分支的环境中。 如果您的环境基于预配置 Docker (Glassfish 5.0) 平台分支,请参阅 将 GlassFish 应用程序部署到 Docker 平台:迁移到 Amazon Linux 2023 的路径。 下表列出了特定于平台分支在 AL2023/AL2 上运行的 Docker 的迁移信息。
|
下表列出了 Go 平台中 AL2023/AL2 平台版本的迁移信息。
领域 | 更改和信息 |
---|---|
端口传递 |
在 AL2023/AL2 平台上,Elastic Beanstalk 不会通过 |
下表列出了 Java SE 平台中的 Corretto 平台分支的迁移信息。
领域 | 更改和信息 |
---|---|
Corretto 与 OpenJDK |
为了实现标准版(Java SE)Java 平台,AL2023/AL2 平台分支使用 Amazon Corretto |
构建工具 |
AL2023/AL2 平台具有较新版本的构建工具: |
JAR 文件处理 |
在 AL2023/AL2 平台上,如果源包(ZIP 文件)包含单个 JAR 文件而不包含其他文件,Elastic Beanstalk 不再将 JAR 文件重命名为 |
端口传递 |
在 AL2023/AL2 平台上,Elastic Beanstalk 不会通过 |
Java 7 |
Elastic Beanstalk 不支持 AL2023/AL2 Java 7 平台分支。如果您有 Java 7 应用程序,请将其迁移到 Corretto 8 或 Corretto 11。 |
下表列出了 Tomcat 平台中 AL2023/AL2 平台版本的迁移信息。
领域 | 更改和信息 | ||||||
---|---|---|---|---|---|---|---|
配置选项 |
在 AL2023/AL2 平台版本上,Elastic Beanstalk 在
AL2023/AL2 平台版本不支持 |
||||||
应用程序路径。 |
在 AL2023/AL2 平台上,您的环境的 Amazon EC2 实例上的应用程序目录路径为 |
下表列出了 Node.js 平台中 AL2023/AL2 平台版本的迁移信息。
领域 | 更改和信息 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
已安装的 Node.js 版本 |
在 AL2023/AL2 平台上,Elastic Beanstalk 维护多个 Node.js 平台分支,并且仅在每个平台版本上安装与平台分支对应的最新版本的 Node.js 主版本。例如,Node.js 12 平台分支中的每个平台版本在默认情况下仅安装 Node.js 12.x.y。在 Amazon Linux AMI 平台版本上,我们在每个平台版本上安装了多个 Node.js 版本的多个版本,并且只维护一个平台分支。 选择与您的应用程序所需的 Node.js 主版本对应的 Node.js 平台分支。 |
||||||||||
Apache HTTPD 日志文件名 |
在 AL2023/AL2 平台上,如果您使用 Apache HTTPD 代理服务器,则 HTTPD 日志文件名为 有关所有平台的日志文件名和位置的详细信息,请参阅 Elastic Beanstalk 如何设置 CloudWatch Logs。 |
||||||||||
配置选项 |
在 AL2023/AL2 平台上,Elastic Beanstalk 不支持
|
下表列出了 PHP 平台中 AL2023/AL2 平台版本的迁移信息。
领域 | 更改和信息 |
---|---|
PHP 文件处理 |
在 AL2023/AL2 平台上,将通过 PHP-FPM(CGI 进程管理器)处理 PHP 文件。在 Amazon Linux AMI 平台上,我们使用的是 mod_php(一个 Apache 模块)。 |
代理服务器 |
AL2023/AL2 PHP 平台版本同时支持 nginx 和 Apache HTTPD 代理服务器。默认为 nginx。 Amazon Linux AMI PHP 平台版本仅支持 Apache HTTPD。如果您添加了自定义 Apache 配置文件,则可以将 |
下表列出了 Python 平台中 AL2023/AL2 平台版本的迁移信息。
领域 | 更改和信息 |
---|---|
WSGI 服务器 |
在 AL2023/AL2 平台上,Gunicorn 此外,您可以使用 |
应用程序路径。 |
在 AL2023/AL2 平台上,您的环境的 Amazon EC2 实例上的应用程序目录路径为 |
代理服务器 |
AL2023/AL2 Python 平台版本同时支持 nginx 和 Apache HTTPD 代理服务器。默认为 nginx。 Amazon Linux AMI Python 平台版本仅支持 Apache HTTPD。如果您添加了自定义 Apache 配置文件,则可以将 |
下表列出了 Ruby 平台中 AL2023/AL2 平台版本的迁移信息。
领域 | 更改和信息 |
---|---|
已安装 Ruby 版本 |
在 AL2023/AL2 平台上,Elastic Beanstalk 仅在每个平台版本上安装与平台分支对应的单个 Ruby 版本的最新版本。例如,Ruby 2.6 平台分支中的每个平台版本仅安装了 Ruby 2.6.x。在 Amazon Linux AMI 平台版本上,我们安装了多个 Ruby 版本的最新版本,例如 2.4.x、2.5.x 和 2.6.x。 如果您的应用程序使用的 Ruby 版本与您正在使用的平台分支不对应,建议您切换到具有适合您的应用程序的 Ruby 版本的平台分支。 |
应用程序服务器 |
在 AL2023/AL2 平台上,Elastic Beanstalk 仅在所有 Ruby 平台版本上安装 Puma 应用程序服务器。您可以使用 在 Amazon Linux AMI 平台上,对于每个 Ruby 版本,我们支持两种平台分支 - 一种具有 Puma 应用程序服务器,另一种具有 Passenger 应用服务器。如果您的应用程序使用 Passenger,则可以将 Ruby 环境配置为安装和使用 Passenger。 有关更多信息以及示例,请参阅 使用 Elastic Beanstalk Ruby 平台。 |