我正在尝试使用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}创建了一个没有任何标签的防火墙,但它没有用。
有没有人遇到过这个问题?
答案 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';
}
}