總覽
虛擬私有雲對等互連的運作方式是設定虛擬私有雲,以便彼此通訊。如果來源位於 Cloud SQL 或 Compute Engine 的相同 Google Cloud 專案中,目的地就能直接與來源通訊。 如果來源在 VPN 內 (例如在 AWS 或您自己的地端部署 VPN 內),請設定來源 VPN 和 Google Cloud VPN,方便彼此搭配運作。詳情請參閱 透過 VPN 連線至虛擬私人雲端網路。不支援虛擬私有雲連結。如果來源位於不同的 Google Cloud 專案中,請參閱共用虛擬私有雲總覽,瞭解如何將多個專案的資源連結至通用虛擬私有雲網路,以便進行 VPC 對等互連。
來源資料庫伺服器的防火牆必須設為允許將整個內部 IP 範圍分配給私人服務連線,而 Cloud SQL 目的地執行個體將使用該範圍做為其 ipConfiguration 設定的 privateNetwork 欄位。
如要在主控台中尋找內部 IP 範圍:
選取要使用的 VPC 網路。
依序選取「私人服務存取權」>「已分配的服務 IP 範圍」。
找出與 servicenetworking-googleapis-com 建立的連線相關聯的內部 IP 範圍。
虛擬私有雲對等互連會使用私人服務存取權,每個使用虛擬私有雲對等互連的專案都必須設定一次。建立 private services access
後,請測試遷移工作以驗證連線。
為資料庫遷移服務設定私人服務存取權
如果您為任何資料庫移轉服務執行個體使用私人 IP,只要針對擁有或需要連線至資料庫移轉服務執行個體的每個 Google Cloud 專案,設定私人服務存取權一次即可。
建立私人服務存取權需要 compute.networkAdmin IAM 角色。為網路建立私人服務存取權後,您就不再需要 compute.networkAdmin
IAM 角色,即可設定執行個體使用私人 IP。
如要使用私人服務存取權,您必須先分配內部 IP 位址範圍,然後建立私人連線,再匯出自訂路徑。
分配範圍是預留的 CIDR 區塊,無法在您的本機虛擬私有雲網路中使用,建立私人連線時,您必須指定分配範圍。私人連線會將您的虛擬私有雲網路連結至底層 (「服務供應商」) 虛擬私有雲網路。
建立私人連線之後,VPC 網路和服務供應商網路只會交換子網路路徑。您必須匯出虛擬私人雲端網路的自訂路徑,讓服務供應商的網路能夠匯入這些路徑,並將流量正確地轉送至內部部署網路。
對等互連設定會建立連線到另一個 VPC 網路的意圖。您的網路與另一個網路之間必須具備對方的對等互連設定才可連線。當另一個網路具備與您的網路建立對等互連的對應設定後,兩邊的對等互連狀態都會變成 ACTIVE,表示兩個網路皆已連線。若另一個網路沒有對應的對等互連設定,對等互連狀態就會維持在 INACTIVE,代表您的網路並未與該網路連線。
兩邊網路一旦連線,便一律會交換子網路路徑。如果已將對等網路設定為可匯出自訂路徑,則可選擇從對等網路匯入靜態和動態兩種自訂路徑
私人服務存取權設定程序分為兩個部分:
- 分配 IP 位址範圍。範圍涵蓋所有執行個體。
- 建立從虛擬私有雲網路到服務供應商網路的私人連線。
分配 IP 位址範圍
控制台
- 前往 Google Cloud 控制台的「VPC networks」(虛擬私有雲網路) 頁面。
- 選取要使用的 VPC 網路。
- 選取 [Private service connection] (私人服務連線) 分頁標籤。
- 選取「Allocated IP ranges for services」(已分配的服務 IP 範圍) 分頁標籤。
- 按一下「分配 IP 範圍」。
在分配範圍的「名稱」中,指定
google-managed-services-VPC_NETWORK_NAME
,其中VPC_NETWORK_NAME
是您要連線的虛擬私人雲端網路名稱 (例如google-managed-services-default
)。「說明」為選用項目。按一下「ALLOCATE」,建立已分配範圍。
gcloud
執行下列其中一個步驟:
如要指定位址範圍與前置字串長度 (子網路遮罩),請使用
addresses
和prefix-length
標記。例如,如要分配 CIDR 區塊192.168.0.0/16
,請將位址指定為192.168.0.0
,並將前置字串長度指定為16
。gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \ --global \ --purpose=VPC_PEERING \ --addresses=192.168.0.0 \ --prefix-length=16 \ --network=[VPC_NETWORK_NAME]
如要單純指定前置字串長度 (子網路遮罩),請直接使用
prefix-length
標記。如果省略位址範圍, Google Cloud會自動選取您的虛擬私人雲端網路未使用的位址範圍。下列範例會以16
位元前置字串長度選取未使用的 IP 位址範圍。gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=[VPC_NETWORK_NAME]
將 [VPC_NETWORK_NAME]
替換為您的虛擬私人雲端網路名稱,例如 my-vpc-network
。
下列範例會分配 IP 範圍,讓虛擬私有雲網路 my-vpc-network
中的資源可透過私人 IP 連線至資料庫遷移服務執行個體。
gcloud compute addresses create google-managed-services-my-vpc-network \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=my-vpc-network \ --project=my-project
建立私人連線
控制台
- 前往 Google Cloud 控制台的「VPC networks」(虛擬私有雲網路) 頁面。
- 選取要使用的 VPC 網路。
- 選取 [Private service connection] (私人服務連線) 分頁標籤。
- 選取「Private connections to services」(私人服務連線) 分頁。
- 按一下 [Create connection] (建立連線),在網路與服務生產端之間建立私人連線。
- 針對「Assigned allocation」(已指派的分配範圍),選取尚未由其他服務供應商使用的一或多個現有分配範圍,然後按一下「OK」。
- 按一下「CONNECT」建立連線。
gcloud
建立私人連線。
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=google-managed-services-[VPC_NETWORK_NAME] \ --network=[VPC_NETWORK_NAME] \ --project=[PROJECT_ID]
將
[VPC_NETWORK_NAME]
替換為您的虛擬私人雲端網路名稱,並將[PROJECT_ID]
替換為含有虛擬私人雲端網路的專案 ID。這個指令會啟動長期執行作業並傳回作業名稱。
確認作業是否已經成功完成。
gcloud services vpc-peerings operations describe \ --name=[OPERATION_NAME]
將
[OPERATION_NAME]
替換為先前步驟傳回的作業名稱。
您可以在建立私人連線時指定多個分配範圍,舉例來說,如果範圍已用盡,您可以指派額外的分配範圍。服務會依照您指定的順序使用所有提供範圍的 IP 位址。
匯出自訂路徑
更新現有虛擬私人雲端網路對等互連連線,以變更虛擬私人雲端網路從對等互連虛擬私人雲端網路匯出或匯入自訂路徑。
只有在對等互連網路也匯出自訂路徑時,您的網路才會匯入自訂路徑,而對等互連網路只有在匯入自訂路徑時才接收自訂路徑。
主控台
- 前往 Google Cloud 控制台的「VPC Network Peering」(VPC 網路對等互連) 頁面。
前往「VPC Network Peering」(VPC 網路對等互連) 頁面 - 選取要更新的對等互連連線。
- 點選「編輯」。
- 選取或取消選取 [Import custom routes] (匯入自訂路徑) 或 [Export custom routes] (匯出自訂路徑),以更新自訂路徑設定。
- 按一下 [儲存]。
gcloud
更新對等互連連線,變更自訂路徑的匯入或匯出設定。
gcloud compute networks peerings update [PEERING-NAME] \ --network=[MY-LOCAL-NETWORK] \ [--[no-]import-custom-routes] \ [--[no-]export-custom-routes]
授予 roles/servicenetworking.serviceAgent
角色
gcloud beta services identity create \
--service=servicenetworking.googleapis.com \
--project=project-id
gcloud projects add-iam-policy-binding project-id \
--member="service-account-prefix@service-networking.iam.gserviceaccount.com" \
--role="roles/servicenetworking.serviceAgent"