關於已發布的服務

本文將概略說明如何使用 Private Service Connect,讓服務消費者存取服務。

服務供應商可以使用 Private Service Connect,透過虛擬私有雲網路中的內部 IP 位址發布服務。服務消費者可透過虛擬私有雲網路中的內部 IP 位址,存取您發布的服務。

如要讓消費者使用服務,請建立一或多個專屬子網路。接著,建立參照這些子網路的服務附件。服務附件可以有不同的連線偏好設定

服務消費者類型

有兩種類型的消費者可以連線至 Private Service Connect 服務:

端點是根據轉送規則建立。

服務消費者可透過端點,將消費者虛擬私有雲網路中的流量傳送至服務供應商的虛擬私有雲網路中的服務 (按一下可放大)。

後端以負載平衡器為基礎。

使用全域外部應用程式負載平衡器的後端,可讓具備網際網路存取權的服務使用者,將流量傳送至服務供應商的虛擬私有雲網路中的服務 (按一下可放大)。

網路位址轉譯 (NAT) 子網路

Private Service Connect 服務連結會設定一或多個 NAT 子網路 (也稱為 Private Service Connect 子網路)。來自消費者 VPC 網路的封包會使用來源 NAT (SNAT) 進行轉譯,因此原始來源 IP 位址會轉換為生產者 VPC 網路中 NAT 子網路的來源 IP 位址。

服務附件可以有多個 NAT 子網路。您可以隨時在服務附件中新增其他 NAT 子網路,不會中斷流量。

雖然服務附件可以設定多個 NAT 子網路,但 NAT 子網路無法用於多個服務附件。

Private Service Connect NAT 子網路無法用於虛擬機器 (VM) 執行個體或轉送規則等資源。子網路僅用於為傳入的消費者連線 SNAT 提供 IP 位址。

網路位址轉譯 (NAT) 子網路大小

子網路大小決定了可連線至服務的使用者數量,如果 NAT 子網路中的所有 IP 位址都已用盡,任何額外的 Private Service Connect 連線都會失敗。請注意以下事項:

  • 每個連線至服務連結的端點或後端,都會耗用 NAT 子網路的一個 IP 位址。

    TCP 或 UDP 連線、用戶端或取用端虛擬私有雲網路的數量,不會影響 NAT 子網路的 IP 位址用量。

  • 如果消費者使用連線傳播,連線傳播至的每個虛擬私有雲 Spoke,每個端點都會消耗額外的 IP 位址。

    您可以設定傳播連線限制,控管建立的傳播連線數量。

  • 估算端點和後端所需的 IP 位址數量時,請將使用 Private Service Connect 多點存取的任何多租戶服務或消費者納入考量。

網路位址轉譯 (NAT) 子網路監控

為確保 Private Service Connect 連線不會因 NAT 子網路中沒有可用的 IP 位址而失敗,建議您採取下列做法:

  • 監控private_service_connect/producer/used_nat_ip_addresses 服務附件指標。 請確認使用的 NAT IP 位址數量未超過服務附件 NAT 子網路的容量。
  • 監控服務附件連線的連線狀態。如果連線狀態為「需要處理」,可能是因為附件的 NAT 子網路中沒有可用的 IP 位址。
  • 如果是多租戶服務,您可以透過連線限制,確保單一消費者不會耗盡服務附件 NAT 子網路的容量。

如有需要,隨時可將 NAT 子網路新增至服務附件,不會中斷流量。

網路位址轉譯 (NAT) 規格

設計要發布的服務時,請考量 Private Service Connect NAT 的下列特性:

  • UDP 對應閒置逾時時間為 30 秒,無法設定。

  • TCP 已建立連線閒置逾時為 20 分鐘,且無法設定。

    為避免用戶端連線逾時問題,請採取下列任一做法:

    • 確認所有連線時間都少於 20 分鐘。

    • 請確保傳送流量的頻率高於每 20 分鐘一次。您可以在應用程式中使用心跳或存活機制,也可以使用 TCP 存活機制。舉例來說,您可以在區域性內部應用程式負載平衡器或區域性內部 Proxy 網路負載平衡器的目標 Proxy 中設定存留時間。

  • 臨時 TCP 連線的閒置逾時為 30 秒,無法設定。

  • 任何 5 元組 (NAT 子網路來源 IP 位址和來源通訊埠,加上目的地通訊協定、IP 位址和目的地通訊埠) 必須經過兩分鐘的延遲,才能重複使用。

  • Private Service Connect 的 SNAT 不支援 IP 片段。

連線數上限

單一供應商 VM 最多可接受來自單一 Private Service Connect 消費者 (端點或後端) 的 64,512 個並行 TCP 連線和 64,512 個 UDP 連線。Private Service Connect 端點可接收的 TCP 和 UDP 連線總數沒有限制,這些連線會匯總所有生產者後端。用戶端 VM 啟動與 Private Service Connect 端點的 TCP 或 UDP 連線時,可以使用所有 65,536 個來源通訊埠。所有網路位址轉譯作業都會在生產主機上完成,因此不需要集中分配的 NAT 連接埠集區。

服務連結

服務供應商會透過服務連結公開服務。

  • 如要公開服務,服務供應商會建立參照目標服務的服務連結。目標服務可以是下列其中一項:

服務連結 URI 的格式如下: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

服務連結只能與單一目標服務建立關聯。您無法將多個服務附件與特定目標服務建立關聯。

連線偏好設定

每個服務連結都有連線偏好設定,可指定是否自動接受連線要求。可能的做法有以下三種:

  • 自動接受所有連線。服務附件會自動接受來自任何消費者的所有連入連線要求。如果機構政策禁止連入連線,系統就會覆寫自動接受設定。
  • 接受所選網路的連線。只有在服務連結的消費者接受清單中列出消費者虛擬私有雲網路時,服務連結才會接受連入連線要求。
  • 接受所選專案的連線。只有在服務連結的消費者接受清單中列出消費者專案時,服務連結才會接受連入連線要求。

建議您接受所選專案或網路的連線。如果您透過其他方式控管消費者存取權,並想啟用服務的寬鬆存取權,或許可以自動接受所有連線。

連線狀態

服務連結的連線狀態會說明連線的狀態。詳情請參閱「連線狀態」。

消費者接受和拒絕名單

「消費者接受清單」和「消費者拒絕清單」是服務附件的安全功能。服務供應商可透過接受和拒絕清單,指定哪些消費者可以建立 Private Service Connect 連線,存取他們的服務。消費者接受清單會指定是否接受連線,消費者拒絕清單則會指定是否拒絕連線。這兩份清單都可讓您依據連線資源的虛擬私有雲網路或專案指定消費者。如果將專案或網路同時新增至接受清單和拒絕清單,系統會拒絕來自該專案或網路的連線要求。系統不支援依資料夾指定消費者。

您可以使用消費者接受清單和消費者拒絕清單指定專案或虛擬私有雲網路,但不能同時指定兩者。您可以將清單從一種類型變更為另一種,而不會中斷連線,但必須在單一更新中進行變更。否則,部分連線可能會暫時變更為待處理狀態。

消費者清單可控管端點是否能連線至已發布的服務,但無法控管誰能將要求傳送至該端點。舉例來說,假設消費者有共用虛擬私有雲網路,並附加了兩個服務專案。如果已發布的服務在消費者接受清單中包含 service-project1,且在消費者拒絕清單中包含 service-project2,則適用下列情況:

  • service-project1 中的消費者可以建立端點,連線至已發布的服務。
  • service-project2 中的消費者無法建立連線至已發布服務的端點。
  • 如果沒有防火牆規則或政策禁止該流量,service-project2 中的用戶端可以將要求傳送至 service-project1 中的端點。

如要瞭解消費者接受清單如何與機構政策互動,請參閱消費者接受清單與機構政策的互動

消費者接受名單限制

消費者接受清單有連線限制。這些限制會設定服務附件可從指定消費者專案或虛擬私有雲網路接受的 Private Service Connect 端點連線總數。

生產者可以設定連線限制,避免個別消費者耗盡生產者虛擬私有雲網路中的 IP 位址或資源配額。每接受一個 Private Service Connect 連線,就會從消費者專案或虛擬私有雲網路的設定限制中扣除。您在建立更新消費者接受名單時,系統會設定限制。您可以說明服務附件時,查看服務附件的連線。

舉例來說,假設服務附件的消費者接受清單包含 project-1project-2,兩者連線數上限皆為一。專案 project-1 要求兩個連線,project-2 要求一個連線,project-3 則要求一個連線。由於「project-1」只能建立一個連線,因此系統會接受第一個連線,第二個連線則會維持待處理狀態。已接受「project-2」的連線要求,但「project-3」的連線要求仍待處理。如要接受來自 project-1 的第二個連線,請提高 project-1 的限制。如果將 project-3 新增至消費者接受清單,該連線就會從待處理狀態轉為已接受狀態。

連線協調

連線協調功能會判斷服務連結接受或拒絕清單的更新,是否會影響現有的 Private Service Connect 連線。啟用連線協調功能後,更新接受或拒絕清單可能會終止現有連線。先前遭到拒絕的連線可以接受。如果停用連線協調功能,更新接受或拒絕清單只會影響新的連線和待處理連線。

舉例來說,假設服務附件有多個來自 Project-A 的已接受連線。Project-A 位於服務附件的接受清單中。從接受清單中移除 Project-A,即可更新服務附件。

如果啟用連線協調,所有現有連線都會從 Project-A 轉換為 PENDING,這會終止兩個虛擬私有雲網路之間的網路連線,並立即停止網路流量。

如果停用連線協調功能,現有的連線不會受到影響。Project-A網路流量仍可透過現有的 Private Service Connect 連線流動。不過,系統會禁止建立任何新的 Private Service Connect 連線。

如要瞭解如何為新的服務附件設定連線對帳,請參閱「發布具有明確核准功能的服務」。

如要瞭解如何為現有服務附件設定連線調節,請參閱「設定連線調節」。

DNS 設定

如要瞭解已發布服務和連線至已發布服務的端點的 DNS 設定,請參閱「服務的 DNS 設定」。

IP 版本翻譯

對於連線至已發布服務 (服務連結) 的 Private Service Connect 端點,消費者轉送規則 IP 位址的 IP 版本會決定端點的 IP 版本,以及從端點傳出的流量。IP 位址可來自僅限 IPv4、僅限 IPv6 (搶先版) 或雙重堆疊子網路。端點的 IP 版本可以是 IPv4 或 IPv6,但不能同時是兩者。

如果是已發布的服務,服務附件的 IP 版本取決於相關聯轉送規則或安全網頁 Proxy 執行個體的 IP 位址。這個 IP 位址必須與服務附件 NAT 子網路的堆疊類型相容。NAT 子網路可以是僅限 IPv4 或雙重堆疊子網路。 如果 NAT 子網路是雙堆疊子網路,系統會使用 IPv4 或 IPv6 位址範圍,但不會同時使用兩者。Private Service Connect 不支援使用僅支援 IPv6 的子網路 (預先發布版) 做為 NAT 子網路。

Private Service Connect 不支援將 IPv4 端點連線至 IPv6 服務附件。在這種情況下,端點建立作業會失敗,並顯示下列錯誤訊息:

Private Service Connect forwarding rule with an IPv4 address cannot target an IPv6 service attachment.

以下是支援的設定可能組合:

  • 從 IPv4 端點到 IPv4 服務附件
  • 從 IPv6 端點到 IPv6 服務附件
  • IPv6 端點到 IPv4 服務附件

    在此設定中,Private Service Connect 會自動在兩個 IP 版本之間轉換。

如要建立 Private Service Connect 後端與服務連結之間的連線,消費者和生產者轉送規則都必須使用 IPv4。

功能和相容性

下表中的勾號表示支援該功能,沒有符號則表示不支援。

支援端點

本節將摘要說明消費者和生產者使用端點存取發布服務時可用的設定選項。

消費者設定

下表根據目標生產者類型,摘要列出支援的設定選項和功能,這些選項和功能適用於存取已發布服務的端點。

目標製作人 消費者設定 (端點)
全球消費者存取權 混合存取 自動設定 DNS
(僅限 IPv4)
虛擬私有雲網路對等互連存取權 Network Connectivity Center 連線傳播 (僅限 IPv4) IPv4 端點支援的目標服務 IPv6 端點支援的目標服務
跨區域內部應用程式負載平衡器 (預先發布版)
  • IPv4 服務
  • IPv4 服務
內部直通式網路負載平衡器 只有在負載平衡器啟用全域存取權時 (已知問題)
  • IPv4 服務
  • IPv4 服務
  • IPv6 服務
內部通訊協定轉送 (目標執行個體) 只有在供應商轉送規則啟用全域存取權時 (已知問題)
  • IPv4 服務
  • IPv4 服務
  • IPv6 服務
通訊埠對應服務 只有在生產端轉送規則啟用全域存取權時,才能執行這項操作
  • IPv4 服務
  • IPv4 服務
  • IPv6 服務
區域性內部應用程式負載平衡器 只有在建立服務連結前,先在負載平衡器上啟用全域存取權時,才能使用這項功能
  • IPv4 服務
  • IPv4 服務
區域性內部 Proxy 網路負載平衡器 只有在建立服務連結前,先在負載平衡器上啟用全域存取權時,才能使用這項功能
  • IPv4 服務
  • IPv4 服務
Secure Web Proxy
  • IPv4 服務
  • IPv4 服務

製作人設定

下表摘要說明端點存取的已發布服務支援的設定選項和功能。

製作人類型 生產端設定 (已發布的服務)
支援的製作人後端 PROXY 通訊協定 (僅限 TCP 流量) IP 版本
跨區域內部應用程式負載平衡器 (預先發布版)
  • GCE_VM_IP_PORT 區域性 NEG
  • 混合式 NEG
  • 無伺服器網路端點群組 (NEG)
  • Private Service Connect NEG
  • 執行個體群組
  • IPv4
內部直通式網路負載平衡器
  • GCE_VM_IP 區域性 NEG
  • 執行個體群組
  • IPv4
  • IPv6
內部通訊協定轉送 (目標執行個體)
  • 不適用
  • IPv4
  • IPv6
通訊埠對應服務
  • 通訊埠對應 NEG
  • IPv4
  • IPv6
區域性內部應用程式負載平衡器
  • GCE_VM_IP_PORT 區域性 NEG
  • 混合式 NEG
  • 無伺服器網路端點群組 (NEG)
  • Private Service Connect NEG
  • 執行個體群組
  • IPv4
區域性內部 Proxy 網路負載平衡器
  • GCE_VM_IP_PORT 區域性 NEG
  • 混合式 NEG
  • Private Service Connect NEG
  • 執行個體群組
  • IPv4
Secure Web Proxy
  • 不適用
  • IPv4

不同的負載平衡器支援不同的通訊埠設定;部分負載平衡器支援單一通訊埠,部分支援通訊埠範圍,部分則支援所有通訊埠。詳情請參閱「連接埠規格」。

共用虛擬私有雲

服務專案管理員可以在共用虛擬私有雲服務專案中建立服務附件,連線至共用虛擬私有雲網路中的資源。

設定與一般服務附件相同,但有以下例外狀況:

  • 供應商負載平衡器的轉送規則會與共用虛擬私有雲網路的 IP 位址建立關聯。轉送規則的子網路必須與服務專案共用。
  • 服務連結會使用共用虛擬私有雲網路中的 Private Service Connect 子網路。這個子網路必須與服務專案共用。

記錄

您可以在含有後端 VM 的子網路上啟用虛擬私有雲流量記錄。 記錄檔會顯示後端 VM 與 Private Service Connect 子網路中 IP 位址之間的流程。

VPC Service Controls

VPC Service Controls 和 Private Service Connect 彼此相容。如果部署 Private Service Connect 端點的 VPC 網路位於 VPC Service Controls 範圍內,該端點也會屬於同一個範圍。透過端點存取的任何支援 VPC Service Controls 的服務,都須遵守該 VPC Service Controls 範圍的政策。

建立端點時,消費者和生產端專案之間會進行控制平面 API 呼叫,以建立 Private Service Connect 連線。在不屬於同一個 VPC Service Controls 範圍的消費者和生產者專案之間建立 Private Service Connect 連線時,不需要使用輸出政策明確授權。透過端點與 VPC Service Controls 支援服務的通訊,會受到 VPC Service Controls 範圍保護。

查看消費者連線資訊

根據預設,Private Service Connect 會將消費者的來源 IP 位址轉換為服務供應商虛擬私有雲網路中其中一個 Private Service Connect 子網路的位址。如要查看消費者的原始來源 IP 位址,可以在發布服務時啟用 PROXY 通訊協定。Private Service Connect 支援 PROXY 通訊協定第 2 版。

並非所有服務都支援 PROXY 通訊協定。詳情請參閱「功能和相容性」。

如果啟用 PROXY 通訊協定,您可以從 PROXY 通訊協定標頭取得消費者的來源 IP 位址和 PSC 連線 ID (pscConnectionId)。

PROXY 通訊協定標頭的格式取決於消費者端點的 IP 版本。如果服務附件的負載平衡器有 IPv6 位址,消費者可以同時使用 IPv4 和 IPv6 位址連線。設定應用程式,接收並讀取要接收流量的 IP 版本所用的 PROXY 通訊協定標頭。

為服務附件啟用 Proxy 通訊協定後,這項變更只會套用至新連線。現有連線不含 PROXY 通訊協定標頭。

啟用 Proxy 通訊協定後,請參閱後端網頁伺服器軟體的說明文件,瞭解如何剖析及處理用戶端連線 TCP 酬載中的 Proxy 通訊協定標頭。如果服務附件已啟用 PROXY 通訊協定,但後端網路伺服器未設定處理 PROXY 通訊協定標頭,網路要求可能會格式錯誤。如果要求格式錯誤,伺服器就無法解讀要求。

Private Service Connect 連線 ID (pscConnectionId) 會以類型長度值 (TLV) 格式編碼至 PROXY 通訊協定標頭。

欄位 欄位長度 欄位值
類型 1 個位元組 0xE0 (PP2_TYPE_GCP)
長度 2 個位元組 0x8 (8 個位元組)
8 個位元組 網路順序的 8 位元組 pscConnectionId

您可以從取用端轉送規則生產端服務附件中,查看 8 位元組的 pscConnectionId 值。

在特定時間點,所有有效連線的 pscConnectionId 值都是全域不重複。不過,在下列情況下,pscConnectionId 可能會重複使用:

  • 在特定 VPC 網路中,如果您刪除端點 (轉送規則),並使用相同 IP 位址建立新端點,系統可能會使用相同的 pscConnectionId 值。

  • 如果您刪除含有端點 (轉送規則) 的虛擬私有雲網路,經過七天的等待期後,這些端點使用的 pscConnectionId 值可能會用於其他虛擬私有雲網路中的不同端點。

您可以使用 pscConnectionId 值進行偵錯,並追蹤封包來源。

您可從生產端服務連結取得另一個 16 位元組的 Private Service Connect 服務連結 ID (pscServiceAttachmentId) ID。pscServiceAttachmentId 值是全域專屬 ID,可識別 Private Service Connect 服務連結。您可以使用 pscServiceAttachmentId 值來查看及偵錯。這個值不會納入 PROXY 通訊協定標頭。

配額

可存取生產者虛擬私有雲網路的 Private Service Connect 端點和傳播連線總數,是由PSC ILB consumer forwarding rules per producer VPC network配額控管。

即使相關聯的服務連結遭到刪除,或設定為拒絕連線,端點仍會計入這項配額,直到遭到刪除為止。即使在 Network Connectivity Center 中樞上停用連線播送功能,或刪除播送連線的輪輻,只要相關聯的端點未刪除,播送的連線就會計入配額。

內部部署存取

Private Service Connect 服務是透過端點提供。您可以透過支援的已連線地端部署主機存取這些端點。詳情請參閱「透過地端部署主機存取端點」。

限制

發布的服務有下列限制:

  • 系統不支援設定 多個通訊協定的負載平衡器 (通訊協定設為 L3_DEFAULT)。
  • 封包鏡像無法鏡像處理 Private Service Connect 已發布服務的流量封包。
  • 如要建立指向轉送規則的服務附件,並用於內部通訊協定轉送,則必須使用 Google Cloud CLI 或 API。

如要瞭解相關問題和解決方法,請參閱已知問題