我正在研究HAProxy作为F5的替代品。 F5能够根据响应头值持久化会话: when HTTP_RESPONSE { set session [HTTP::header X-Session] if {$session ne ""} { persist add uie $session } } 然后将包含相同会话ID的所有后续请求路由到同一台机器,例如: when HTTP_REQUEST { set session [findstr [HTTP::path] "/session/" 9 /] if {$session} { persist uie $session } } 我想知道这是甚至可以做HAProxy?
我们在许多应用程序服务器上安装了3个Ruby on Rails应用程序(A,B和C)。 我们的前端是HAProxy,后端是Apache + Phusion Passenger。 最初我们在每个应用程序服务器上都安装了3个Rails应用程序,但是这种设置很慢,因为HAProxy“不知道”给定的Rails应用程序在给定的支持服务器上是否“热”。 每个乘客实例都configuration为运行多达8个Rails应用程序实例。 考虑以下情况(简化): 8个同时请求应用程序A进来,HAProxy将所有这些请求都分配给第一个应用程序服务器,因为其他请求与其他请求“非常繁忙”。 乘客在此服务器上启动应用程序A的8个实例。 另一个请求来自应用程序B,它也被分派到第一个应用程序服务器,因为其他应用程序服务器仍然太忙。 现在,乘客必须closures应用程序A的一个实例并创build应用程序B的一个实例。 在每分钟请求的TON大的情况下,所有3个Rails应用程序在每个应用程序服务器上经常启动和停止, 这是很慢的 。 在完美的世界应用程序启动一次,处理大量的请求,而不必closures和重新启动。 这就是为什么我们必须在3个Rails应用程序之间划分应用程序服务器: 应用程序A在13台服务器上运行 应用程序B在5台服务器上运行 App C运行在2台服务器上。 问题是:是否有一个负载均衡器软件“知道”后端,知道并使用以下信息来平衡负载: 每个后端服务器当前每个应用程序有多less个活动/热点实例? 目前有多less个实例正在处理请求? 目前每分钟/小时给定应用程序的平均请求数是多less? 是否需要“减less”一个申请,并“增加”另一个申请? 我们的想法是安装所有应用程序的“同类”(相同)应用程序服务器的数量,以便我们可以添加新的服务器来增加所有应用程序的总体容量,但给定应用程序的容量取决于“非常聪明“的负载平衡器,可以控制每个应用程序的容量,而不必经常启动和停止应用程序。
是否有可能在一个后端检查两个条件? 例 backend web-static option httpchk GET /path/alive.php HTTP/1.1\r\nHost:\ www1.domain.com option httpchk GET /path2/alive.php HTTP/1.1\r\nHost:\ www1.domain.com server appsrv1 192.168.1.10:80 check inter 3000 weight 1
我有一个基于云的(Amazon AWS,Rackspace,无论)多租户SaaS应用程序,我需要为多个不相关的租户域支持HTTPS通信。 作为一个说明性的例子,假设我们的SaaS可以在: https://foo.com 租户可以通过以下方式访问其租户特定的用户界面和服务端点: https://tenantA.foo.com https://tenantB.foo.com … 今天用一个通配符SSL证书很容易支持。 但是,借助我们的SaaS,我们的租户可能希望将我们的UI直接展示给自己的用户。 这导致一个问题:假设约翰·史密斯是tenantA一个现有客户(并且不知道foo.com )。 如果John Smith被引导到https://tenantA.foo.com ,他们可能会很容易混淆(例如,“谁是foo.com?我为什么在这里?我被黑客攻击了吗?啊!”)。 为了避免这个问题,我们的租户将build立一个子域名如下: https://foo.tenantA.com 这避免了许多最终用户的困惑: tenantA的用户可以看到他们认为是由tenantA拥有的tenantA并且更容易使用该app。 但tenantA希望我们托pipe应用程序的一切,这意味着foo.com的基础设施需要服务于SSL连接。 为此,我们要支持以下内容: 租户向foo.tenantA.com上传SSL证书+密钥。 我们接受该SSL证书并将其dynamic安装到高度可用的负载平衡群集(2个或更多LB节点)中,负载均衡请求到我们的SaaS应用程序Webterminal。 租户更新他们的DNS将foo.tenantA.com作为CNAMEredirect到tenantA.foo.com 。 这样,我们的负载平衡器池将提供/终止所有与foo.tenantA.com HTTPS通信,并且所有请求都将负载平衡到我们的SaaS Web服务器群集。 这意味着SSL证书应该能够在运行时从LB池中添加和删除。 更改不能中断为现有的或新的HTTPS请求提供服务的能力。 而且,由于我们将在Linux上部署在虚拟化硬件(例如EC2)上,因此我们无法访问硬件/数据中心。 这必须是可以在Linux中运行的基于软件的解决scheme。 它也必须是高度可用的(2个或更多LB节点)。 有谁知道一个具体的解决scheme? 例如,可以设置Nginx,HAProxy或Squid(或其他)来支持这个吗? 是否有一个“配方”或现有的解决scheme,logging和适用? PS亚马逊的Elastic Load Balancer(在撰写本文时)不能务实地满足这种需求 – 这将需要每个租户域的Amazon ELB。 由于每个ELB需要“ping”Web服务器,如果您有500个租户,那么您将拥有500个ELB来ping SaaS Web服务端点,这是一个不可忽视的负面性能影响。
我试图修改我当前的haproxyconfiguration,以支持其他服务器(70%,15,15)有人知道这是可能的吗? 阅读文档,我看到一个“重量”选项,但是我对生产服务器有些厌烦。 这是我目前的configuration: listen MySQL 10.10.10.14:3306 mode tcp balance roundrobin option persist server sql1 10.10.10.4:3306 server sql2 10.10.10.5:3306 server sql3 10.10.10.6:3306
我目前正试图find一种方法来负载平衡我们的4个邮件网关(运行邮件清理)。 我能够调出HAProxy并使用tcp模式来平衡负载。 唯一真正的问题是我的源IP始终是HAProxy服务器,所以现在我的一些邮件filter检查是无用的,因为我无法检查邮件是否来自已知的错误中继。 他们的FLOSS软件是否可以用来处理这种情况? 我知道HAProxy具有这种能力,如果我有邮件网关使用它作为默认网关,并编译一些额外的模块和configurationiptables。 我只是不想开始沿着这条路,如果我只是缺less一个更简单的解决scheme。
我在F5负载均衡器后面有两个Web服务器。 每个Web服务器都有相同的应用程序。 在负载均衡器的configuration从源地址持久性更改为最less连接之前没有问题。 现在在一些应用程序中,我接受了这个错误 “/”应用程序中的服务器错误。 视图状态validation失败。 如果此应用程序由Web场或群集托pipe,请确保configuration指定相同的validation密钥和validationalgorithm。 AutoGenerate不能在群集中使用。 说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的位置。 exception详细信息:System.Web.HttpException:validationviewstate MAC失败。 如果此应用程序由Web场或群集托pipe,请确保configuration指定相同的validation密钥和validationalgorithm。 AutoGenerate不能在群集中使用。 源错误: 生成此未处理exception的源代码只能在debugging模式下编译时显示。 要启用此function,请按照以下任一步骤操作,然后请求url: 在生成错误的文件的顶部添加一个“Debug = true”指令。 例: 要么: 2)将以下部分添加到应用程序的configuration文件中: 请注意,这第二种技术将导致给定应用程序内的所有文件都以debugging模式进行编译。 第一种技术只会导致在debugging模式下编译特定的文件。 重要提示:在debugging模式下运行应用程序会产生内存/性能开销。 在部署到生产场景之前,应确保应用程序已禁用debugging。 如何将机器密钥添加到machine.config文件? 我是否在IIS的服务器级别或每个站点的网站/应用程序级别执行此操作? validation密钥和解密密钥在两个Web服务器上必须相同还是不同? 他们应该不同的每个machine.config版本的.net? 我找不到这种情况的任何文件。
我正在使用Haproxy负载平衡我的Web服务器。 并不是所有的人都有相同的资源。 典型的负载平衡algorithm导致一些低端服务器超载,因为LB听不到信号。 是一种负载平衡服务器的方式,以他们当前的负载,资源可用性..等等?
我正在寻找从F5移动到Netscaler,并且很难弄清楚Netscalers是否具有类似于iRules的function。
场景: 硬件负载平衡器后面的小型网站 不需要服务器关联。 如果一台服务器出现故障,另一台服务器可以接pipe。 部分系统需要HTTPS。 这在服务器端被终止。 SSL证书安装在每台服务器上。 服务器有足够的容量,所以不用担心哪个服务器发送请求(即使一台服务器没有旋转)。 考虑到这一点,似乎负载平衡策略最明显的select是简单的循环法。 基于源IP的平衡似乎很难testing,基于cookie的平衡似乎不适用于SSL。 我担心,虽然浏览器可能会重新谈判他们的HTTPS连接,每次页面由不同的Web服务器提供服务,使网站慢得多,应该是。 所以我的问题: 这确实是一个问题吗? 还是负载均衡器足够聪明,以某种方式,即使从多个服务器提供内容时,也只能进行1次SSL握手? 有什么工具(Windows)可以用来轻松监控SSL握手,HTTP Keepalive等冲浪时的网站? 如果我们在这里确实有问题,我们该如何解决呢? (我想这个解决办法很明显,就是在我们的负载均衡器上卸载SSL,但是我们目前的硬件不支持这一点,所以现阶段任何其他的解决scheme都是可取的)。