GCP 负载均衡器 - 主机和路径规则不起作用
Posted
技术标签:
【中文标题】GCP 负载均衡器 - 主机和路径规则不起作用【英文标题】:GCP Load Balancer - Host and path rules not working 【发布时间】:2021-05-01 09:42:00 【问题描述】:我有一个虚拟机,上面托管了 3 个应用程序。所有应用程序都可以正常使用 VM 的公共 IP 和端口(例如 34.44.55.66:port)
-
React JS 网站 1(端口 3001)
React JS 网站 2(端口 3002)
Express JS API 1(端口 3003)
我现在想将所有这些都放在Cloud Load Balancer 后面。我为此做了以下工作。
创建了三个后端服务(每个应用一个) 创建的主机和路径规则如下负载均衡器的创建没有任何问题。但是,只有默认路径可以正常工作。参考下面的详细信息(假设LB IP为55.66.77.88)。
55.66.77.88:Website-1 打开没有任何问题(默认路径)
55.66.77.88/website-1:Website-1 在浏览器控制台中显示错误消息
55.66.77.88/website-2:Website-2 在浏览器控制台中显示错误消息
55.66.77.88/api-1:API-1 在浏览器控制台中显示错误消息
GET http://55.66.77.88/api-1 404 (Not Found)
每当我使用默认路径映射上述任何后端服务时,它们都可以正常工作。但是,当在浏览器中输入路径时,它们不会按预期工作。
我们将不胜感激。
【问题讨论】:
我建议将此发布到 ServerFault,因为它与编程无关。也就是说:请务必在重新发布时也包含错误消息的格式化文本版本。这个meta post 列出了这很重要的许多原因。 【参考方案1】:请记住,在您的配置中,没有 URL 重写操作。这意味着您的要求
55.66.77.88/website-1/index.html
将在这条路径上到达后端
# Backend bucket example
gs://my-bucket/website-1/index.html
# Instance group backend
<backend>/website-1/index.html
# Network Endpoint Group backend
<NEG>/website-1/index.html
转发提供给负载平衡器的基本路径。当您没有附加路径时,它可以工作(根路径55.66.77.88/
的情况)
您可以覆盖高级模式下的行为,并且可以为每个规则定义 URL 重写。
您可以在控制台中定义这样的重写规则
点击高级配置
设置您的默认配置(任何域,任何路径)
然后点击添加主机和路径规则
像你一样把 * 放在主机中
然后点击路径规则部分的铅笔,默认定义规则。再次,默认选择您的后端。没有特殊的重写,它是默认路径。
现在点击添加路径规则。
添加匹配的路径。并且只有 / 在重写 URL 部分(如果后端依赖主机名,您可以重写您的主机,但似乎不是您的情况)
对所有后端执行此操作并对其进行测试(让 3 - 5 分钟将您的更新传播到边缘节点)
【讨论】:
我使用的是Backend Service
,而不是Bucket
。您能否举例说明我在高级模式的rewrite
部分可能需要进行的更改?以上是关于GCP 负载均衡器 - 主机和路径规则不起作用的主要内容,如果未能解决你的问题,请参考以下文章
将 kubernetes(GKE) 服务层指标发送到 GCP 负载均衡器