我将全局超文本传输协议负载均衡器用于在库伯内特斯集群上运行的后端服务。我没有找到任何关于如何限制一个IP在时间窗口中的请求数量的信息。有Cloud Armor,但也可以执行简单的IP、区域和基于标头的访问。您能否分享我如何对谷歌云上的全局超文本传输协议负载均衡器执行基于IP的速率限制,以提供对DoS攻击的防御。
编辑:
Kubernetes集群上运行的后端服务是一个带有web界面的symfony服务器。我想为服务器使用云CDN,因此我必须使用gce而不是ingress nginx。在谷歌云上,gce ingress创建了一个全局HTTP(s)负载平衡器,ingress nginx创建了TCP负载平衡器。
在nginx入口中,我可以简单地使用nginx。进入。库伯内特斯。io/限制rps注释,这有助于限制http请求的泛滥。我想在我的全局HTTP(s)负载平衡器上进行类似的配置。在当前设置中,我观察到大量http请求被发送到负载平衡器,这些请求被转发到symfony服务器,请求的延迟在某一点上会增加。这使得pod的
活性
探测失败。
云防护是一种WAF,您可以配置它来保护您的服务免受DoS攻击,尤其是通过阻止特定IP。
速率限制不是为了保护您的服务免受DDoS攻击。事实上,如果攻击淹没了您的速率限制服务,您的有效IP和不良IP将不会得到服务,因为您的服务被淹没了:这是拒绝服务
速率限制有助于为合法用户保留资源。但是有些人可以尝试通过以不同的(错误/糟糕的)方式使用您的API来克服一些限制。
例如,您有一个付费API来导出所有客户。您有一个免费的API来请求1个客户。用户可以说“嘿,我不想付款,我将在循环中请求单一客户API来创建这样的每日报告!”。这是对单一客户API的滥用,您可以通过速率限制来防止这种滥用
您可以使用云endpoint和ESP(可扩展服务代理)。我写了一篇文章,其中介绍了在Cloud Run上部署ESP,但您也可以在K8S上部署它。
您还可以使用API网关,它是ESP的托管服务,很快就可以在HTTPS负载均衡器上插入(除了WAF保护之外还可以使用它)。
我在GKE中使用HTTP负载均衡器(第7层)时遇到了麻烦。我最初使用LoadBalancer服务类型在GKE中公开服务: kubectl公开部署myservice--type=“LoadBalancer” null 我错过了什么?
web-service预期会有很多调用,而我希望在出现故障时使该服务成为冗余,因此我希望有两个实例同时运行以处理所有请求。 1)让两个级别的Web服务同时处理请求的最佳方法是什么?使用外部负载均衡器还是使用AKKA/AKKA-HTTP中的某种魔法(我不知道)? 2)我必须调整哪些主要参数来提高性能?
这项技术的新手,因此请温柔一点。目标是使用mod_jk设置Tomcat负载平衡。我的设置如下(都在一台机器上): Win7 x64 Apache Httpd 2.2 Tomcat 6 mod_jk 1.2.37(用于httpd2.2.x)2个Tomcat实例(同一台机器) 我已正确设置Tomcat,可以通过localhost:8080和localhost:8081访问Web应用程序。但当我尝试通过
在花了几个小时阅读Http客户机文档和源代码后,我决定在这里寻求帮助。 我有一个使用循环算法的负载均衡服务器
我的计算图的一个阶段是类型的流。显然,这个阶段应该为每个请求分配一个响应,并在所有请求都被解决后发出seq。 现在,底层API有一个苛刻的速率限制策略,所以我每秒只能激发一个请求。如果我有一个的单个,我可以使用每秒发出单个元素的来这个流(如何限制Akka流每秒只执行和发送一个消息一次?),但在这种情况下我没有看到类似的解决方案。 有什么好的表达方式吗?我想到的想法是使用低层图DSL并在那里使用一秒
我已经看到了这个问题;好了,我正在做答案里的所有事情。 使用GKE,我为包含两个几乎相同部署的kubernetes集群部署了一个基于GCP HTTP(S)负载均衡器的入口:同一应用程序的生产和开发实例。 我在每个pod模板上设置了一个专用端口,用于负载平衡器的健康检查,这样它们就不会受到来自主HTTP端口根路径的重定向的影响。然而,健康检查总是失败。 从这些文档中,我向我的部署添加了一个参数,负载