升級至最新版本的 App Engine 彈性環境

本文將說明如何調整相關應用程式配置以將彈性環境升級至最新版本,適合使用彈性環境且在 vm:true 中使用 app.yaml 設定的開發人員閱讀。

本文提供的方法不適用於從 App Engine 標準環境升級,如需相關操作說明,請參閱將服務從標準環境遷移至彈性環境

升級至彈性環境

如要從代管 VM 環境升級至彈性環境:

  1. app.yaml 設定檔中,將已淘汰的 vm: true 項目替換為 env: flex。範例:
    runtime: nodejs
    env: flex
    
  2. 檢閱破壞性變更清單,判斷 app.yaml 是否需要進一步變更。
  3. 在升級過程中,考慮是否進行變更以使用新功能
  4. 完成所有的必要變更後,將新版的應用程式部署至 App Engine

    例如,從 app.yaml 檔案所在的應用程式根目錄中,執行下列指令:

    gcloud app deploy

  5. 共用核心機器類型

    App Engine 彈性環境不支援共用核心機器類型,因為此類型擁有的 vCPU 不到 1 個。如果您使用共用核心機器,則移至 env:flex 時,您必須將機器升級到至少具有一個核心。或者,您也可以將應用程式移至 App Engine 標準環境。

    暖機要求

    App Engine 彈性環境不支援 /_ah/warmup 要求。

    如要為應用程式暖機,請導入健康狀態檢查處理常式。該處理常式只有在應用程式暖機完畢後,才會傳回就緒狀態

    舉例來說,您可以建立就緒狀態檢查,該檢查會在初始化快取後才傳回就緒狀態,因此您的應用程式在準備好之前都不會接收到流量。

    靜態檔案

    如果您在 app.yamlhandlers: 部分定義靜態檔案,則這些靜態檔案不會從其他 App Engine 基礎架構提供,而是從 App Engine 執行個體直接提供。介面與行為是相同的,但 App Engine 執行個體在提供檔案時會佔用少量的 CPU 和其他資源。

    隱藏資源

    在彈性環境部署背景運作的基礎資源 (包含 Cloud Load Balancing、Compute Engine 執行個體,與代管的執行個體群組) 隱藏於 Google Cloud Platform 主控台,以針對 App Engine 應用程式及其執行個體,提供更完整的抽象層。您可在 GCP 主控台的執行個體頁面中,檢視和控制個別的執行個體。

    您仍可透過 SSH 取消鎖定和連線至執行個體以進行除錯。請不要使用 gcloud compute instances 指令,改用 gcloud app instances。您也可以在 GCP 主控台的執行個體頁面中,啟動 SSH 連線。

    破壞性變更

    您必須對程式碼和設定檔進行一些變更,才能升級至 App Engine 彈性環境。本節說明在透過 env: flex 設定部署應用程式之前,您必須先處理的淘汰項目和破壞性變更。

    資料庫淘汰項目

    下列的資料庫及其相關服務已在 2016 年 11 月 15 日淘汰,而且不受彈性環境支援:

    app.yaml 變更

    app.yaml 檔案中已淘汰的 vm:true 設定,替換為 env:flex 彈性環境設定。

    驗證變更

    您也需要更新 app.yaml 檔案,將其他遭到淘汰的配置設定移除或替換:

    • 安全處理常式
      在 App Engine 彈性環境中,handlerssecure 設定現已淘汰。如果您需要安全資料傳輸層 (SSL) 重新導向,可以更新應用程式碼,並使用 X-Forwarded-Proto 標頭重新導向 http 流量,也可以使用 HTTP 嚴格傳輸安全性回應標頭
    • 登入處理常式
      在 App Engine 彈性環境中,handlerslogin 設定現已淘汰。請按照 Users 服務遷移的指南進行操作。

    環境變數變更

    下列的環境變數已經移除或經過重新命名,如有可用的替代環境變數也將列於下方:

    已淘汰的環境變數 可用的新環境變數
    APPENGINE_LOADBALANCER
    APPENGINE_LOADBALANCER_IP
    GAE_AFFINITY
    GAE_APPENGINE_HOSTNAME
    GAE_MINOR_VERSION
    GAE_LONG_APP_ID GOOGLE_CLOUD_PROJECT
    GAE_MODULE_INSTANCE GAE_INSTANCE
    GAE_MODULE_NAME GAE_SERVICE
    GAE_MODULE_VERSION GAE_VERSION
    GAE_PARTITION
    GAE_VM
    HOSTNAME
    MEMCACHE_ENV_DEBIAN_FRONTEND
    MEMCACHE_ENV_PORT
    MEMCACHE_NAME
    MEMCACHE_PORT
    MEMCACHE_PORT_11211_TCP
    MEMCACHE_PORT_11211_TCP_ADDR
    MEMCACHE_PORT_11211_TCP_PORT
    MEMCACHE_PORT_11211_TCP_PROTO
    MODULE_YAML_PATH
    SERVER_SOFTWARE
    USE_MVM_AGENT

    要求標頭變更

    下列的 HTTP要求標頭已變更:

    • 已從所有要求中移除:

      • X-GOOGLE-REAL-IP
      • X-APPENGINE-API-TICKET
      • X-APPENGINE-AUTH-DOMAIN
      • X-APPENGINE-DATACENTER
      • X-APPENGINE-DEFAULT-VERSION-HOSTNAME
      • X-APPENGINE-HTTPS
      • X-APPENGINE-REQUEST-ID-HASH
      • X-APPENGINE-REQUEST-LOG-ID
      • X-APPENGINE-USER-IS-ADMIN
      • X-APPENGINE-USER-IP
    • 目前已加入所有的要求:

      • X-FORWARDED-FOR
      • X-CLOUD-TRACE-CONTEXT
      • X-FORWARDED-PROTO

    Memcache 服務

    App Engine 彈性環境目前尚未提供 Memcache 服務,但 Alpha 測試版的 Memcache 服務將在近期內推出。如果您想在服務推出時收到通知,請填寫搶先體驗表單

    如需立即快取應用程式資料,您可以使用第三方全代管服務 Redis Labs Redis Cloud。如要存取此服務,請參閱使用 Redis Labs Redis 快取應用程式資料

    工作佇列

    在非標準環境中無法隨時使用 Task Queue API。如果您想要在標準環境以外的環境使用此 API 服務,可以申請 Cloud Tasks Alpha 測試版

    在大部分可能需要使用提取佇列的情況中 (像是將透過個別作業提取及處理的工作或訊息排入佇列),Cloud Pub/Sub 也能提供類似的功能與傳遞保證,可做為不錯的替代方案。

    網址轉送變更

    針對在彈性環境中執行的應用程式,您無法再將流量轉送至特定的執行個體。舉例來說,您無法將要求導向「instanceID」執行個體:

    https://instanceID-dot-versionID-dot-serviceID-dot-app-id.appspot.com

    升級時應考慮採用的新功能

    請記下這些改善項目,您可以在升級應用程式時善加利用:

    定價變更

    App Engine 彈性環境版本推出全新的定價模式。目前使用 vm:true 的客戶,可享有一年期的原始 Compute Engine 定價。如需查看彈性環境的全新價格資訊,請參閱使用彈性環境執行個體的費用

    提示:彈性環境不支援支出上限,請考慮使用建立預算及設定快訊的功能。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Node.js 適用的 App Engine 彈性環境文件