32

我正在尝试使用HTTPS L7 负载平衡器为 GKE 设置 HTTPS 负载平衡器,但由于某种原因无法正常工作。甚至HTTP 负载平衡演练中的 HTTP 负载平衡器。创建了转发规则的 IP 地址,我可以 ping 和 telnet 到端口 80。但是当通过 curl 请求时,它给了我一个错误。

<title>502 Server Error</title> </head> <body text=#000000 
bgcolor=#ffffff> <h1>Error: Server Error</h1> <h2>The server 
encountered a temporary error and could not complete your request. 
<p>Please try again in 30 seconds.</h2> <h2></h2> </body></html>

所有步骤都很好,我为 ${NODE_PORT} 创建了一个没有任何标签的防火墙,但它不起作用。

有没有人遇到过这个问题?

4

8 回答 8

29

我的应用程序遇到了同样的问题,问题是我们没有返回“成功”的端点,并且运行状况检查总是失败。

如果健康检查未通过,HTTP/HTTPS 负载均衡器似乎不会将请求发送到集群节点,因此我的解决方案是创建一个始终返回 200 OK 的端点,并且一旦健康检查通过, LB开始工作。

于 2016-09-09T18:59:21.750 回答
11

我刚刚浏览了这个示例并且(在为 $NODE_PORT 打开防火墙之前)看到了相同的 502 错误。

如果您在云控制台中查看

https://console.developers.google.com/project/<project>/loadbalancing/http/backendServices/details/web-map-backend-service

您应该看到后端显示 ${num_nodes_in_cluster} 中的 0 个是健康的。

对于您的防火墙定义,请确保将源过滤器设置130.211.0.0/22允许来自负载平衡服务的流量,并将允许的协议和端口设置为tcp:$NODE_PORT.

于 2015-08-24T23:20:15.653 回答
5

我使用 GKE,我刚刚浏览了这个示例,它工作正常,但是当我路由到我自己的服务时,它不起作用。(我的服务是一个rest api服务)

我发现我的服务和示例最大的区别在于:示例有一个根端点(“/”),但我不支持它。

所以,我用这种方式解决了这个问题:在我的服务中添加一个根端点(“/”),然后返回成功(一个不返回任何内容的空端点),然后重新创建入口,等待几分钟,然后入口工作!

我认为这个问题应该是由健康检查器引起的UNHEALTHY instances do not receive new connections

这是健康检查的链接:https ://cloud.google.com/compute/docs/load-balancing/health-checks

于 2017-02-23T09:39:49.110 回答
2

就我而言,几分钟(如 5-10 分钟)后问题就解决了。

如果使用入口,则与入口相关的事件中可能有其他信息。要查看这些:

kubectl describe ingress example

于 2017-09-27T14:54:10.497 回答
1

就我而言,负载均衡器返回此错误,因为我的实例和实例组上没有运行 Web 服务器来处理网络请求。

我在所有机器上安装了 nginx,然后它开始工作。

从现在开始,我会在创建 vm/instance 时将 nginx 添加到我的启动脚本中。

于 2018-07-24T06:27:52.400 回答
1

如果您在负载均衡器后面使用 nginx,那么 default_server 返回 200 或其他一些 2** 很重要。这意味着,例如,如果您有一个返回 301 的重写规则,那么它将失败。

解决方案是在主服务器上设置 default_server:

server {
    # Rewrite calls to www
    listen 443;
    server_name example.com;

    return 301 https://www.example.com$request_uri;
}


server {
    listen                  443 default_server;
    server_name             www.example.com;
    ...
于 2019-06-20T13:22:44.733 回答
1

Source: 130.211.0.0/22为(GCP 上的负载均衡器范围)添加防火墙规则以 tcp:$NODEPORTIP解决此问题。

于 2020-02-18T16:27:44.600 回答
0

我为用户代理中包含“GoogleHC”的所有请求创建了一个端点。

所以,

server{
    server_name example.com www.example.com

    if ($http_user_agent ~* 'GoogleHC.*') {
        return 200 'isaac newton';
    }
}
于 2020-01-16T20:01:13.020 回答