注册内部负载均衡器

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

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

限制

Service Directory 与内部负载均衡的集成存在以下限制:

  • 自动注册仅适用于内部负载平衡器和网络负载平衡器。您可以使用 GKE 集成注册 Google Kubernetes Engine 负载均衡服务。您可以通过调用 Service Directory API 注册全局负载平衡器以及 Google Kubernetes Engine 入口和网关。
  • 您只能在创建转发规则时使用自动注册。无法使用 Google Cloud CLI 更新为现有转发规则自动注册。
  • 您可以在共享 VPC 网络设置的宿主项目或服务项目中将内部负载平衡器注册到 Service Directory。不过,所有负载均衡组件和后端都必须位于同一项目中。如需了解详情,请参阅内部负载均衡限制
  • 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 compute forwarding-rules create FORWARDING_RULE_NAME \
    --region=REGION \
    --load-balancing-scheme=INTERNAL \
    --network=NETWORK_NAME \
    --subnet=SUBNET_NAME \
    --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:要在其中创建转发规则的区域
  • NETWORK_NAME:此转发规则适用的网络
  • SUBNET_NAME:此转发规则适用的子网
  • 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

注册内部应用负载平衡器

如需注册区域级内部应用负载均衡器,请运行 gcloud compute forwarding-rules create 命令并设置 service-directory-registration 标志:

gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \
    --region=REGION \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --network=NETWORK_NAME \
    --address=RESERVED_IP_ADDRESS \
    --target-https-proxy=PROXY_NAME \
    --target-https-proxy-region=PROXY_REGION \
    --ports=PORT_NUMBER \
    --service-directory-registration=SD_SERVICE_NAME

请替换以下内容:

  • FORWARDING_RULE_NAME:您要创建的转发规则的名称
  • REGION:要在其中创建转发规则的区域
  • NETWORK_NAME:此转发规则适用的网络。
  • RESERVED_IP_ADDRESS:转发规则传送的 IP 地址
  • PROXY_NAME:接收流量的目标代理
  • PROXY_REGION:运行代理的区域
  • PORT_NUMBER:以英文逗号分隔的端口列表
  • 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 中解析服务,请执行以下操作:

gcloud

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

可选:使用 Cloud DNS 创建 Service Directory 区域

您可以像解析任何其他 Service Directory 端点一样,使用 DNS 解析通过此集成注册的 Service Directory 端点。如需使用 Cloud DNS 创建 Service Directory 区域,请参阅配置 Service Directory 区域

如需检查您的区域是否设置正确,您可以对 Service Directory 区域运行 DNS 查询。如需了解如何使用 DNS 进行查询,请参阅使用 DNS 进行查询。如果您的区域配置正确,您应该会在命令输出中看到内部负载平衡器的 IP 地址。

清理

如需删除您创建的资源,请执行以下操作:

gcloud

  1. 如需删除转发规则,请运行 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 命令。

  2. 如需删除您创建的区域,请按照删除代管区域中的说明操作。

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

后续步骤

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