【问题标题】:Relationship between HTTPS Healthchecks and an HTTPS connection to a GCE InstanceHTTPS 健康检查与 GCE 实例的 HTTPS 连接之间的关系
【发布时间】:2015-06-11 14:38:40
【问题描述】:

我在Google Compute Engine (GCE) 上设置HTTPS Load Balancing (LB)Overview Diagram 中概述了关键组件。

在成功创建 1 of 1 (GCE) 实例健康的 HTTP 后端服务后,我决定对 HTTPS 执行相同操作。我正在使用开发者控制台 UI 来执行此操作。

Healtheck“向导”为协议提供了一个下拉菜单,其中包含 HTTP 和 HTTPS 选项:

成功的 HTTP 健康检查使用了路径 :8080/admin/healthcheck。 据推测,HTTPS Healtheck 将使用路径:443/admin/healthcheck。问题是我的 HTTPS 健康检查失败。这是意料之中的,因为在浏览器中访问 https://[INSTANCE_IP]:443/admin/healthcheck 时,它无法连接。所以我没想到 Healthcheck 会将实例标记为健康。

如何通过 TLS 连接到https://[INSTANCE_IP]:443/admin/healthcheck,我是否只需要在开发者控制台中上传证书并创建证书资源(我对此表示怀疑)?

我认为这也是一个概念问题。

URL https://[INSTANCE_IP]:443/admin/healthcheck 确实存在,我认为因为实例没有实现 TLS,Healthcheck 失败。

上传证书(即创建证书资源)与接受 HTTPS 请求以使 HTTPS 健康检查通过的特定 GCE 实例之间有什么关系?

【问题讨论】:

  • 在创建路径时,您可以选择不同的路径,您是否尝试过使用确实存在的页面的路径(例如 /page1?
  • 路径存在,协议导致问题。所以 http://[INSTANCE_IP]:8080/admin/healthcheck 在浏览器中呈现,但 https://[INSTANCE_IP]:443/admin/healthcheck 没有。更新了 OP。
  • 很高兴您能找到答案,您可以将其作为答案发布并接受。

标签: load-balancing google-compute-engine


【解决方案1】:

重读documentation后声明:

客户端 SSL 会话在负载平衡器处终止。会话 负载均衡器和实例之间可以是 HTTPS (推荐)或 HTTP。如果是 HTTPS,每个实例必须有一个 证书。

这是我试图实现的最后一句话,因为 HTTPS 健康检查使用 HTTPS URL 来检查单个实例的“健康”:

https://[INSTANCE_IP]:443/admin/healthcheck

由于这失败了,我错误地认为我需要在每个实例上实施 TLS 以使 Healthcheck 成功。但是,我不需要每个实例都实现 TLS (HTTPS),只需要负载均衡器。

我使用的最终配置涉及创建一个新的 HTTPS 目标代理,它指向用于 HTTP 目标代理的 same 后端服务。换句话说:2 个目标代理(HTTP 和 HTTPS),但只有一个后端服务。

由于后端服务使用健康检查,唯一需要的健康检查是(原始)不安全的健康检查,即

http://[INSTANCE_IP]:8080/admin/healthcheck

下一句很重要:

HTTPS 负载均衡 Beta 版仅支持单一 SSL 具有单一负载平衡服务的证书。

如果 beta 版本仅支持单个 SSL 证书,我假设此证书属于 LB,因此,至少在 beta 版本中,实际上不可能保护单个实例。

【讨论】:

  • 嘿杰克,我正在尝试设置 https 负载平衡,但我被困在一个类似的地方。我想知道您是如何使用 2 个目标代理的。我尝试用第二个创建一个新的转发规则,但这没有用。有什么办法可以告诉我你的部署脚本是什么样子的?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 2016-11-29
  • 1970-01-01
  • 2021-03-29
  • 2021-04-20
相关资源
最近更新 更多