我有一个包含 2 个实例的 GCP 实例组。两者都已启动并正在运行。我想配置一个负载均衡器 (HTTPS) 来管理流量。
我已经使用 HTTP 协议和由 google 管理的证书设置了转发规则。这一切都有效,但前提是负载均衡器和后端(实例)之间的流量是纯 HTTP。
到目前为止我所做的步骤
- 我创建了一个模板,这个模板只是一台普通的 N1 系列机器。我选中了复选框以创建允许 http 和 https 流量的防火墙规则。
- 我创建了一个名为“allow-ports”的防火墙规则。此防火墙规则针对网络中的所有实例,具有 0.0.0.0/0 IP 范围并允许端口 tcp = 80、443。我怎么看这个防火墙规则应该同时打开 http (80) 和 https (443)港口。
- 我创建了一个带有端口映射的实例组。"http-port" = 80, "https-port" = 443。我使用我刚刚创建的模板。
- 创建实例组时,我检查它是否正在运行。使用 SSH,我可以访问实例并在两者上安装 apache (sudo apt-get install -y apache2)。在浏览器中导航到他们的外部 IP 时,我看到了他们两个。
- 我创建了一个 HTTP(S) 负载平衡器,带有“从互联网到我的虚拟机”选项。对于后端配置,我使用我的实例组、协议 HTTP、命名端口“http-port”添加了一个后端服务。对于前端配置,我设置了 HTTPS 协议,创建 IPv4 IP 地址,创建 google 管理的 ssl 证书,然后就完成了。顺便说一句,我还添加了健康检查。
现在......这些步骤有效(几分钟后)。使用云 DNS,我设置了一个指向负载均衡器 IP 地址的域名。去的时候,我看到了 apache 页面。
什么不起作用?
当我将后端配置更改为 HTTPS(并将端口命名为“https-port”)时,我收到 502 服务器错误。所以在我看来,有一些联系,但有一个错误。这可能是apache错误吗?
我花了一整天的时间,创建和重新创建实例组、防火墙规则、负载均衡器……但似乎没有任何效果。我肯定错过了一些东西,可能是一些愚蠢的东西,但我不知道它可能是什么。
我想达到什么目标?
我不仅想要客户端和负载均衡器之间的安全 (HTTPS) 连接,还想要负载均衡器和后端服务(实例组)之间的安全连接。因为 GCP 在创建后端服务时提供了使用 HTTPS 协议的选项,所以我觉得这是可以做到的。
老实说:我正在阅读一些关于内部流量是安全的事实的文章,因此不需要 HTTPS 连接。但这对我来说并不重要,我真的很想知道这是如何工作的!
编辑
我正在使用正确的 VPC(默认)。我还将防火墙规则从 0.0.0.0/0 编辑到 130.211.0.0/22 和 35.191.0.0/16(参见:https ://cloud.google.com/compute/docs/tutorials/globally-autoscaling-a-web -service-on-compute-engine?hl=nl#configure_the_load_balancer)。