Created
June 17, 2015 17:19
-
-
Save vayam/72e607ce921d2761fd2f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
source The source IP address is hashed and divided by the total | |
weight of the running servers to designate which server will | |
receive the request. This ensures that the same client IP | |
address will always reach the same server as long as no | |
server goes down or up. If the hash result changes due to the | |
number of running servers changing, many clients will be | |
directed to a different server. This algorithm is generally | |
used in TCP mode where no cookie may be inserted. It may also | |
be used on the Internet to provide a best-effort stickiness | |
to clients which refuse session cookies. 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". | |
uri This algorithm hashes either the left part of the URI (before | |
the question mark) or the whole URI (if the "whole" parameter | |
is present) and divides the hash value by the total weight of | |
the running servers. The result designates which server will | |
receive the request. This ensures that the same URI will | |
always be directed to the same server as long as no server | |
goes up or down. This is used with proxy caches and | |
anti-virus proxies in order to maximize the cache hit rate. | |
Note that this algorithm may only be used in an HTTP backend. | |
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". | |
This algorithm supports two optional parameters "len" and | |
"depth", both followed by a positive integer number. These | |
options may be helpful when it is needed to balance servers | |
based on the beginning of the URI only. The "len" parameter | |
indicates that the algorithm should only consider that many | |
characters at the beginning of the URI to compute the hash. | |
Note that having "len" set to 1 rarely makes sense since most | |
URIs start with a leading "/". | |
The "depth" parameter indicates the maximum directory depth | |
to be used to compute the hash. One level is counted for each | |
slash in the request. If both parameters are specified, the | |
evaluation stops when either is reached. | |
url_param The URL parameter specified in argument will be looked up in | |
the query string of each HTTP GET request. | |
If the modifier "check_post" is used, then an HTTP POST | |
request entity will be searched for the parameter argument, | |
when it is not found in a query string after a question mark | |
('?') in the URL. Optionally, specify a number of octets to | |
wait for before attempting to search the message body. If the | |
entity can not be searched, then round robin is used for each | |
request. For instance, if your clients always send the LB | |
parameter in the first 128 bytes, then specify that. The | |
default is 48. The entity data will not be scanned until the | |
required number of octets have arrived at the gateway, this | |
is the minimum of: (default/max_wait, Content-Length or first | |
chunk length). If Content-Length is missing or zero, it does | |
not need to wait for more data than the client promised to | |
send. When Content-Length is present and larger than | |
<max_wait>, then waiting is limited to <max_wait> and it is | |
assumed that this will be enough data to search for the | |
presence of the parameter. In the unlikely event that | |
Transfer-Encoding: chunked is used, only the first chunk is | |
scanned. Parameter values separated by a chunk boundary, may | |
be randomly balanced if at all. | |
If the parameter is found followed by an equal sign ('=') and | |
a value, then the value is hashed and divided by the total | |
weight of the running servers. The result designates which | |
server will receive the request. | |
This is used to track user identifiers in requests and ensure | |
that a same user ID will always be sent to the same server as | |
long as no server goes up or down. If no value is found or if | |
the parameter is not found, then a round robin algorithm is | |
applied. Note that this algorithm may only be used in an HTTP | |
backend. 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". | |
hdr(<name>) 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.1wt.eu", only "1wt" 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". |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment