Posts Tagged ‘Haproxy’

How to increase buffersize in Haproxy

June 14th, 2011

I changed the value in “include/common/defaults.h” as follows:
#ifndef BUFSIZE
#define BUFSIZE         33960
#endif

Compiled again, and it works fine. or use below command to increase buffer size

$ make TARGET=xxx SMALL_OPTS=”-DBUFSIZE=32768 -DMAXREWRITE=1024″

Thanks
Manoj

Zero-Downtime Restarts of backend servers with HAProxy

March 20th, 2011

Zero-Downtime with HAProxy

Putting up a maintenance page while you are doing an update and restarting your application servers is good practice, but it definitely hurts the user experience. setup a html page and check url – e.g. /haproxy_check.html. It will check the haproxy_check.html every 2 seconds and check the string OK inside the the htmp page if found which mean web server and if not it means web server is not responding so it mark it down and start sending the traffic of that node to another active node. Once the down server up it will start sending the new traffic to this node.

Another way of doing the same thing: Zero-Downtime Restarts with HAProxy

Example of Backends

backend web_servers
balance  hdr(host)
option httpchk GET /haproxy_check.html
http-check expect rstring OK
stats enable
server WEB1 127.0.0.1:80 maxconn 2 check inter 2000
server WEB2 127.0.0.1:8080 maxconn 2 check inter 2000

Balance with  hdr

We use this option because we want to send all same type of request to one server or backend and will do the load balancing only when the that server or backend is not responding.

About balance hdr algorithm

The HTTP header <name> will be looked up in each HTTP request.Just as with the equivalent ACL ‘hdr()’ function, the header name in parenthesis is not case sensitive. If the header is absent or if it does not contain any value, the roundrobin algorithm is applied instead.

An optional ‘use_domain_only’ parameter is available, for reducing the hash algorithm to the main domain part with some specific headers such as ‘Host’. For instance, in the Host value “haproxy.manoj.com”, only “WEB1″ will be considered.

This algorithm is static by default, which means that changing a server’s weight on the fly will have no effect, but this can be changed using “hash-type”.