the*_*bit 8 load-balancing high-load session apache-2.2
我需要一种方法来跟踪和限制网络会话到网络应用程序。“会话”被松散地定义为单个用户浏览所述网络应用程序的页面。我觉得可以翻译成:
<clientIP,vHost>
或者是<clientIP,serverIP,serverPort>
或<cookie,vHost>
,具体取决于层和可用数据达到指定的会话限制后,应将下一个用户定向到自定义错误页面。我还需要一种方法来跟踪当前会话数以进行监控,以及将监控服务器(它定期向 web 应用程序发出查询)列入白名单并使其不受限制的能力。
我可以使用的东西:
我宁愿不涉及额外的代理服务器,但如果没有其他选择,我会考虑它。
所有这一切背后的基本原理是,上述 Web 应用程序很容易过载并开始不规律地拒绝请求,这激怒了(通常)在此过程中丢失表单输入数据的工作用户。通过指定一个不太可能发生过载条件的限制,我们希望创建一个明确定义的故障条件,如果负载可能会激增,用户将被告知稍后返回。
编辑:Web 应用程序是一个 3 层实现,第一层(表示层,在 Apache vHost 中实现为 CGI 代码)相当简单,显然仅限于应用服务器之间的基本错误处理和请求负载平衡。它不会对其运行的 Web 服务器施加任何重大负载 - 这就是为什么我们在 AppDirector 场中仅以故障转移模式(无负载平衡)运行它,这应该在某种程度上简化事情。
除此之外的一切对我们来说基本上都是一个黑匣子——在数据层,我们有一个 MSSQL 数据库,但几乎不可能从供应商那里获得有关表结构的任何有意义的信息。应用服务器是闭源的,供应商使用了一个相当全面的框架来实现,但似乎无法回答更不复杂的操作相关问题。
您最终要解决的问题是应用程序的容量 - 这就是您应该解决问题的地方。您提到的所有组件都与HTTP 应用程序的会话管理无关。
您可以将一些技巧应用于 iptables 中的最新模块,或者以与设计目的相反的方式使用 fail2ban - 但这些都需要对工具和问题域有非常详细的了解。您可以在这些组件级别实施访问控制,但由应用程序发布的关于会话数量的状态信息驱动。
我还需要一种方法来跟踪当前会话数以进行监控
暂时假设应用程序是一个没有修改/检测范围的黑盒(这是极不可能的),您可以通过包含会话 cookie 从您的 apache 日志中获取此信息 - 过滤或拖尾日志以维护一个活动 cookie 列表 - 当条目与注销 URL 重合或在 TTL 中未被看到时,从列表中删除条目。
归档时间: |
|
查看次数: |
5844 次 |
最近记录: |