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