【问题标题】:Does global layer 7 http(s) load balancer has option to rate limiting?全局第 7 层 http(s) 负载均衡器是否具有速率限制选项?
【发布时间】:2021-06-07 15:56:43
【问题描述】:

我将全局 http(s) 负载平衡器用于在 Kubernetes 集群上运行的后端服务。我没有找到任何关于如何限制一个时间窗口内来自一个 IP 的请求数量的信息。有Cloud Armor,但也可以执行简单的IP, region, and header based 访问。您能否分享一下我如何在谷歌云上对全局 http 负载均衡器执行基于 IP 的速率限制,以防御 DoS 攻击。

编辑:

在 Kubernetes 集群上运行的后端服务是一个带有 Web 界面的 symfony 服务器。我想为服务器使用 Cloud CDN,因此我必须使用 gce ingress 而不是 ingress-nginx。在谷歌云上,gce ingress 创建一个global HTTP(s) load balancer,ingress-nginx 创建一个TCP load balancer

在 nginx-ingress 中,我可以简单地使用 nginx.ingress.kubernetes.io/limit-rps 注释,这有助于限制 http 请求的泛滥。我想在我的全局 HTTP(s) 负载均衡器上进行类似的配置。在当前设置中,我观察到大量的 http 请求被发送到负载均衡器,这些请求被转发到symfony 服务器,并且在某一时刻请求的延迟增加了。这使得liveness 探测对pod 失败。

【问题讨论】:

    标签: google-cloud-platform google-compute-engine google-kubernetes-engine google-cloud-networking


    【解决方案1】:

    Cloud Armor 是一种 WAF,您可以对其进行配置以保护您的服务免受 DoS 攻击,尤其是通过阻止特定 IP。

    速率限制并不是为了保护您的服务免受 DDoS 攻击。事实上,如果攻击淹没了您的限速服务,那么您的有效 IP 和坏 IP 将不会被提供,因为您的服务被淹没:这是拒绝服务

    速率限制有助于为合法用户保留资源。但是有些人可以尝试通过以不同(错误/错误)的方式使用您的 API 来克服某些限制。

    例如,您有一个付费 API 来导出所有客户。您有一个免费的 API 来请求 1 个客户。用户可以说“嘿,我不想付款,我将循环请求单个客户 API 来创建我的每日报告!”。这是对单一客户 API 的滥用,您可以通过速率限制来保护它免受这种滥用

    您可以使用 Cloud Endpoint 和 ESP(可扩展服务代理)。我写了一个 article 并在 Cloud Run 上部署了一个 ESP,但你可以 deploy it on K8S also

    您还可以使用 API 网关,它是 ESP 的托管服务,很快将可插入 HTTPS 负载平衡器(除了 WAF 保护之外还可以使用它)。

    【讨论】:

    • 我查看了您的文章并阅读了有关云端点的信息。据我了解,它适用于 API 后端服务器。我使用带有 Web 界面的 symfony 服务器,并且我还想为该服务器使用 CDN。因此我决定使用 HTTPS 负载均衡器。
    猜你喜欢
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 2023-03-14
    • 2020-11-24
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    相关资源
    最近更新 更多