配置服务
services.yaml文件定义Adobe Commerce在云基础架构上支持和使用的服务,例如MySQL、Redis或Valkey,以及Elasticsearch或OpenSearch。 您无需订阅外部服务提供商。
.magento/services.yaml文件是在项目的.magento目录中本地管理的。 在部署期间,云基础架构上的Adobe Commerce使用此配置为目标环境配置支持的服务。 部署后已从远程服务器删除.magento目录,因此部署的环境中不存在services.yaml。部署脚本使用.magento目录中的配置文件为环境配置配置的服务。 如果某个服务包含在.magento.app.yaml文件的relationships属性中,则该服务对您的应用程序可用。 services.yaml文件包含 类型 和 磁盘 值。 服务类型定义服务 name 和version。
.magento/services.yaml中的服务配置不同于composer.json中定义的PHP和编辑器包依赖项,并且锁定在composer.lock中。
服务更改适用的位置
更改服务配置会导致部署为环境提供更新的服务,这会对以下环境造成影响:
- 所有入门环境,包括生产
master - 专业集成环境
专业服务支持
要在暂存或生产环境中请求并完成Pro服务升级,请执行以下步骤:
-
若要仅在
Staging和Production环境中安装或更新服务,请提交Adobe Commerce支持票证。在票证中,指定所需的服务更改,包括更新的
.magento.app.yaml和.magento/services.yaml文件,并记下目标PHP版本。PHP版本、编辑器更新、扩展和环境设置都是自助更改。 为兼容PHP版本,Adobe可能需要更新New Relic代理。 查看 应用程序配置 中的PHP设置。
note important IMPORTANT 在票证表单中选择 Environment 字段时,请使用Adobe的环境命名。 例如,即使您在内部调用该环境Dev,请选择“暂存”。 您可以在描述中提及您的内部名称,但Environment字段必须使用Adobe的命名法。 -
通过Adobe的两部分流程确认升级计划:首先确认请求的日期和时间,然后支持部门将其提交给基础架构团队进行最终确认。
生产变更(仅限Pro)需要提前至少两个工作日发出通知,不包括周末。 例如,Cloud Infrastructure团队必须在前一个星期三确认星期一的升级。 预计需求高峰期会有额外的提前期。 为避免延迟,请在窗口之前至少48小时响应初始请求。 在收到最终确认之前,不会将升级视为已计划。
note NOTE 提供UTC格式的维护时段。 暂存升级不会提前计划,通常与请求在同一天完成。 RabbitMQ升级后,重新部署环境以重新初始化消息队列。 -
先在暂存或集成环境中验证升级,然后再在生产环境中计划升级。
在服务升级后的重新部署期间,由第三方模块、自定义代码或依赖关系兼容性导致的问题通常会浮出水面。 要一次验证多个服务升级,合理的顺序依次为Valkey或Redis、RabbitMQ、OpenSearch和MariaDB。 这不是必需的序列。 数据库升级具有最高的操作影响,应引起最大的警觉。
Adobe不保证提前生产维护窗口的确切持续时间,因为时间取决于环境和涉及的服务。 在规划“生产”窗口时,将暂存升级所花费的时间作为实际估计值。
-
在Adobe完成服务升级后重新部署环境,以使更改生效,即使Adobe Commerce应用程序版本未更改也是如此。
如果升级包括OpenSearch,则还应计划完全重新索引。 Adobe无法保证服务升级的零停机时间,因此请规划一个维护时段,以便有时间重新部署、根据需要重新编制索引,并在重新打开网站之前验证店面和管理员。
客户在升级期间的可用性
在计划的生产升级时段内,您的团队或实施合作伙伴的代表必须在线可用。 在低流量期间进行计划不会使升级自动进行。 Adobe管理云基础架构升级,但无法验证您的应用程序行为、集成、自定义代码或业务工作流。
可用的代表必须能够:
- 监控升级期间和升级后的店面交易和关键业务交易。
- 回复 Adobe支持或Cloud Infrastructure团队提出的问题。
- 确认集成、扩展、自定义、cron作业、队列和其他特定于客户的功能均按预期工作。
- 验证业务关键型工作流,如签出、目录视图、搜索、登录和订单处理。
- 当升级上下文和日志仍然可用时,立即 报告 意外行为。
维护模式
维护模式不能代替客户可用性。 维护模式会阻止店面访问,但不会验证应用程序服务、集成、队列、cron作业、结账或其他特定于客户的功能。
如果计划内的工作需要维护模式,请协调与Adobe支持人员一起使用它,然后按照该升级说明操作。 之后,在考虑工作完成之前,请确认店面工作流和关键工作流运行正常。
默认服务和支持的服务
云基础架构上的Adobe Commerce支持以下服务,您可以为您的项目配置这些服务:
查看配置的服务和版本
您可以在当前模板services.yaml文件中查看示例服务定义和磁盘值。 实际的默认服务版本和支持的服务版本取决于您的Adobe Commerce版本和当前的云模板。
以下示例显示了services.yaml配置文件中的服务定义:
mysql:
type: mysql:11.8
disk: 5120
cache:
type: valkey:9.0
opensearch:
type: opensearch:3 # minor version not required; uses latest
disk: 1024
rabbitmq:
type: rabbitmq:4.3
disk: 1024
activemq-artemis:
type: activemq-artemis:2.42
disk: 1024
服务值
提供服务ID和服务类型配置type: <name>:<version>。 如果服务使用永久存储,则必须提供磁盘值。
使用以下格式:
<service-id>:
type: <name>:<version>
disk: <value-MB>
service-id
service-id值标识项目中的服务。 您只能使用小写字母数字字符:a到z和0到9,如valkey。
此 service-id 值在.magento.app.yaml配置文件的relationships属性中使用:
relationships:
valkey: "valkey:valkey"
您可以命名每种服务类型的多个实例。 例如,您可以使用多个Valkey实例,一个用于会话,一个用于缓存。
valkey:
type: valkey:<version>
valkey2:
type: valkey:<version>
重命名services.yaml文件中的服务:
- 使用您指定的新名称创建服务之前的现有服务。
- 服务的所有现有数据都会被删除。 Adobe建议您在更改现有服务的名称之前备份您的入门环境。
type
type值指定服务名称和版本。 例如:
mysql:
type: mysql:10.4
disk
disk值指定要分配给服务的永久磁盘存储的大小(以MB为单位)。 使用永久存储的服务(如MySQL)必须提供磁盘值。 使用内存而非永久存储的服务(如Valkey)不需要磁盘值。
mysql:
type: mysql:10.4
disk: 5120
每个项目的当前默认存储量为5 GB,即5120 MB。 您可以在应用程序及其各项服务之间分配此金额。
服务关系
在云基础架构项目上的Adobe Commerce中,在.magento.app.yaml文件中配置的服务关系决定了应用程序可用的服务。
您可以从$MAGENTO_CLOUD_RELATIONSHIPS环境变量检索所有服务关系的配置数据。 配置数据包括服务名称、类型和版本,以及任何所需的连接详细信息,如端口号和登录凭据。
验证与本地开发环境的关系
-
从本地开发环境中,显示活动环境的关系。
code language-bash magento-cloud relationships -
确认响应中的
service和type。 响应提供连接信息,如IP地址和端口号。缩写示例响应
code language-yaml valkey: - ... type: 'valkey:8.0' port: 6379 opensearch: - ... type: 'opensearch:3' port: 9200 database: - ... type: 'mysql:11.8' port: 3306
验证远程环境中的关系
-
使用SSH登录到远程环境。
-
列出环境中配置的所有服务的关系配置数据。
code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp或者,使用以下
ece-tools命令查看关系:code language-bash php ./vendor/bin/ece-tools env:config:show services -
确认响应中的
service和type。 响应提供连接信息,如IP地址、端口号以及所需的用户名和密码凭据。
服务版本
在云基础架构上部署和测试的版本决定了云基础架构上Adobe Commerce的服务版本和兼容性支持,这些版本有时与Adobe Commerce内部部署支持的版本不同。 请参阅 安装 指南中的系统要求,获取Adobe已使用特定Adobe Commerce和Magento Open Source版本测试的第三方软件依赖项列表。
软件EOL检查
在部署过程中,ece-tools包会根据每个服务的生命周期结束(EOL)日期检查已安装的服务版本。
- 如果服务版本在EOL日期后的三个月内,则部署日志中会显示通知。
- 如果EOL日期是过去的时间,则会显示警告通知。
为维护存储安全性,请在已安装的软件版本达到EOL之前更新这些版本。 您可以在ece-tools’ eol.yaml文件中查看EOL日期。
迁移到OpenSearch
对于Adobe Commerce版本2.4.4及更高版本,请参阅设置OpenSearch服务。
更改服务版本
您可以升级已安装的服务版本,以便与云环境中部署的Adobe Commerce版本兼容。
不能直接降级已安装服务的服务版本。 但是,您可以使用所需的版本创建服务。 请参阅降级服务版本。
升级已安装的服务版本
您可以通过更新services.yaml文件中的服务配置来升级已安装的服务版本。
-
更改
.magento/services.yaml文件中服务的type值:原始服务定义
code language-yaml mysql: type: mysql:11.8 disk: 2048更新了服务定义
code language-yaml mysql: type: mysql:12.3 disk: 5120 -
添加、提交和推送代码更改。
code language-bash git add .magento/services.yamlcode language-bash git commit -m "Upgrade MySQL from MariaDB 11.8 to 12.3."code language-bash git push origin <branch-name>
降级版本
不能直接降级已安装的服务。 您有两个选项:
-
使用新版本重命名现有服务,这将删除现有服务和数据,并添加新服务和数据。
-
创建服务并从现有服务中保存数据。
更改服务版本时,必须更新services.yaml文件中的服务配置,并更新.magento.app.yaml文件中的关系。
通过重命名现有服务来降级服务版本
-
重命名
.magento/services.yaml文件中的现有服务并更改版本。note warning WARNING 重命名现有服务会替换现有服务并删除所有数据。 如果需要保留数据,请创建一个服务,而不是重命名现有服务。 例如,要将 mysql 服务的MariaDB版本从版本10.4降级到10.3,请更改现有的 service-id 和 type 配置。
原始
services.yaml定义code language-yaml mysql: type: mysql:10.4 disk: 5120新
services.yaml定义code language-yaml mysql2: type: mysql:10.3 disk: 5120 -
更新
.magento.app.yaml文件中的关系。原始
.magento.app.yaml配置code language-yaml relationships: database: "mysql:mysql"已更新
.magento.app.yaml配置code language-yaml relationships: database: "mysql2:mysql" -
添加、提交和推送代码更改。
通过创建服务来降级服务
-
将服务定义添加到具有降级版本规范的项目的
services.yaml文件中。 请参阅以下示例中的mysql2:services.yaml
code language-yaml mysql: type: mysql:10.4 disk: 5120 mysql2: type: mysql:10.3 disk: 5120 -
若要使用新服务,请更改
.magento.app.yaml文件中的关系配置。原始
.magento.app.yaml配置code language-yaml relationships: database: "mysql:mysql"新
.magento.app.yaml配置code language-yaml relationships: database: "mysql2:mysql" -
添加、提交和推送代码更改。