本页介绍了如何配置内部直通式网络负载平衡器或内部应用负载平衡器(预览版),以便其自动注册到 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-8080
和RULE-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
如需删除转发规则,请运行
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 时可能会遇到的常见问题的解决方案,请参阅问题排查。