設定服務

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檔案包含​ 型別 ​和​ 磁碟 ​值。 服務型別定義服務​ 名稱 ​和​版本

.magento/services.yaml中的服務組態與composer.json中定義的PHP和Composer套件相依性不同,且鎖定在composer.lock中。

套用服務變更的位置

變更服務設定會讓部署在環境中布建更新的服務,進而影響下列環境:

  • 所有入門環境,包括生產master
  • Pro整合環境

Pro服務支援

若要在「測試」或「生產」中請求並完成Pro服務升級,請遵循下列步驟:

  1. 若要僅在StagingProduction環境中安裝或更新服務,請提交Adobe Commerce支援票證

    在票證中,指定所需的服務變更,包括更新的.magento.app.yaml.magento/services.yaml檔案,並記下目標PHP版本。

    PHP版本、Composer更新、擴充功能和環境設定是自助服務變更。 Adobe可能需要更新New Relic代理程式,以取得PHP版本的相容性。 檢視​ 應用程式組態 ​中的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支援或雲端基礎結構團隊的問題。
  • 確認​整合、擴充功能、自訂、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

服務值

提供服務識別碼和服務型別組態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建議您先備份您的Starter環境,然後再變更現有服務的名稱。

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