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

本文旨在協助那些使用彈性環境、app.yaml 中具有 vm:true 設定的開發人員變更應用程式的設定,從而升級至最新版本。

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

升級至彈性環境

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

  1. app.yaml 設定檔中,將已淘汰的 vm: true 項目替換為 env: flex。範例:
    runtime: ruby
    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 主控台中,藉此針對應用程式及其執行個體提供更完整的抽象層。您可在 GCP 主控台的執行個體頁面,檢視及控制個別的執行個體。

    如要進行偵錯,您也可以透過 SSH 解鎖及存取執行個體,過程中請使用 gcloud app instances 指令 (而非 gcloud compute 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 設定現已淘汰。請按照使用者服務遷移指南操作。

    環境變數變更

    下列環境變數已移除或重新命名,如有可用的替代環境變數則會一併列出:

    已淘汰的環境變數 新的環境變數 (如果有的話)
    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 服務。如果您想在服務推出時收到通知,請填寫搶先體驗表單

    如果您現在就需要 Memcache 服務,可以使用 Redis Labs 提供的第三方 Memcache 服務。如要存取此服務,請參閱透過 Redis Labs 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 定價一年。如要檢視彈性環境的全新價格資訊,請參閱彈性環境執行個體費用

    提示:彈性環境不支援支出上限,建議您可以建立預算與設定快訊

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

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

這個網頁
Ruby 適用的 App Engine 彈性環境文件