kubernetes - 如何在 traefik 实例之间共享限速状态?
问题描述
我的公司运行具有 6 个节点的 kubernetes 设置,并将 traefik 1.6 作为 DaemonSet 部署到生产中的每个节点。每个 traefik 实例从 AWS ALB 接收端口 80 上的传入(ssl 终止)请求,并将它们转发到各个 pod。
在对我们的后端进行相当严重的 DDoS 攻击之后,我们启用了 traefiks 速率限制功能,以防止请求通过实际的 pod。
由于我们运行多个彼此不知道的 traefik 实例,因此用户感知的速率限制比 traefik 配置中设置的速率限制高 1 倍至 6 倍,因为请求随机命中 6 个 traefik 实例中的一个。这使得无法设置精确的限制,并且我们不能依赖 AWS ALB 粘性会话设置来确保客户端每次都点击同一个框,因为攻击者可以忽略 cookie。
将单个 traefik 实例与部署而不是守护程序集一起使用并不是一个很好的解决方案。对于每个请求,从接受请求的节点到 traefik 实例,都需要在节点之间进行额外的跳转。在 6 个请求中的 5 个请求中,该实例将在不同的节点上运行。
有没有办法在每个节点上的 traefik 守护进程之间共享速率限制状态?
解决方案
推荐阅读
- acumatica - 如何从报表设计器调用 Acumatica 函数?
- api - Office.js 约会在 saveAsync 回调中仍标记为已更改
- eclipse - 如何一次性禁用 Eclipse 中所有工作区的新闻轮询?
- .net-core - 我还需要 .NET Core 2.1 的 RuntimeFrameworkVersion 项目设置吗?
- wordpress - 如何使用过滤器在小部件中隐藏 WooCommerce 价格?
- ios - 数组中的 Swift 数组。使用 compactMap / map 而不是嵌套循环
- ruby-on-rails - 如何使用grape-api解码GET请求中的编码查询参数
- c# - Selenium 本机 android 应用程序的 DesiredCapabilities 已过时
- java - 无法将 JobService 的上下文参数传递给类
- android - 我将如何在android中获取我路线上附近餐馆的详细信息?