本页介绍了如何配置 内部直通式网络负载平衡器或 内部应用负载平衡器 (预览版),以便 在 Service Directory 中自动注册。
创建负载均衡器时,您可以将其注册为所选择的现有 Service Directory 命名空间和服务中的端点。然后,客户端应用可以通过 HTTP 或 gRPC 使用 Service Directory,和/或使用 DNS(如果您已创建Service Directory DNS区域)来解析内部负载均衡器服务的地址并直接连接到该服务。
限制
Service Directory 与内部负载均衡的集成具有以下限制:
- 自动注册仅适用于内部负载平衡器和网络负载平衡器。 您可以使用 GKE 集成注册 Google Kubernetes Engine 负载均衡服务。您可以通过调用 Service Directory API 注册 全局负载平衡器以及 Google Kubernetes Engine Ingress 和网关。
- 您只能在创建转发规则时使用自动注册。无法使用 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>)。例如,如果您 创建转发规则RULE并使用--port=8080,则会获得一个名为RULE-8080的端点。对于同一规则,如果您指定了两个端口--port=8080, 8081,则会获得两个端点,即RULE-8080和RULE-8081。如果您指定了--port=ALL,则 Service Directory 端点会注册端口0。如果您是内部负载均衡器的所有者,则必须确保 API 调用方知道要连接的端口。 - 您无法使用公共 Service Directory API 修改或删除端点。只有在您删除转发规则时,端点才会自动删除。这意味着,在转发规则存在期间,您无法删除端点所在的 Service 和命名空间。
- 端点本身不收费,但对端点的任何 API 调用都适用正常的定价详情。
如需确认端点已创建,请在 Service Directory 中解析服务。 您应该会看到一个端点,其名称与转发规则的名称相同,并包含指定的端口号。
如需在 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 区域
您可以使用 DNS 解析通过此集成注册的 Service Directory 端点,就像解析任何其他 Service Directory 端点一样。如需使用 Cloud DNS 创建 Service Directory 区域,请参阅配置 Service Directory 区域。
如需检查区域是否设置正确,您可以对 Service Directory 区域运行 DNS 查询。如需了解如何使用 DNS 进行查询,请参阅 使用 DNS 查询。如果您的区域配置正确,您应该会在命令输出中看到内部负载平衡器的 IP 地址。
清理
如需删除您创建的资源,请执行以下操作:
gcloud
如需删除转发规则,请运行
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 时可能会遇到的常见问题的解决方案,请参阅 问题排查。