当前位置: 首页 > 知识库问答 >
问题:

Google云负载平衡器-502-未托管实例组运行状况检查失败

彭成天
2023-03-14

我目前有一个HTTPS负载均衡器设置,该设置使用443前端、后端和健康检查,为单个主机nginx实例提供服务。

通过浏览器直接导航到主机时,页面会正确加载有效的SSL证书。

当尝试通过负载平衡器IP访问站点时,我收到一条502服务器错误消息。我检查了Google日志,发现负载平衡器出现了“failed\u to\u pick\u backend”错误。我还注意到它没有通过健康检查。

通过深入研究,我找到了以下两个链接:https://cloudplatform.googleblog.com/2015/07/Debugging-Health-Checks-in-Load-Balancing-on-Google-Compute-Engine.html

https://github.com/coreos/bugs/issues/1195

问题#1-不确定服务器(RHEL 7)上是否运行google-addres-Manager。我在路由中没有看到HTTPS负载均衡器IP的条目。已安装GoogleSDK。这是Google提供的映像,如果我在控制台中更新IP地址,它也会在主机上更新。如何检查google-addres-Manager是否在RHEL7上运行?

[root@server]# ip route ls table local type local scope host
10.212.2.40 dev eth0 proto kernel src 10.212.2.40
127.0.0.0/8 dev lo proto kernel src 127.0.0.1
127.0.0.1 dev lo proto kernel src 127.0.0.1

所有google服务的输出

[root@server]# systemctl list-unit-files
google-accounts-daemon.service                enabled
google-clock-skew-daemon.service              enabled
google-instance-setup.service                 enabled
google-ip-forwarding-daemon.service           enabled
google-network-setup.service                  enabled
google-shutdown-scripts.service               enabled
google-startup-scripts.service                enabled

问题#2:未收到200 OK响应。证书在LB和服务器上都有效且相同。当对应用服务器运行curl时,我会收到此响应。

root@server.com  curl -I https://app-server.com
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

思想?

共有2个答案

阳航
2023-03-14

一些更新和经验教训:

我发现“谷歌地址管理器”现在已经被弃用,取而代之的是正在运行的“谷歌ip转发守护程序”。

[root@server ~]# sudo service google-ip-forwarding-daemon status
Redirecting to /bin/systemctl status google-ip-forwarding-daemon.service
 google-ip-forwarding-daemon.service - Google Compute Engine IP Forwarding Daemon
   Loaded: loaded (/usr/lib/systemd/system/google-ip-forwarding-daemon.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-12-22 20:45:27 UTC; 17h ago
 Main PID: 1150 (google_ip_forwa)
   CGroup: /system.slice/google-ip-forwarding-daemon.service
           └─1150 /usr/bin/python /usr/bin/google_ip_forwarding_daemon

有一个活动防火墙规则允许IP范围130.211.0.0/22和端口443的35.191.0.0/16。目标也已正确设置。

最后,健康检查当前使用默认的“/”路径。开发人员在开发过程中将身份验证放在站点前面。如果我绕过了SSL证书错误,我在运行curl时收到了未经授权的401。这是我们遇到的问题的根本原因。为了补救,我们修改了nginx基本身份验证配置以禁用对新路由的身份验证(例如 /health)

一旦在运行状况检查时更新了nginx配置并将路径更新为新的/运行状况路由,我们就收到了有效的200个响应。这允许运行状况检查返回运行状况良好的实例,并允许LB通过流量

羊舌琛
2023-03-14

您应该为运行状况检查服务添加防火墙规则-https://cloud.google.com/compute/docs/load-balancing/health-checks#health_check_source_ips_and_firewall_rules并确保您的后端服务侦听负载平衡器ip(最简单的方法是绑定到0.0.0.0),这对于内部负载平衡器来说绝对是正确的,但对于带有外部ip的HTTPS则不确定。

 类似资料:
  • 我在一个项目中工作,以移动我们的SIP基础设施。至GCP。 我正在使用带有私有IP的UDP内部负载均衡器将呼叫从Asterisk路由到我的Kamailio SBC,Asterisk配置为负载均衡器的地址IP作为单个传出endpoint。 我的内部UDP负载平衡器在5060前端运行,后端有2个SBC,端口80上有基本http健康检查。 在每个kamailio SBC上,我在端口5060上列出了我的应

  • 我发现了这个问题。。 您希望使用最少的步骤为在多个区域中运行的一组计算引擎实例配置网络负载平衡的自动修复。如果VM在3次尝试后无响应,则需要配置VM的重新创建,每次10秒。你应该怎么做? A、 使用引用现有实例组的后端配置创建HTTP负载平衡器。将运行状况检查设置为健康(HTTP) B、 使用引用现有实例组的后端配置创建HTTP负载平衡器。定义平衡模式并将最大RPS设置为10。 C.创建托管实例组

  • 我有一个负载平衡器设置,将流量路由到多个云存储桶和一个后端实例组。这些桶似乎工作得很好,但我就是无法让实例组工作。当我使用它的公共IP时,该实例运行良好。但它无法通过负载平衡器工作。 这是我第二次设置完全相同的部署,所以不完全确定哪里出错了。我查看了文档进行故障排除,看起来我的健康检查有问题。 我已经配置了一个应该可以工作的健康检查,我将其设置为http端口80/path。我的服务器为此返回了20

  • 当我将google云平衡器与CDN一起使用时,我遇到了一个错误502,问题是,我很确定我在设置负载平衡器时一定做错了什么,因为当我删除负载平衡器时,我的网站运行得很好。 这就是我在这里配置负载平衡器的方式 我应该使用HTTP或HTTPS healthcheck吗?因为当我设置HTTPS healthcheck时,我的网站先运行了一段时间,然后又关闭了 我已经检查了这个链接,他们似乎有同样的问题,但

  • 根据以下官方文件,我在GKE上安装了Kubernetes入口控制器。 入口控制器运行良好。 它自动创建TCP负载平衡器、健康检查和防火墙规则。我的kubernetes群集有3个节点。有趣的是,有两次健康检查失败。它传递给入口控制器正在运行的实例。我调试了它,但没有找到任何线索。谁能帮我一下吗。

  • 试图让Spring云网关在我们应用程序的几个实例之间实现负载平衡,但就是无法弄清楚。我们目前没有服务注册表(没有尤里卡等)。 我一直在尝试使用功能区,并有这样的配置: 但是,当我尝试向网关发出请求时,我会得到一个内容长度为0的200响应,并且我的存根没有被击中。 我有一个非常基本的设置,没有定义豆子。 我怎样才能让ribbon发挥好/或替代?