注册外部直通式网络负载平衡器

本页介绍了如何配置外部直通式网络负载平衡器,以便其自动注册到 Service Directory 中。

创建负载均衡器时,您可以将其注册为所选的现有 Service Directory 命名空间和服务中的端点。然后,客户端应用可以使用 Service Directory(使用 HTTP 或 gRPC)来解析外部直通式网络负载平衡器服务的地址并直接连接到该服务。

限制

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 中的步骤创建命名空间和服务。

    Service Directory 命名空间和服务必须与您要创建的外部直通式网络负载平衡器转发规则位于同一项目和区域中。

  • 您必须已设置创建外部直通式网络负载平衡器转发规则所需的资源。

    如需了解如何创建外部直通式网络负载平衡器,请参阅设置外部直通式网络负载平衡器

设置转发规则以在 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-8080RULE-8081。如果您指定 --port=ALL,Service Directory 端点将使用端口 0 进行注册。如果您是外部直通式网络负载平衡器的所有者,则必须确保 API 调用方知道要连接到哪个端口。
  • 您无法使用公共 Service Directory API 修改或删除端点。只有在您删除转发规则后,端点才会自动删除。这意味着,在转发规则存在期间,您无法删除端点所在的服务和命名空间。
  • 系统不会对端点本身收费,但对端点的任何 API 调用都适用常规的价格详情。

如需确认端点已创建,请在 Service Directory 中解析服务。您应该会看到一个端点,其名称与指定端口号的转发规则的名称相同。

如需在 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 区域。此值应与您创建转发规则的区域相同。

清理

如需删除您创建的资源,请按照以下步骤操作。

  1. 如需删除转发规则,请运行 gcloud compute forwarding-rules delete 命令:

    gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
      --region=REGION
    

    替换以下内容:

    • FORWARDING_RULE_NAME:您创建的转发规则的名称
    • REGION:转发规则的区域

    如需了解详情,请参阅删除转发规则

    如需确认删除转发规则是否已自动从 Service Directory 中删除端点,请在 Service Directory 服务上运行 Verify the endpoint(验证端点)部分中所述的 gcloud service-directory services resolve 命令。

  2. 如需删除 Service Directory 命名空间和服务,请参阅删除资源

后续步骤

  • 如需简要了解 Service Directory,请参阅 Service Directory 概览
  • 如需了解您在使用 Service Directory 时可能会遇到的常见问题的解决方案,请参阅问题排查