Google容器引擎中的HTTPS负载均衡器

时间:2015-08-24 17:36:02

标签: google-compute-engine google-kubernetes-engine google-cloud-http-load-balancer

我正在尝试使用HTTPS L7 load balancer为GKE设置HTTPS负载均衡器,但由于某种原因无效。甚至是HTTP Load Balancing walkthrough中的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}创建了一个没有任何标签的防火墙,但它没有用。

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

7 个答案:

答案 0 :(得分:21)

我的应用程序遇到了同样的问题,问题是我们没有返回端点&#34;成功&#34;健康检查总是失败。

如果未通过运行状况检查,HTTP / HTTPS负载均衡器似乎不会将请求发送到集群节点,因此我的解决方案是创建一个始终返回200 OK的端点,并在运行状况检查后立即在路过的时候,LB开始工作了。

答案 1 :(得分:3)

我使用GKE,我只是走过https://en.wikipedia.org/wiki/CJK_Compatibility并且它工作正常,但是当我路由到我自己的服务时,它不起作用。 (我的服务是休息api服务)

我发现,我的服务和示例之间的最大区别在于:示例有一个根端点(&#34; /&#34;),但我不支持。

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

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

以下是健康检查的链接:example

答案 2 :(得分:1)

在我的情况下,问题在几分钟后(如5-10分钟)解决了。

答案 3 :(得分: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;
    ...

答案 4 :(得分:1)

Source: 130.211.0.0/22添加了tcp:$NODEPORTIP(GCP上的负载均衡器范围)的防火墙规则。

答案 5 :(得分:0)

在我的情况下,负载平衡器返回此错误,因为在我的实例和实例组上没有运行Web服务器来处理网络请求。

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

从现在开始,我着重指出在创建虚拟机/实例时在启动脚本中添加nginx。

答案 6 :(得分:0)

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

所以

server{
    server_name example.com www.example.com

    if ($http_user_agent ~* 'GoogleHC.*') {
        return 200 'isaac newton';
    }
}