本頁面提供如何設定外部直通式網路負載平衡器的相關資訊,讓這項服務自動註冊至服務目錄。
建立負載平衡器時,您可以將其註冊為現有 Service Directory 命名空間和所選服務中的端點。接著,用戶端應用程式可以使用服務目錄 (使用 HTTP 或 gRPC) 解析外部直通 Network Load Balancer 服務的地址,並直接連線。
限制
Service Directory 與外部直通式網路負載平衡器整合時,會受到下列限制:
- 自動註冊功能僅支援外部第 4 層負載平衡器。您可以使用 GKE 整合功能註冊 Google Kubernetes Engine 負載平衡服務。您可以呼叫 Service Directory API,註冊其他外部負載平衡器、全域負載平衡器,以及 Google Kubernetes Engine 入口和閘道。
- 您只能在建立轉送規則時使用自動註冊功能。您無法使用 Google Cloud CLI 更新現有轉送規則,以便自動註冊。
- Service Directory 不會提供連線功能,也就是說,雖然 Service Directory 會儲存外部直通網路負載平衡器的虛擬 IP 位址,但在 Service Directory 中查詢外部直通網路負載平衡器,並不保證您可以連線至虛擬 IP 位址。
事前準備
這些操作說明需要以下條件:
您必須已建立 Service Directory 命名空間和服務。如果沒有,請按照「設定服務目錄」一文的程序建立命名空間和服務。
服務目錄命名空間和服務必須與您要建立的外部直通式網路負載平衡器轉送規則位於相同專案和地區。
您必須先設定必要資源,才能建立外部直通式網路負載平衡器轉送規則。
如要瞭解如何建立外部直通式網路負載平衡器,請參閱「設定外部直通式網路負載平衡器」。
設定轉送規則,在 Service Directory 中註冊外部直通式網路負載平衡器
您必須設定轉送規則,才能在服務目錄中註冊外部直通式網路負載平衡器。如要註冊外部直通式網路負載平衡器,請參閱下一個章節。
註冊外部直通式網路負載平衡器
如要註冊外部直通式網路負載平衡器,請執行 gcloud compute forwarding-rules
create
指令並設定 service-directory-registration
標記:
gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \ --region=REGION \ --load-balancing-scheme=EXTERNAL \ --address=RESERVED_IP_ADDRESS \ --ip-protocol=PROTOCOL_TYPE \ --ports=PORT_NUMBER \ --backend-service=BACKEND_SERVICE_NAME \ --backend-service-region=REGION \ --service-directory-registration=SD_SERVICE_NAME
更改下列內容:
FORWARDING_RULE_NAME
:要建立的轉送規則名稱REGION
:建立轉送規則的區域RESERVED_IP_ADDRESS
:轉送規則提供的 IP 位址PROTOCOL_TYPE
:規則要提供的 IP 通訊協定PORT_NUMBER
:以半形逗號分隔的通訊埠清單BACKEND_SERVICE_NAME
:接收流量的目標後端服務SD_SERVICE_NAME
:您要註冊端點的 Service Directory 服務完整名稱。此服務必須與要建立的轉送規則位於相同專案和區域。例如:projects/PROJECT
/locations/REGION
/namespaces/NAMESPACE_NAME
/services/SERVICE_NAME
。
驗證端點
註冊外部直通式網路負載平衡器時建立的 Service Directory 端點具有下列特性:
- 端點的名稱與轉送規則的名稱相同,但會加上指定的通訊埠號碼 (
<forwarding rule name>-<port>
)。舉例來說,如果您使用--port=8080
建立轉送規則RULE
,就會取得名為RULE-8080
的端點。同樣的規則,如果您指定兩個通訊埠--port=8080, 8081
,就會取得兩個端點RULE-8080
和RULE-8081
。如果您指定--port=ALL
,Service Directory 端點會使用0
通訊埠註冊。如果您是外部直通式網路負載平衡器的擁有者,請務必確保 API 呼叫端知道要連線的通訊埠。 - 您無法使用公開的 Service Directory API 修改或刪除端點。只有在您刪除轉送規則時,系統才會自動刪除端點。也就是說,在轉送規則存在的情況下,您無法刪除端點所在的服務和命名空間。
- 系統不會針對端點本身收費,但會針對端點的任何 API 呼叫收取一般價格。
如要確認端點已建立,請在 Service Directory 中解析服務。您應該會看到端點,其名稱與指定通訊埠編號的轉送規則名稱相同。
如要解析服務目錄中的服務,請執行 gcloud service-directory
services resolve
指令:
gcloud service-directory services resolve SD_SERVICE_NAME \ --namespace=SD_NAMESPACE_NAME \ --location=REGION
更改下列內容:
SD_SERVICE_NAME
:要解析的 Service Directory 服務名稱。必須位於 Service Directory 命名空間名稱中。SD_NAMESPACE_NAME
:您為包含服務的命名空間指定的名稱。REGION
:包含命名空間的 Google Cloud 區域。這個地區應與您建立轉送規則的地區相同。
清除所用資源
如要刪除您建立的資源,請按照下列步驟操作。
如要刪除轉送規則,請執行
gcloud compute forwarding-rules delete
指令:gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \ --region=REGION
更改下列內容:
FORWARDING_RULE_NAME
:您建立的轉送規則名稱REGION
:轉送規則的區域
詳情請參閱「刪除轉送規則」。
如要確認刪除轉送規則後,Service Directory 是否已自動刪除端點,請在 Service Directory 服務中執行「驗證端點」一節所述的
gcloud service-directory services resolve
指令。如要刪除 Service Directory 命名空間和服務,請參閱「刪除資源」。
後續步驟
- 如要瞭解 Service Directory 的總覽,請參閱 Service Directory 總覽。
- 如要找出使用 Service Directory 時可能遇到的常見問題解決方案,請參閱疑難排解。