diff --git a/doc/configuration.txt b/doc/configuration.txt index afe5edb38..ebebcbd0a 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -17351,7 +17351,22 @@ agent-check Values in this format will set the weight proportional to the initial weight of a server as configured when HAProxy starts. Note that a zero weight is reported on the stats page as "DRAIN" since it has the same - effect on the server (it's removed from the LB farm). + effect on the server (it's removed from the LB farm). It is the legacy way + to set the weight of a server. Setting it with the "weight:" prefix is + preferred. + + - The string "weight:" following by an positive interger or a positive + interger percentage, with no space. If the value ends with the '%' sign, + then the new weight will be proportional to the initially weight of the + server. Otherwise, the value is considered as an absolute weight and must + be between 0 and 256. Servers which are part of a farm running a static + load-balancing algorithm have stricter limitations because the weight + cannot change once set. Thus for these servers, the only accepted values + are 0 and 100% (or 0 and the initial weight). Changes take effect + immediately, though certain LB algorithms require a certain amount of + requests to consider changes. Note that a zero weight is reported on the + stats page as "DRAIN" since it has the same effect on the server (it's + removed from the LB farm). - The string "maxconn:" followed by an integer (no space between). Values in this format will set the maxconn of a server. The maximum number of diff --git a/src/tcpcheck.c b/src/tcpcheck.c index 10aad1af8..6e12eb6c2 100644 --- a/src/tcpcheck.c +++ b/src/tcpcheck.c @@ -1090,6 +1090,10 @@ enum tcpcheck_eval_ret tcpcheck_agent_expect_reply(struct check *check, struct t else if (strncasecmp(cmd, "maxconn:", strlen("maxconn:")) == 0) { sc = cmd; } + /* try to parse a maxconn here */ + else if (strncasecmp(cmd, "weight:", strlen("weight:")) == 0) { + ps = cmd + strlen("weight:"); + } else { /* keep a copy of the first error */ if (!err)