1

我正在为由单体和微服务组成的 Web 应用程序实现 IaC。我想在我们所有的微服务前面放置一个内部 HTTP 负载均衡器,但还没有找到任何示例。我查看了Cloud Foundation Toolkit。这里的内部负载均衡器只支持 TCP/UDP 内部负载均衡器。谷歌的deploymentmanager-samples根本没有提到它!目前,似乎唯一的选择是从头开始构建 python 模板。

在我跳进那个兔子洞之前,想检查一下是否有任何工作样本或示例可用。

4

1 回答 1

3

根据一些谷歌文档,您只需要修改内部 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值从修改INTERNALINTERNAL_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。

于 2021-01-12T02:06:10.903 回答