我正在为由单体和微服务组成的 Web 应用程序实现 IaC。我想在我们所有的微服务前面放置一个内部 HTTP 负载均衡器,但还没有找到任何示例。我查看了Cloud Foundation Toolkit。这里的内部负载均衡器只支持 TCP/UDP 内部负载均衡器。谷歌的deploymentmanager-samples根本没有提到它!目前,似乎唯一的选择是从头开始构建 python 模板。
在我跳进那个兔子洞之前,想检查一下是否有任何工作样本或示例可用。
我正在为由单体和微服务组成的 Web 应用程序实现 IaC。我想在我们所有的微服务前面放置一个内部 HTTP 负载均衡器,但还没有找到任何示例。我查看了Cloud Foundation Toolkit。这里的内部负载均衡器只支持 TCP/UDP 内部负载均衡器。谷歌的deploymentmanager-samples根本没有提到它!目前,似乎唯一的选择是从头开始构建 python 模板。
在我跳进那个兔子洞之前,想检查一下是否有任何工作样本或示例可用。
根据一些谷歌文档,您只需要修改内部 TCP LB 模板中的一些值。
下面是内部 TCP LB 示例代码的 regionBackendService。
{
'name': loadbalancer_name,
'type': 'compute.v1.regionBackendService',
'properties': {
'region': properties['region'],
'network': properties['network'],
'healthChecks': ['$(ref.' + healthcheck_name + '.selfLink)'],
'backends': properties['instance-groups'],
'protocol': 'TCP',
'loadBalancingScheme': 'INTERNAL',
}
}
这是Google 文档compute.v1.regionBackendService
中的参考资料。
协议
可能的值为 HTTP、HTTPS、HTTP2、TCP、SSL、UDP 或 GRPC。取决于所选的负载均衡器或 Traffic Director 配置。有关详细信息,请参阅负载均衡器或 Traffic Director 的文档。
负载平衡方案
为内部 HTTP(S) 负载平衡选择 INTERNAL_MANAGED。
所以你需要修改'protocol':'TCP'
为'protocol':'HTTP'
orHTTPS
和'loadBalancingScheme': 'INTERNAL'
to 'loadBalancingScheme': 'INTERNAL_MANAGED'
。
下面是 TCP 内部 LB 代码的转发规则。
{
'name': forwardingrule_name,
'type': 'compute.v1.forwardingRule',
'properties': {
'ports': [80],
'network': properties['network'],
'subnetwork': properties['subnet'],
'region': properties['region'],
'backendService': '$(ref.' + loadbalancer_name + '.selfLink)',
'loadBalancingScheme': 'INTERNAL',
}
}
您也可以找到有关此资源的参考资料。
负载平衡方案
INTERNAL_MANAGED 用于: 内部 HTTP(S) 负载平衡
IP协议
内部 HTTP(S) 负载平衡:负载平衡方案为 INTERNAL_MANAGED,只有 TCP 有效。
因此,您需要将loadBalancingScheme
值从修改INTERNAL
为INTERNAL_MANAGED
。或者您可能需要将 IPProtocol 值添加到您的转发规则中。
最后,下面是 TCP 内部 LB 代码的健康检查。
{
'name': healthcheck_name,
'type': 'compute.v1.healthCheck',
'properties': {
'type': 'TCP',
'tcpHealthCheck': {
'port': 80
},
}
}
正如我在文档中发现的那样,对于 http(s) 内部 LB ,您必须使用“ regionhealthcheck ”而不是“healthcheck”。
所以你需要将资源类型修改为compute.v1.regionHealthChecks
我不完全确定我的描述,但是您可以通过参考 Google 文档和示例代码来创建自己的 HTTP(S) 内部 LB。