配置服务

services.yaml文件定义Adobe Commerce在云基础架构上支持和使用的服务,例如MySQL、Redis或Valkey,以及Elasticsearch或OpenSearch。 您无需订阅外部服务提供商。

NOTE
.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服务升级,请执行以下步骤:

  1. 若要仅在StagingProduction环境中安装或更新服务,请提交Adobe Commerce支持票证

    在票证中,指定所需的服务更改,包括更新的.magento.app.yaml.magento/services.yaml文件,并记下目标PHP版本。

    PHP版本、编辑器更新、扩展和环境设置都是自助更改。 为兼容PHP版本,Adobe可能需要更新New Relic代理。 查看​ 应用程序配置 ​中的PHP设置

    note important
    IMPORTANT
    在票证表单中选择​ Environment ​字段时,请使用Adobe的环境命名。 例如,即使您在内部调用该环境​Dev,请选择“暂存”。 您可以在描述中提及您的内部名称,但Environment字段必须使用Adobe的命名法。
  2. 通过Adobe的两部分流程确认升级计划:首先确认请求的日期和时间,然后支持部门将其提交给基础架构团队进行最终确认。

    生产变更(仅限Pro)需要提前至少两个工作日发出通知,不包括周末。 例如,Cloud Infrastructure团队必须在前一个星期三确认星期一的升级。 预计需求高峰期会有额外的提前期。 为避免延迟,请在窗口之前至少48小时响应初始请求。 在收到最终确认之前,不会将升级视为已计划。

    note
    NOTE
    提供UTC格式的维护时段。 暂存升级不会提前计划,通常与请求在同一天完成。
    RabbitMQ升级后,重新部署环境以重新初始化消息队列。
  3. 先在暂存或集成环境中验证升级,然后再在生产环境中计划升级。

    在服务升级后的重新部署期间,由第三方模块、自定义代码或依赖关系兼容性导致的问题通常会浮出水面。 要一次验证多个服务升级,合理的顺序依次为Valkey或Redis、RabbitMQ、OpenSearch和MariaDB。 这不是必需的序列。 数据库升级具有最高的操作影响,应引起最大的警觉。

    Adobe不保证提前生产维护窗口的确切持续时间,因为时间取决于环境和涉及的服务。 在规划“生产”窗口时,将暂存升级所花费的时间作为实际估计值。

  4. 在Adobe完成服务升级后​重新部署环境,以使更改生效,即使Adobe Commerce应用程序版本未更改也是如此。

    如果升级包括OpenSearch,则还应计划完全重新索引。 Adobe无法保证服务升级的零停机时间,因此请规划一个维护时段,以便有时间重新部署、根据需要重新编制索引,并在重新打开网站之前验证店面和管理员。

客户在升级期间的可用性

在计划的生产升级时段内,您的团队或实施合作伙伴的代表必须在线可用。 在低流量期间进行计划不会使升级自动进行。 Adobe管理云基础架构升级,但无法验证您的应用程序行为、集成、自定义代码或业务工作流。

可用的代表必须能够:

  • 监控​升级期间和升级后的店面交易和关键业务交易。
  • 回复 Adobe支持或Cloud Infrastructure团队提出的问题。
  • 确认​集成、扩展、自定义、cron作业、队列和其他特定于客户的功能均按预期工作。
  • 验证​业务关键型工作流,如签出、目录视图、搜索、登录和订单处理。
  • 当升级上下文和日志仍然可用时,立即​ 报告 ​意外行为。
TIP
对于Pro项目,生产中的服务升级还需要提前计划和包含Adobe支持的两部分确认流程。 请参阅专业服务支持

维护模式

维护模式不能代替客户可用性。 维护模式会阻止店面访问,但不会验证应用程序服务、集成、队列、cron作业、结账或其他特定于客户的功能。

如果计划内的工作需要维护模式,请协调与Adobe支持人员一起使用它,然后按照该升级说明操作。 之后,在考虑工作完成之前,请确认店面工作流和关键工作流运行正常。

默认服务和支持的服务

云基础架构上的Adobe Commerce支持以下服务,您可以为您的项目配置这些服务:

NOTE
在可用版本之间按顺序升级RabbitMQ。 例如,不要直接从3.9升级到4.1。
要确保升级到新版本后在RabbitMQ中重新创建自定义消息队列,请触发完全部署。

查看配置的服务和版本

您可以在当前模板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值标识项目中的服务。 您只能使用小写字母数字字符:az09,如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环境变量检索所有服务关系的配置数据。 配置数据包括服务名称、类型和版本,以及任何所需的连接详细信息,如端口号和登录凭据。

验证与本地开发环境的关系

  1. 从本地开发环境中,显示活动环境的关系。

    code language-bash
    magento-cloud relationships
    
  2. 确认响应中的servicetype。 响应提供连接信息,如IP地址和端口号。

    缩写示例响应

    code language-yaml
    valkey:
        -
    ...
            type: 'valkey:8.0'
            port: 6379
    opensearch:
        -
    ...
            type: 'opensearch:3'
            port: 9200
    database:
        -
    ...
            type: 'mysql:11.8'
            port: 3306
    

验证远程环境中的关系

  1. 使用SSH登录到远程环境。

  2. 列出环境中配置的所有服务的关系配置数据。

    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
    
  3. 确认响应中的servicetype。 响应提供连接信息,如IP地址、端口号以及所需的用户名和密码凭据。

服务版本

在云基础架构上部署和测试的版本决定了云基础架构上Adobe Commerce的服务版本和兼容性支持,这些版本有时与Adobe Commerce内部部署支持的版本不同。 请参阅​ 安装 ​指南中的系统要求,获取Adobe已使用特定Adobe Commerce和Magento Open Source版本测试的第三方软件依赖项列表。

软件EOL检查

在部署过程中,ece-tools包会根据每个服务的生命周期结束(EOL)日期检查已安装的服务版本。

  • 如果服务版本在EOL日期后的三个月内,则部署日志中会显示通知。
  • 如果EOL日期是过去的时间,则会显示警告通知。

为维护存储安全性,请在已安装的软件版本达到EOL之前更新这些版本。 您可以在ece-tools’ eol.yaml文件中查看EOL日期。

迁移到OpenSearch

WARNING
云基础架构上的Adobe Commerce不支持Elasticsearch 7及更高版本。 Adobe Commerce 2.4.4及更高版本支持OpenSearch服务。

对于Adobe Commerce版本2.4.4及更高版本,请参阅设置OpenSearch服务

更改服务版本

您可以升级已安装的服务版本,以便与云环境中部署的Adobe Commerce版本兼容。

不能直接降级已安装服务的服务版本。 但是,您可以使用所需的版本创建服务。 请参阅降级服务版本

升级已安装的服务版本

您可以通过更新services.yaml文件中的服务配置来升级已安装的服务版本。

  1. 更改.magento/services.yaml文件中服务的type值:

    原始服务定义

    code language-yaml
    mysql:
        type: mysql:11.8
        disk: 2048
    

    更新了服务定义

    code language-yaml
    mysql:
        type: mysql:12.3
        disk: 5120
    
  2. 添加、提交和推送代码更改。

    code language-bash
    git add .magento/services.yaml
    
    code language-bash
    git commit -m "Upgrade MySQL from MariaDB 11.8 to 12.3."
    
    code language-bash
    git push origin <branch-name>
    

降级版本

不能直接降级已安装的服务。 您有两个选项:

  1. 使用新版本重命名现有服务,这将删除现有服务和数据,并添加新服务和数据。

  2. 创建服务并从现有服务中保存数据。

更改服务版本时,必须更新services.yaml文件中的服务配置,并更新.magento.app.yaml文件中的关系。

通过重命名现有服务来降级服务版本

  1. 重命名.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
    
  2. 更新.magento.app.yaml文件中的关系。

    原始.magento.app.yaml配置

    code language-yaml
    relationships:
        database: "mysql:mysql"
    

    已更新.magento.app.yaml配置

    code language-yaml
    relationships:
        database: "mysql2:mysql"
    
  3. 添加、提交和推送代码更改。

通过创建服务来降级服务

  1. 将服务定义添加到具有降级版本规范的项目的services.yaml文件中。 请参阅以下示例中的​mysql2

    services.yaml

    code language-yaml
    mysql:
        type: mysql:10.4
        disk: 5120
    mysql2:
        type: mysql:10.3
        disk: 5120
    
  2. 若要使用新服务,请更改.magento.app.yaml文件中的关系配置。

    原始.magento.app.yaml配置

    code language-yaml
    relationships:
        database: "mysql:mysql"
    

    .magento.app.yaml配置

    code language-yaml
    relationships:
        database: "mysql2:mysql"
    
  3. 添加、提交和推送代码更改。

recommendation-more-help
commerce-on-cloud-help-cloud-guide