区域级内部代理网络负载均衡器是一种基于代理的区域第 4 层负载均衡器,可让您在只能由同一 VPC 网络中的客户端或连接到您的 VPC 网络的客户端访问的内部 IP 地址后面运行和扩缩 TCP 服务流量。
本指南介绍了如何设置具有代管式实例组 (MIG) 后端的区域级内部代理网络负载均衡器。
在开始之前,请先阅读区域级内部代理网络负载均衡器概览。
概览
在此示例中,我们将使用负载均衡器在 REGION_A
区域的两个可用区代管式实例组中的后端虚拟机之间分配 TCP 流量。在本示例中,服务是一组配置为在端口 110
做出响应的 Apache 服务器。许多浏览器都不允许使用端口 110
,因此我们在测试部分使用 curl
。
在此示例中,您可以配置以下部署:
区域级内部代理网络负载均衡器是区域级负载均衡器。所有负载均衡器组件(后端实例组、后端服务、目标代理和转发规则)必须位于同一区域。
权限
若要按照本指南中的说明进行操作,您必须能够创建实例以及修改项目中的网络。因此,您必须具有项目的 Owner 或 Editor 角色,或者必须拥有以下所有 Compute Engine IAM 角色:
任务 | 所需角色 |
---|---|
创建网络、子网和负载均衡器组件 | Network Admin |
添加和移除防火墙规则 | Security Admin |
创建实例 | Compute Instance Admin |
如需了解详情,请参阅以下指南:
配置网络和子网
您需要一个包含两个子网的 VPC 网络:一个用于负载均衡器的后端,另一个用于负载均衡器的代理。 区域级内部代理网络负载均衡器是区域级负载均衡器。对于 VPC 网络中的流量,如果其来源所在的子网与负载均衡器位于同一区域,那么该流量会被路由到负载均衡器。
本示例使用以下 VPC 网络、区域和子网:
网络:网络是名为
lb-network
的自定义模式 VPC 网络。后端子网:
REGION_A
区域中名为backend-subnet
的子网使用10.1.2.0/24
作为其主要 IP 地址范围。代理子网。
REGION_A
区域中名为proxy-only-subnet
的子网使用10.129.0.0/23
作为其主要 IP 地址范围。
为了演示全球访问权限,此示例还会在其他区域 (REGION_B) 和主要 IP 地址范围为 10.3.4.0/24
的子网中再创建一个测试客户端虚拟机。
创建网络和子网
控制台
在 Google Cloud 控制台中,进入 VPC 网络页面。
点击创建 VPC 网络。
对于名称,输入
lb-network
。在子网部分中,将子网创建模式设置为自定义。
为负载均衡器的后端创建子网。在新子网部分中,输入以下信息:
- 名称:
backend-subnet
- 区域:
REGION_A
- IP 地址范围:
10.1.2.0/24
- 名称:
点击完成。
点击添加子网。
创建一个子网来展示全球访问权限。在新子网部分中,输入以下信息:
- 名称:
test-global-access-subnet
- 区域:
REGION_B
- IP 地址范围:
10.3.4.0/24
- 名称:
点击完成。
点击创建。
gcloud
使用
gcloud compute networks create
命令创建自定义 VPC 网络:gcloud compute networks create lb-network --subnet-mode=custom
使用
gcloud compute networks subnets create
命令在REGION_A
区域的lb-network
网络中创建子网:gcloud compute networks subnets create backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=REGION_A
将 REGION_A 替换为目标 Google Cloud 区域的名称。
使用
gcloud compute networks subnets create
命令在REGION_B
区域的lb-network
网络中创建子网:gcloud compute networks subnets create test-global-access-subnet \ --network=lb-network \ --range=10.3.4.0/24 \ --region=REGION_B
将 REGION_B 替换为您要在其中创建第二个子网以测试全球访问权限的 Google Cloud 区域的名称。
创建代理专用子网
代理专用子网提供了一组 IP 地址,供 Google 用于代表您运行 Envoy 代理。代理会终结来自客户端的连接并创建与后端的新连接。
此代理专用子网用于 lb-network
VPC 网络的 REGION_A
区域中所有基于 Envoy 的负载均衡器。
控制台
如果您使用的是 Google Cloud 控制台,则可以稍后在负载均衡页面上创建代理专用子网。
如需立即创建代理专用子网,请按以下步骤操作:
- 在 Google Cloud 控制台中,转到 VPC 网络页面。
转到“VPC 网络” - 点击共享 VPC 网络的名称:
lb-network
。 - 点击添加子网。
- 对于名称,输入
proxy-only-subnet
。 - 对于区域,请选择
REGION_A
。 - 将用途设置为区域级代管式代理。
- 对于 IP 地址范围,输入
10.129.0.0/23
。 - 点击添加。
gcloud
使用 gcloud compute networks subnets
create
命令创建代理专用子网。
gcloud compute networks subnets create proxy-only-subnet \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION_A \ --network=lb-network \ --range=10.129.0.0/23
创建防火墙规则
此示例需要以下防火墙规则:
fw-allow-ssh
。适用于负载均衡实例的入站流量规则,该规则允许从任何地址到 TCP 端口22
的传入 SSH 连接。您可以为此规则选择限制性更高的来源 IP 地址范围;例如,您可以仅指定要从中启动 SSH 会话的系统的 IP 地址范围。此示例使用目标标记allow-ssh
。fw-allow-health-check
。适用于负载均衡实例的入站流量规则,该规则允许来自 Google Cloud 健康检查系统(130.211.0.0/22
和35.191.0.0/16
)的所有 TCP 流量。此示例使用目标标记allow-health-check
。fw-allow-proxy-only-subnet
。一种入站流量规则,允许来自代理专用子网的连接到达后端。
如果不使用上述防火墙规则,则默认拒绝入站规则会阻止传入后端实例的流量。
目标标记定义了后端实例。没有目标标记,防火墙规则将应用于 VPC 网络中的所有后端实例。创建后端虚拟机时,请务必包括指定的目标标记,如创建代管实例组中所示。
控制台
- 在 Google Cloud 控制台中,转到防火墙页面。
前往“防火墙政策” - 点击创建防火墙规则,以创建允许传入 SSH 连接的规则:
- 名称:
fw-allow-ssh
- 网络:
lb-network
- 流量方向:入站
- 对匹配项执行的操作:允许
- 目标:指定的目标标记
- 目标标记:
allow-ssh
- 来源过滤条件:IPv4 范围
- 来源 IPv4 范围:
0.0.0.0/0
- 协议和端口:
- 选择指定的协议和端口。
- 选中 TCP 复选框,然后输入
22
作为端口号。
- 名称:
- 点击创建。
- 再次点击创建防火墙规则,创建允许 Google Cloud 健康检查的规则:
- 名称:
fw-allow-health-check
- 网络:
lb-network
- 流量方向:入站
- 对匹配项执行的操作:允许
- 目标:指定的目标标记
- 目标标记:
allow-health-check
- 来源过滤条件:IPv4 范围
- 来源 IPv4 范围:
130.211.0.0/22
和35.191.0.0/16
- 协议和端口:
- 选择指定的协议和端口。
- 选中 TCP 复选框,然后输入
80
作为端口号。
最佳实践是将此规则限制为仅使用与健康检查所使用的协议和端口匹配的协议和端口。如果您使用tcp:80
协议和端口,则 Google Cloud 可以使用 HTTP 通过端口80
联系您的虚拟机,但无法使用 HTTPS 通过端口443
联系这些虚拟机。
- 名称:
- 点击创建。
- 第三次点击创建防火墙规则,以创建允许负载均衡器的代理服务器连接后端的规则:
- 名称:
fw-allow-proxy-only-subnet
- 网络:
lb-network
- 流量方向:入站
- 对匹配项执行的操作:允许
- 目标:指定的目标标记
- 目标标记:
allow-proxy-only-subnet
- 来源过滤条件:IPv4 范围
- 来源 IPv4 范围:
10.129.0.0/23
- 协议和端口:
- 选择指定的协议和端口。
- 选中 TCP 复选框,然后输入
80
作为端口号。
- 名称:
- 点击创建。
gcloud
创建
fw-allow-ssh
防火墙规则,允许通过 SSH 连接到网络标记为allow-ssh
的虚拟机。如果省略source-ranges
,Google Cloud 会将规则解释为表示所有来源。gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
创建
fw-allow-health-check
规则以允许 Google Cloud 健康检查。本示例允许来自健康检查探测工具的所有 TCP 流量;但是,您可以根据自己的需求配置较小范围的端口集。gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
创建
fw-allow-proxy-only-subnet
规则以允许该区域的 Envoy 代理连接到您的后端。将--source-ranges
设置为该代理专用子网的分配范围,在此示例中为10.129.0.0/23
。gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.129.0.0/23 \ --target-tags=allow-proxy-only-subnet \ --rules=tcp:80
预留负载均衡器的 IP 地址
如需为负载均衡器预留静态内部 IP 地址,请参阅预留新的静态内部 IPv4 或 IPv6 地址。
创建代管式实例组
本部分介绍如何在 REGION_A
区域中为负载均衡器创建两个代管式实例组 (MIG) 后端。MIG 为此示例区域级内部代理网络负载均衡器提供运行后端 Apache 服务器的虚拟机实例。通常,区域级内部代理网络负载均衡器不用于 HTTP 流量,但 Apache 是一种常用软件,易于设置以进行测试。
控制台
创建实例模板。在 Google Cloud 控制台中,转到实例模板页面。
- 点击创建实例模板。
- 对于名称,输入
int-tcp-proxy-backend-template
。 - 确保启动磁盘已设置为 Debian 映像,例如 Debian GNU/Linux 10 (stretch)。本文中的说明使用仅 Debian 支持的命令,例如
apt-get
。 - 点击高级选项。
- 点击网络并配置以下字段:
- 在网络标记字段中,输入
allow-ssh
、allow-health-check
和allow-proxy-only-subnet
。 - 对于网络接口,请选择以下内容:
- 网络:
lb-network
- 子网:
backend-subnet
- 网络:
- 在网络标记字段中,输入
点击管理。将以下脚本输入启动脚本字段。
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
点击创建。
创建代管式实例组。在 Google Cloud 控制台中,转到实例组页面。
- 点击创建实例组。
- 选择新的代管式实例组(无状态)。如需了解详情,请参阅无状态或有状态 MIG。
- 对于名称,输入
mig-a
。 - 在位置下方,选择单个可用区。
- 对于区域,选择
REGION_A
。 - 对于可用区,选择
ZONE_A1
。 - 在实例模板下,选择
int-tcp-proxy-backend-template
。 指定要在组中创建的实例数。
对于此示例,请在自动扩缩下指定以下选项:
- 对于自动扩缩模式,请选择
Off:do not autoscale
。 - 对于实例数上限,请输入
2
。
- 对于自动扩缩模式,请选择
在端口映射部分,点击添加端口。
- 在端口名称部分,输入
tcp80
。 - 在端口号部分,输入
80
。
- 在端口名称部分,输入
点击创建。
重复第 2 步,使用以下设置创建第二个代管式实例组:
- 名称:
mig-c
- 可用区:
ZONE_A2
让所有其他设置保持不变。
- 名称:
gcloud
本指南中的 gcloud
说明假定您使用的是 Cloud Shell 或安装了 bash 的其他环境。
使用
gcloud compute instance-templates create
命令创建含有 HTTP 服务器的虚拟机实例模板。gcloud compute instance-templates create int-tcp-proxy-backend-template \ --region=REGION_A \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --image-family=debian-10 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
在
ZONE_A1
可用区中创建一个代管式实例组。gcloud compute instance-groups managed create mig-a \ --zone=ZONE_A1 \ --size=2 \ --template=int-tcp-proxy-backend-template
将 ZONE_A1 替换为目标 Google Cloud 区域中的可用区的名称。
在
ZONE_A2
可用区中创建一个代管式实例组。gcloud compute instance-groups managed create mig-c \ --zone=ZONE_A2 \ --size=2 \ --template=int-tcp-proxy-backend-template
将 ZONE_A2 替换为目标 Google Cloud 区域中的另一个可用区的名称。
配置负载平衡器
控制台
开始配置
在 Google Cloud 控制台中,转到负载均衡页面。
- 点击创建负载均衡器。
- 对于负载均衡器的类型,选择网络负载均衡器 (TCP/UDP/SSL),然后点击下一步。
- 对于代理或直通,选择代理负载均衡器,然后点击下一步。
- 在公共或内部字段中,选择内部,然后点击下一步。
- 在跨区域或单区域部署字段中,选择最适合区域级工作负载,然后点击下一步。
- 点击配置。
基本配置
- 对于名称,输入
my-int-tcp-lb
。 - 对于区域,请选择
REGION_A
。 - 对于网络,请选择
lb-network
。
预留代理专用子网
如需预留代理专用子网,请执行以下操作:
- 点击预留子网。
- 对于名称,输入
proxy-only-subnet
。 - 对于 IP 地址范围,输入
10.129.0.0/23
。 - 点击添加。
后端配置
- 点击后端配置。
- 对于后端类型,选择实例组。
- 对于 Protocol(协议),选择 TCP。
- 对于已命名端口,输入
tcp80
。 - 配置第一个后端:
- 在新后端下,选择实例组
mig-a
。 - 在端口号部分,输入
80
。 - 保留其余的默认值,然后点击完成。
- 在新后端下,选择实例组
- 配置第二个后端:
- 点击添加后端。
- 在新后端下,选择实例组
mig-c
。 - 在端口号部分,输入
80
。 - 保留其余的默认值,然后点击完成。
- 配置健康检查:
- 在健康检查中,选择创建健康检查。
- 将健康检查的名称设置为
tcp-health-check
。 - 对于 Protocol(协议),选择 TCP。
- 将端口设置为
80
。
- 保留其余的默认值,然后点击保存。
- 在 Google Cloud 控制台中,验证后端配置旁边显示了对勾标记。如果没有显示对勾标记,请仔细检查您是否已完成所有步骤。
前端配置
- 点击前端配置。
- 对于名称,输入
int-tcp-forwarding-rule
。 - 对于子网,选择 backend-subnet。
- 对于 IP 地址,选择之前预留的 IP 地址:LB_IP_ADDRESS
- 对于端口号,输入
110
。转发规则仅转发具有匹配目标端口的数据包。 - 在此示例中,请勿启用代理协议,因为它不适用于 Apache HTTP Server 软件。如需了解详情,请参阅代理协议。
- 点击完成。
- 在 Google Cloud 控制台中,验证前端配置旁边显示了对勾标记。如果没有显示对勾标记,请仔细检查您是否已完成上述所有步骤。
检查并最终确定
- 点击检查并最终确定。
- 查看负载均衡器配置设置。
- 可选:点击等效代码以查看将用于创建负载均衡器的 REST API 请求。
- 点击创建。
gcloud
创建区域级健康检查。
gcloud compute health-checks create tcp tcp-health-check \ --region=REGION_A \ --use-serving-port
创建后端服务。
gcloud compute backend-services create internal-tcp-proxy-bs \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --region=REGION_A \ --health-checks=tcp-health-check \ --health-checks-region=REGION_A
将实例组添加到后端服务。
gcloud compute backend-services add-backend internal-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-a \ --instance-group-zone=ZONE_A1 \ --balancing-mode=UTILIZATION \ --max-utilization=0.8
gcloud compute backend-services add-backend internal-tcp-proxy-bs \ --region=REGION_A \ --instance-group=mig-c \ --instance-group-zone=ZONE_A2 \ --balancing-mode=UTILIZATION \ --max-utilization=0.8
创建内部目标 TCP 代理。
gcloud compute target-tcp-proxies create int-tcp-target-proxy \ --backend-service=internal-tcp-proxy-bs \ --proxy-header=NONE \ --region=REGION_A
如果您要开启代理标头,请将其设置为
PROXY_V1
,而不是NONE
。 在此示例中,请勿启用代理协议,因为它不适用于 Apache HTTP Server 软件。如需了解详情,请参阅代理协议。创建转发规则。 对于
--ports
,请指定 1-65535 范围内的单个端口号。此示例使用端口110
。转发规则仅转发具有匹配目标端口的数据包。gcloud compute forwarding-rules create int-tcp-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --region=REGION_A \ --target-tcp-proxy=int-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A \ --address=int-tcp-ip-address \ --ports=110
测试负载均衡器
如需测试负载均衡器,请在负载均衡器所在的区域中创建客户端虚拟机。然后,将流量从客户端发送到负载均衡器。
创建客户端虚拟机
在负载均衡器所在的区域中创建客户端虚拟机 (client-vm
)。
控制台
在 Google Cloud 控制台中,转到虚拟机实例页面。
点击创建实例。
将名称设置为
client-vm
。将地区设置为
ZONE_A1
。点击高级选项。
点击网络并配置以下字段:
- 对于网络标记,请输入
allow-ssh
。 - 对于网络接口,请选择以下内容:
- 网络:
lb-network
- 子网:
backend-subnet
- 网络:
- 对于网络标记,请输入
点击创建。
gcloud
客户端虚拟机必须与负载均衡器位于同一 VPC 网络和区域中。它无需位于同一子网或可用区中。客户端使用与后端虚拟机相同的子网。
gcloud compute instances create client-vm \ --zone=ZONE_A1 \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=backend-subnet
将流量发送到负载均衡器
现在您已经配置了负载均衡器,接下来可以测试向负载均衡器的 IP 地址发送流量。
使用 SSH 连接到客户端实例。
gcloud compute ssh client-vm \ --zone=ZONE_A1
验证负载均衡器是否按预期处理后端主机名。
使用
compute addresses describe
命令查看负载均衡器的 IP 地址:gcloud compute addresses describe int-tcp-ip-address \ --region=REGION_A
记下 IP 地址。
将流量发送到负载均衡器。将 IP_ADDRESS 替换为负载均衡器的 IP 地址。
curl IP_ADDRESS:110
其他配置选项
本部分对配置示例进行了扩展,以提供一些额外的替代配置选项。所有任务均为可选任务。您可以按任意顺序执行这些任务。
启用全球访问权限
您可以为负载均衡器启用全球访问权限,以使其可供所有区域的客户端访问。示例负载均衡器的后端仍必须位于一个区域 (REGION_A
) 中。
您不能修改现有区域转发规则来启用全球访问权限。为此,您必须创建一个新的转发规则。此外,启用全球访问权限的转发规则创建后,便无法修改。如需停用全球访问权限,您必须创建新的区域访问权限转发规则,并删除以前的全球访问权限转发规则。
如需配置全球访问权限,请更改以下配置。
控制台
为负载均衡器创建新的转发规则:
在 Google Cloud 控制台中,进入负载均衡页面。
在名称列中,点击您的负载均衡器。
点击前端配置。
点击添加前端 IP 和端口。
输入新转发规则的名称和子网详细信息。
对于子网,选择 backend-subnet。
在 IP 地址部分,您可以选择与现有转发规则相同的 IP 地址、预留新的 IP 地址,或使用临时 IP 地址。只有在创建 IP 地址时将 IP 地址
--purpose
标志设置为SHARED_LOADBALANCER_VIP
后,才能在多个转发规则之间共享相同的 IP 地址。在端口号部分,输入
110
。在全球访问权限部分,选择启用。
点击完成。
点击更新。
gcloud
使用
--allow-global-access
标志为负载均衡器创建新的转发规则。gcloud compute forwarding-rules create int-tcp-forwarding-rule-global-access \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --region=REGION_A \ --target-tcp-proxy=int-tcp-target-proxy \ --target-tcp-proxy-region=REGION_A \ --address=int-tcp-ip-address \ --ports=110 \ --allow-global-access
您可以使用
gcloud compute forwarding-rules describe
命令来确定转发规则是否启用了全球访问权限。例如:gcloud compute forwarding-rules describe int-tcp-forwarding-rule-global-access \ --region=REGION_A \ --format="get(name,region,allowGlobalAccess)"
启用全球访问权限后,在输出中转发规则的名称和区域之后会出现
True
一词。
创建客户端虚拟机以测试全球访问权限
控制台
在 Google Cloud 控制台中,转到虚拟机实例页面。
点击创建实例。
将名称设置为
test-global-access-vm
。将地区设置为
ZONE_B1
。点击高级选项。
点击网络并配置以下字段:
- 对于网络标记,请输入
allow-ssh
。 - 对于网络接口,请选择以下内容:
- 网络:
lb-network
- 子网:
test-global-access-subnet
- 网络:
- 对于网络标记,请输入
点击创建。
gcloud
在 ZONE_B1
可用区中创建客户端虚拟机。
gcloud compute instances create test-global-access-vm \ --zone=ZONE_B1 \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=test-global-access-subnet
将 ZONE_B1 替换为 REGION_B 区域中的可用区的名称。
连接到客户端虚拟机并测试连接
使用
ssh
连接到客户端实例:gcloud compute ssh test-global-access-vm \ --zone=ZONE_B1
使用
gcloud compute addresses describe
命令获取负载均衡器的 IP 地址:gcloud compute addresses describe int-tcp-ip-address \ --region=REGION_A
记下 IP 地址。
将流量发送到负载均衡器;将 IP_ADDRESS 替换为负载均衡器的 IP 地址:
curl IP_ADDRESS:110
用于保留客户端连接信息的 PROXY 协议
代理网络负载均衡器会终结来自客户端的 TCP 连接,并创建与实例的新连接。默认情况下,系统不会保留原始客户端 IP 地址和端口信息。
如需保留原始连接信息并将其发送到实例,请启用 PROXY 协议版本 1。此协议将包含来源 IP 地址、目标 IP 地址和端口号的附加标头作为请求的一部分发送给实例。
请确保代理网络负载均衡器的后端实例运行的是支持 PROXY 协议标头的服务器。如果服务器未配置为支持 PROXY 协议标头,则后端实例将返回空响应。
如果您为用户流量设置了 PROXY 协议,则还可以为健康检查设置此协议。如果您检查健康状况并在同一端口上传送内容,请将健康检查的 --proxy-header
设置为与您的负载均衡器设置相匹配。
PROXY 协议标头通常是一行用户可读的文本,格式如下:
PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n
以下示例显示了 PROXY 协议:
PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n
在上面的示例中,客户端 IP 为 192.0.2.1
,负载均衡 IP 为 198.51.100.1
,客户端端口为 15221
,目标端口为 110
。
如果客户端 IP 未知,则负载均衡器会生成如下格式的 PROXY 协议标头:
PROXY UNKNOWN\r\n
更新目标代理的 PROXY 协议标头
您无法更新现有目标代理中的 PROXY 协议标头。您必须使用 PROXY 协议标头的所需设置创建新的目标代理。请按照以下步骤使用所需设置创建新的前端:
控制台
在 Google Cloud 控制台中,转到负载均衡页面。
- 点击要修改的负载均衡器的名称。
- 点击负载均衡器对应的 修改。
- 点击前端配置。
- 删除旧的前端 IP 和端口。
- 点击添加前端 IP 和端口。
- 对于名称,输入
int-tcp-forwarding-rule
。 - 对于子网,选择 backend-subnet。
- 在 IP 地址部分,选择之前预留的 IP 地址:LB_IP_ADDRESS
- 对于端口号,输入
110
。转发规则仅转发具有匹配目标端口的数据包。 - 将代理协议字段的值更改为开启。
- 点击完成。
- 对于名称,输入
- 点击更新以保存更改。
gcloud
在以下命令中,修改
--proxy-header
字段并将其设置为NONE
或PROXY_V1
,具体取决于您的要求。gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \ --backend-service=BACKEND_SERVICE \ --proxy-header=[NONE | PROXY_V1] \ --region=REGION
删除现有的转发规则。
gcloud compute forwarding-rules delete int-tcp-forwarding-rule \ --region=REGION
创建新的转发规则并将其与目标代理关联。
gcloud compute forwarding-rules create int-tcp-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --region=REGION \ --target-tcp-proxy=TARGET_PROXY_NAME \ --target-tcp-proxy-region=REGION \ --address=LB_IP_ADDRESS \ --ports=110
启用会话亲和性
示例配置创建的后端服务没有会话亲和性。
以下流程介绍了如何为示例区域级内部代理网络负载均衡器更新后端服务,以便后端服务使用客户端 IP 亲和性或生成的 Cookie 亲和性。
启用客户端 IP 亲和性后,负载均衡器会根据使用客户端 IP 地址和负载均衡器 IP 地址(内部转发规则的内部 IP 地址)创建的哈希,将特定客户端的请求定向到同一后端虚拟机。
控制台
如需启用客户端 IP 地址会话亲和性,请执行以下操作:
- 在 Google Cloud 控制台中,进入负载均衡页面。
进入“负载均衡” - 点击后端。
- 点击 internal-tcp-proxy-bs(您为此示例创建的后端服务的名称),然后点击修改。
- 在后端服务详情页面上,点击高级配置。
- 在会话亲和性下,从菜单中选择客户端 IP。
- 点击更新。
gcloud
使用以下 gcloud 命令更新 internal-tcp-proxy-bs
后端服务,并指定客户端 IP 会话亲和性:
gcloud compute backend-services update internal-tcp-proxy-bs \ --region=REGION_A \ --session-affinity=CLIENT_IP
启用连接排空
您可以在后端服务上启用连接排空,以确保在终止、手动移除或由自动扩缩程序移除正在处理流量的实例时,对用户造成的干扰最小。如需详细了解连接排空,请参阅启用连接排空文档。
后续步骤
- 如需了解区域级内部代理网络负载均衡器的工作原理,请参阅区域级内部代理网络负载均衡器概览。
- 如需为区域级内部代理网络负载均衡器设置监控功能,请参阅使用监控功能。
- 清理负载均衡器设置。