Articles of haproxy

HAProxy可以用来重写相当的url吗?

当HAProxy将请求传递给Web服务器时,HAProxy是否可以将“domain.com/cool/url”中的URI重写为“domain.com/index.php/cool/url”? 谢谢。

HAProxy健康检查

我有三个与同一主题有关的小问题: 使用HAProxy,有没有什么办法可以根据不同服务器的当前负载 (即将请求路由到最less的服务器)进行负载均衡。 如果没有,为什么HAProxy中没有内置这种行为? 这样做是否有任何主要的性能影响? 我想象的不是寻找最less的连接( leastconnalgorithm),而是寻找最低的负载。 如果这样做没有主要的性能影响,那么我是否可以将此function构build到自定义HAProxy分发中,而不会影响性能?

HAProxy会截断某些日志消息的host_header部分

我有一个HAProxy实例configuration为login到一个特殊的本地守护进程,将日志文件夹入数据库。 我看到一些日志消息的一些问题,其中host_header字段由于特定的原因被截断。 例如,而不是: 56:34 haproxy[892]: 1.2.3.4:17907 [14/May/2012:13:56:33.999] app.prod app.prod/webp01 0/0/0/161/524 200 33627 – – –NI 0/0/0/0/0 0/0 {application.example.com} "GET /?feed=rss2 HTTP/1.0" 我懂了: 56:34 haproxy[892]: 1.2.3.4:17907 [14/May/2012:13:56:33.999] app.prod app.prod/webp01 0/0/0/161/524 200 33627 – – –NI 0/0/0/0/0 0/0 {application.examp} "GET /?feed=rss2 HTTP/1.0" 请注意,host_header已从application.example.com截断为application.examp 。 这是在试图通过这些日志农场的工作投掷几个扳手,所以有什么理由为什么发生这种情况? HAProxy版本是在Ubuntu 12.04上运行的1.4.18-0ubuntu1 。

HAProxy – 暂停/排队所有stream量,而不会丢失请求

我基本上有这个线程中提到的相同的问题 – 我想临时挂起所有的请求到所有后端的服务器,以便我可以升级后端和它使用的数据库。 由于这是一个实时系统,我想排队请求,并在升级后将它们发送到后端服务器。 由于我正在通过代码更改进行数据库升级,所以我必须同时升级所有的后端服务器,所以我不能一次只下载一个。 我尝试使用tcp-request选项,除去该线程中提到的静态健康检查文件,但没有运气。 将默认的“maxconn”值设置为0似乎暂停和队列连接按照需要,但似乎没有办法增加值返回到一个正数,而不重新启动HAProxy,杀死所有已排队的请求,直到点。 (“热重新configuration”选项使用-sf和-st启动一个新的进程,似乎没有做我想要的)。 我正在尝试做什么?

HAproxy 503服务不可用无服务器可用于处理此请求

我是新来的这个负载平衡的情况下,我负责找出如何使这个负载平衡的作品。 我的环境: Centos 6.4 64 Bit Webserver: Lighttpd All running in ESXI virtual IP: 192.168.1.6 LB1: 192.168.1.4 LB2: 192.168.1.5 Webserver 1: 192.168.1.12 Webserver 2: 192.168.1.13 Gateway: 192.168.1.1 尝试在HAproxy生产之前在实验室中运行testing并保持活动状态。 以下是我在Keepalived设置中的内容: ! configuration文件keepalived global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server 192.168.1.4 smtp_connect_timeout 30 router_id 192.168.1.1 } vrrp_script chk_haproxy { script "killall -0 haproxy" interval 1 […]

当一个服务器IP改变时,确实存在的TCP(例如http / mysql)连接仍然在运行

我们有一些PHP-FPM服务器,当他们需要一个数据库连接时,他们连接到一个HAProxy服务器,它select一个数据库服务器来使用,并打开连接。 当我们然后想要对HAProxy服务器执行一些维护(例如需要HAProxy重启的configuration更改)时,过程如下: 在HAProxy服务器上closuresKeepalived 等待浮动IP转移到备份HAProxy服务器(也运行Keepalived) 等到HAProxy统计报告只有一个连接(我们检查有多less连接) 重新启动HAProxy 重新启动Keepalived 当步骤2发生时,那个时候打开的mysql连接会发生什么? 根据这个TCP会话和IP变化问题 ,连接将被丢弃。 这是真的吗? 如果是这样,可以做些什么来防止这种情况发生? 连接可以以某种方式强制使用服务器的主(非浮动)IP? 我们也有两个运行Keepalived的Nginx服务器的类似设置,我们正在计划进行等效的过程。 如果我们这样做,同样的问题适用 – 当IP移动到另一个服务器时,现有的http连接会发生什么? 我感谢您的帮助。

是否有链接x转发标头的标准?

IETF RFC 2616第4.2节允许一个请求包含具有相同字段名的多个头,只要插入的时间顺序被保留,并且它们的值可以用逗号分隔的值列表转换成单头。 http://tools.ietf.org/html/rfc2616#section-4.2 当且仅当该报头字段的整个字段值被定义为以逗号分隔的列表[即#(值)]时,具有相同字段名的消息报头字段可以存在于消息中。 必须将多个头域组合成一个“field-name:field-value”对,而不用改变消息的语义,把每个后续的域值附加到第一个域中,每个域都用逗号分隔。 因此,接收具有相同字段名的头字段的顺序对于组合字段值的解释是重要的,因此当消息被转发时,代理务必不改变这些字段值的顺序。 F5不会覆盖任何现有的X-Forwarded-For。 也不会将现有的X-Forwarded-For连接成一个逗号分隔的值。 相反,它将在集合的尾部插入额外的X-Forwarded-For。 但是有多个客户端,代理服务器,CDNs,stream量pipe理器,服务器的操作X-Forwarded-For集合的环境呢? 执行统一的做法似乎是有利的。 但是,最佳做法是什么? F5 BIG-IP默认的httpconfiguration文件插入标头在请求预先存在的XFF标头集合的末尾累积了一个额外的X-Forwarded-For ,以保持顺序。 AWS ELB鼓励将传入请求的多个X-Forwarded-For整合到包含逗号分隔的XFF IP列表的单个标头中,并加上用户主机地址,以保持顺序。 其他设备可以采用其他的变化。 是否存在针对异构环境的商定build议或事实标准? 此外,提供的任何时间戳数据将允许代码按照添加的时间顺序将X-Forwarded-For标题按照先前的XFF标题的操作可疑的情况明确地sorting。

软件负载平衡器 – 转发或redirect到后端服务器?

我是一名Web开发人员,最近需要使用Load Balancer。 我在这个领域是新的。 我select了使用哪个LB,不像它那么重要,HAProxy具有我所研究的所有function。 我担心的是,使用基于软件的负载均衡器,它不会将用户redirect到后端服务器,负载均衡器停留在中间,因此所有的带宽和TCP连接都将停留在中间。 我说得对吗? 如果以前是这样的话,那我该如何做一个解决scheme,使负载平衡器不会停留在Client – Backend服务器的中间? 此外,我需要一个“源”磅types,因为web应用程序使用会话,我需要用户连接到他们已经使用相同的服务器。 先谢谢你。

HAProxy URI平衡不是很平衡

我试图使用HAProxy 1.4.22与URI平衡和散列types一致的负载平衡3清漆caching后端。 我的理解是,这将永远不会完成服务器之间的完美平衡,但应该比我看到的结果更好。 我的HAproxyconfiguration的相关部分如下所示: backend varnish # hash balancing balance uri hash-type consistent server varnish1 10.0.0.1:80 check observe layer7 maxconn 5000 id 1 weight 75 server varnish2 10.0.0.2:80 check observe layer7 maxconn 5000 id 2 weight 50 server varnish3 10.0.0.3:80 check observe layer7 maxconn 5000 id 3 weight 50 我一直在通过将自己的主机文件指向新的代理服务器来进行自我testing,甚至尝试将stream行的主页重新路由到一个单独的后端,这是一个平衡的循环,以从散列平衡的后端获得exception值,似乎工作正常。 作为一个testing,我把清漆1的重量提高到了75,但这似乎没有帮助。 我的负担是非常不平衡的,我不明白这是为什么。 一个有趣的事情是,如果我反转ID,更高的ID将始终获得最大的stream量份额。 为什么ID会影响平衡? 调整权重是好的,但随着我的网站的stream量模式改变(我们是一个新闻网站,最stream行的职位可以迅速改变),我不想不断调整权重。 […]

当服务Web套接字时,HAProxy正在交换(严重故障)

我观察到我们的HAProxy实例提供了一些networking套接字。 目前故障率很低(0.01个主要故障)。 我们使用nbproc模式,一个进程用于http处理,另外三个进程专用于SSL处理。 从Perf中,我可以从http处理实例中获取以下故障样本: Samples: 36 of event 'page-faults:u', Event count (approx.): 206 28.64% haproxy-t3 haproxy [.] si_conn_wake_cb 20.87% haproxy-t3 haproxy [.] si_conn_recv_cb 13.11% haproxy-t3 haproxy [.] raw_sock_to_buf 10.68% haproxy-t3 haproxy [.] stream_int_chk_snd_conn 7.28% haproxy-t3 haproxy [.] conn_fd_handler 4.37% haproxy-t3 haproxy [.] http_end_txn 3.88% haproxy-t3 haproxy [.] stream_int_update_conn 3.88% haproxy-t3 haproxy [.] process_session 2.91% haproxy-t3 […]