關於已發布的服務

本文將概略說明如何使用 Private Service Connect,向服務使用者提供服務。

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

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

服務消費者類型

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

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

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

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

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

網路位址轉譯 (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 位址用量。

  • 如果消費者使用連線傳播,連線傳播至的每個虛擬私有雲輪輻,以及每個端點,都會消耗額外的 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

服務附件只能有一個目標服務。不過,多個服務附件可以共用同一個目標服務。

服務附件可讓您控管已發布服務的存取權、查看連線,以及設定連線限制。詳情請參閱「控管已發布服務的存取權」一文。

連線狀態

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

DNS 設定

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

設定多個區域以進行容錯移轉

您可以建立下列設定,讓服務在多個區域提供服務。

製作人設定

  • 在每個區域部署服務。服務的每個區域執行個體都必須在區域負載平衡器上設定,支援後端存取
  • 建立服務連結,發布服務的每個區域執行個體。

消費者設定

這項設定支援自動跨區域容錯移轉。有了自動容錯移轉功能,如果某個地區的服務執行個體健康狀態不佳,取用者的負載平衡器就會停止將流量轉送至該服務,改為將流量轉送至替代地區中健康狀態良好的服務執行個體。

如要瞭解詳情,請參考下列資源:

服務消費者可透過全域外部應用程式負載平衡器存取網際網路,並將流量傳送至服務供應商的虛擬私有雲網路中的服務。由於服務部署在多個區域,因此消費者負載平衡器可將流量轉送至替代區域中運作正常的服務執行個體 (按一下可放大)。

IP 版本翻譯

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

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

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

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

支援後端

已發布服務的 Private Service Connect 後端需要兩個負載平衡器,分別是消費者負載平衡器和生產者負載平衡器。本節將摘要說明消費者和生產者使用後端存取已發布服務時可用的設定選項。

消費者設定

下表說明已發布服務的 Private Service Connect 後端支援哪些消費者負載平衡器,包括每個消費者負載平衡器可使用的後端服務通訊協定。消費者負載平衡器可以存取支援的生產者負載平衡器上託管的已發布服務。

消費者負載平衡器 通訊協定 IP 版本 跨區域容錯移轉

跨區域內部應用程式負載平衡器

  • HTTP
  • HTTPS
  • HTTP2
IPv4

跨區域內部 Proxy 網路負載平衡器

  • TCP
IPv4

全域外部應用程式負載平衡器

注意:系統不支援 Classic Application Load Balancer。

  • HTTP
  • HTTPS
  • HTTP2
IPv4

全域外部 Proxy 網路負載平衡器

如要將這個負載平衡器與 Private Service Connect NEG 建立關聯,請使用 Google Cloud CLI 或傳送 API 要求。

注意:系統不支援傳統 Proxy 網路負載平衡器。

  • TCP/SSL
IPv4

區域性外部應用程式負載平衡器

  • HTTP
  • HTTPS
  • HTTP2
IPv4

區域性外部 Proxy 網路負載平衡器

  • TCP
IPv4

區域性內部應用程式負載平衡器

  • HTTP
  • HTTPS
  • HTTP2
IPv4

區域性內部 Proxy 網路負載平衡器

  • TCP
IPv4

製作人設定

下表說明 Private Service Connect 後端支援的生產者負載平衡器設定,適用於已發布的服務。

製作人類型 生產端設定 (已發布的服務)
支援的製作人後端 轉送規則通訊協定 轉送規則通訊埠 PROXY 通訊協定 IP 版本 Private Service Connect 健康狀態支援
跨區域內部應用程式負載平衡器
  • GCE_VM_IP_PORT 區域性 NEG
  • 混合式 NEG
  • 無伺服器網路端點群組 (NEG)
  • Private Service Connect NEG
  • 執行個體群組
  • TCP
  • HTTP
  • HTTPS
  • HTTP/2
  • gRPC
支援單一、多個或所有通訊埠 IPv4
內部直通式網路負載平衡器
  • GCE_VM_IP 區域性 NEG
  • 執行個體群組
  • TCP
請參閱「供應商通訊埠設定 IPv4
區域性內部應用程式負載平衡器
  • GCE_VM_IP_PORT 區域性 NEG
  • 混合式 NEG
  • 無伺服器網路端點群組 (NEG)
  • Private Service Connect NEG
  • 執行個體群組
  • HTTP
  • HTTPS
  • HTTP/2
支援單一通訊埠 IPv4
區域性內部 Proxy 網路負載平衡器
  • GCE_VM_IP_PORT 區域性 NEG
  • 混合式 NEG
  • Private Service Connect NEG
  • 執行個體群組
  • TCP
支援單一通訊埠 IPv4
Secure Web Proxy
  • 不適用
  • 不適用
不適用 IPv4

供應商通訊埠設定

使用 Private Service Connect 發布內部直通式網路負載平衡器時,使用 Private Service Connect 後端存取服務的消費者需要知道與服務通訊時要使用的通訊埠。為生產者內部直通式網路負載平衡器建立轉送規則時,請注意下列事項:

  • 建議您向消費者說明生產者轉送規則中使用的連接埠,方便他們建立 NEG 時指定連接埠。
  • 如果消費者在建立 NEG 時未指定生產端通訊埠,系統會根據生產端轉送規則設定判斷生產端通訊埠:

    • 如果生產者轉送規則使用單一通訊埠,消費者後端也會使用相同通訊埠。
    • 如果生產者轉送規則使用多個通訊埠,則適用下列事項:

      • 如果包含通訊埠 443,消費者後端會使用通訊埠 443
      • 如果未加入通訊埠 443,消費者後端會使用清單中第一個通訊埠 (清單會先依字母順序排序)。舉例來說,如果您指定通訊埠 80 和通訊埠 1111,則消費者後端會使用通訊埠 1111
      • 變更生產者後端使用的連接埠可能會導致消費者服務中斷。

        舉例來說,假設您建立發布的服務,其轉送規則使用通訊埠 4438443,而後端 VM 會在通訊埠 4438443 上回應。當消費者後端連線至這項服務時,會使用通訊埠 443 進行通訊。

        如果將後端 VM 變更為僅在連接埠 8443 上回應,取用者後端就無法再連線至已發布的服務。

  • 如果生產端轉送規則使用所有通訊埠,服務取用端在建立 NEG 時「必須」指定生產端通訊埠。如果未指定連接埠,取用者後端會使用連接埠 1,但這無法運作。

共用虛擬私有雲

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

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

  • 供應商負載平衡器的轉送規則會與共用虛擬私有雲網路的 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 perimeter 保護。

查看消費者連線資訊

根據預設,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 通訊協定標頭。

如果消費者流量是透過傳播連線流動,則消費者的來源 IP 位址和 PSC 連線 ID 是指傳播的 Private Service Connect 端點。

為服務附件啟用 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 值。

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

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

您可從生產端服務連結取得獨立的 16 位元組 Private Service Connect 服務連結 ID (pscServiceAttachmentId) ID。 pscServiceAttachmentId 值是全域專屬 ID,可識別 Private Service Connect 服務連結。您可以使用 pscServiceAttachmentId 值進行顯示和偵錯。PROXY 通訊協定標頭不會包含這個值。

定價

如要瞭解 Private Service Connect 的定價,請參閱 VPC 定價頁面

配額

可存取生產者虛擬私有雲網路的 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。

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