本頁面說明各種錯誤情況、這些情況的錯誤訊息,以及解決錯誤的疑難排解步驟。
網路錯誤情境
已用盡分配的 IP 範圍
Memorystore for Memcached 需要使用私人服務存取權連線,以及該連線的相關 IP 位址範圍。您可以使用 Memcached 執行個體和其他 Google Cloud 資源,耗盡該範圍內可用的 IP 位址。
如果 IP 位址用盡,建立執行個體時會傳回以下錯誤訊息:
ERROR: (gcloud.memcache.instances.create) {
"code": 9,
"message": "Unable to create instance. The allocated private IP address space
is exhausted. For information on expanding the allocation, see https://cloud.google.com/vpc/docs/configure-private-services-access#modify-ip-range"
}
您可以分配其他 IP 位址來解決這個問題。如要進一步瞭解如何執行這項操作,請參閱「IP 位址範圍用盡」一文。
您沒有為網路建立私人服務存取連線
如果您嘗試建立 Memcached 執行個體的 Memorystore,但未為專案網路建立私人服務存取連線,則建立作業會失敗,並顯示以下錯誤訊息:
Google private service access is not enabled. Enable private service access and
try again
如要成功建立執行個體,請按照「建立私人服務存取連線」一文的私人服務存取權設定說明操作。
已刪除私人服務存取的網路對等互連
建立私人服務存取權連線時,系統會建立名為 servicenetworking-googleapis-com
的網路對等互連連線,並顯示在專案的「VPC 網路對等互連」頁面中。
刪除這項網路對等互連可能會導致您收到下列錯誤:
telnet: Unable to connect to remote host: Connection timed out
Unable to create instance. Enable private service access for the authorized network and try again. For information on enabling private service access, see https://cloud.google.com/service-infrastructure/docs/enabling-private-services-access
如要解決這個問題,請按照「建立私人服務存取權連線」一文中的 gcloud 操作說明,完成最後一個步驟。
防火牆規則封鎖執行個體 IP 位址
如果您建立的防火牆規則會封鎖與私人服務存取連線相關聯的已分配 IP 範圍中的 IP 位址,就可能發生連線問題。
請務必不要建立會封鎖 Memcached 執行個體 IP 範圍的網路防火牆規則。
從其他 Google Cloud 資源連線至 Memcached 執行個體時發生錯誤
從 App Engine 標準環境或 Cloud Run 函式連線至執行個體時發生錯誤
如果您無法使用 App Engine 標準環境或 Cloud Run 函式連線至 Memcached 執行個體,可能是您未為環境設定無伺服器虛擬私有雲存取連接器。
如要瞭解如何為 App Engine 標準環境設定無伺服器虛擬私人雲端存取,請參閱「連線至虛擬私人雲端網路」。
如需為 Cloud Run 函式設定無伺服器虛擬私人雲端存取的操作說明,請參閱「連線至虛擬私人雲端網路」。
使用 Google Kubernetes Engine 叢集連線至執行個體時發生錯誤
如果叢集未啟用 VPC 原生/IP 別名,就無法從 GKE 叢集連線至 Memorystore for Memcached 執行個體。在建立 GKE 叢集時啟用虛擬私人雲端原生/IP 別名最為簡單。建立叢集時,請選取進階選項下方的「VPC Native」。詳情請參閱「建立虛擬私有雲端原生叢集」。
使用 App Engine 彈性環境或 Compute Engine VM 連線至執行個體時發生錯誤
如果執行個體發生連線問題,請按照下列疑難排解步驟操作:
請確認您的 Memcached 執行個體與嘗試存取的用戶端位於相同的區域和網路。
請確認專案中沒有任何網路防火牆規則封鎖 Memcached 執行個體的節點 IP。
- 如要查看節點的 IP 位址,請在 Google Cloud 控制台中查看 Memcached 執行個體的「節點」分頁。
使用 Telnet 連線至其中一個 Memcached 節點,然後執行一些簡單的 Memcached
set
和get
指令,看看執行個體是否有回應。- 如果節點沒有回應,請查看網路錯誤情境中的疑難排解問題,看看是否有任何問題阻斷節點的網路連線。如果無法解決問題,請與Google Cloud 支援團隊聯絡。
Identity and Access Management ( IAM) 錯誤情境
還原已刪除的服務帳戶
Memorystore for Memcached 會使用下列服務帳戶管理 Memcached 執行個體:
- service-project-number@service-networking.iam.gserviceaccount.com
- service-project-number@cloud-memcache-sa.iam.gserviceaccount.com
刪除這些服務帳戶的政策繫結後,您就無法建立新的執行個體。
如果您在這種情況下嘗試使用 gcloud 建立 Memcached 執行個體,可能會收到以下錯誤訊息:
ERROR: (gcloud.memcache.instances.create) {
"code": 13,
"message": "an internal error has occurred"
}
如要重新建立這些服務帳戶的政策繫結,請執行下列任一指令,並將 variables 替換為適當的值。執行與已刪除服務帳戶相關聯的指令。
gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@service-networking.iam.gserviceaccount.com' --role='roles/servicenetworking.serviceAgent'
gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@cloud-memcache-sa.iam.gserviceaccount.com' --role='roles/memcache.serviceAgent'
作業逾時錯誤
下列錯誤情況會導致 Memcached 執行個體無回應,以及/或執行個體/節點作業逾時。
網路分割區錯誤
有時,由於 Google Cloud 伺服器發生網路區隔錯誤, Google Cloud 資源無法在區域內跨可用區進行通訊。這可能會導致執行個體連線中斷,導致逾時錯誤。
Google Cloud 為已佈建執行個體的區域或區塊解決網路區隔錯誤後,連線應該會恢復正常。
在這種情況下,您可能會看到連線錯誤訊息,例如:
telnet: Unable to connect to remote host: Connection timed out
如果無法找出逾時錯誤的原因,請與Google Cloud 支援團隊聯絡。
應用程式不當參照節點 IP
如果用戶端在嘗試連線至節點時逾時,可能的原因之一是應用程式未指定要連線的節點的正確 IP 位址。確認應用程式是否指向叢集中節點的 IP 位址。
在這種情況下,您可能會看到連線錯誤訊息,例如以下訊息:
telnet: Unable to connect to remote host: Connection timed out
如要解決這個問題,請查詢節點的 IP 位址,並確認應用程式正確指向節點位址。
其他錯誤情況
不支援的 Compute Engine IP 位址範圍
您無法從 IP 位址範圍為 172.17.0.0/16
的 Compute Engine VM 存取 Memorystore for Memcached,因為該範圍是保留給內部元件使用。
區域中各個可用區的節點分布不均
如果在您佈建 Memcached 執行個體時, Google Cloud 區域中的某個區域無法使用,節點會在可用的區域中建立。這可能導致 Memached 節點在區域內的各個區域中分布不均。
這應該不會對應用程式效能造成明顯影響。不過,理想情況下,節點應分散至區域中的所有可用區,以免資料受到可用區服務中斷的影響。
如果您不滿意建立執行個體時,各區域的節點分布情形,可以等到該區域恢復上線後再建立執行個體,也可以使用下列策略,稍後再嘗試重新在各區域中分散節點:
如要在區域內的可用節點中重新分配 Memcached 節點,請調高執行個體,然後調降至所需的節點數量。如果所需區域已恢復連線,調度程序會在可用區域中平均重新分配節點。另外,請注意,縮放會導致 Memcached 執行個體中的資料快取清除。