mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-21 14:35:45 +00:00
MEDIUM: listener: deprecate "process" in favor of "thread" on bind lines
The "process" directive on "bind" lines becomes quite confusing considering that the only allowed value is 1 for the process, and that threads are optional and come after the mandatory "1/". Let's introduce a new "thread" directive to directly configure thread numbers, and mark "process" as deprecated. Now "process" will emit a warning and will suggest how to be replaced with "thread" instead. The doc was updated accordingly (mostly a copy-paste of the previous description which was already up to date). This is marked as MEDIUM as it will impact users having "zero-warning" and "process" specified.
This commit is contained in:
parent
cd8a6f28c6
commit
c8cac04bd5
@ -14011,13 +14011,16 @@ process <process-set>[/<thread-set>]
|
|||||||
|
|
||||||
all | odd | even | number[-[number]]
|
all | odd | even | number[-[number]]
|
||||||
|
|
||||||
Ranges can be partially defined. The higher bound can be omitted. In such
|
Ranges can be partially defined. The higher bound can be omitted. In such a
|
||||||
case, it is replaced by the corresponding maximum value. The main purpose is
|
case, it is replaced by the corresponding maximum value. The main purpose is
|
||||||
to have multiple bind lines sharing the same IP:port but not the same thread
|
to have multiple bind lines sharing the same IP:port but not the same thread
|
||||||
in a listener, so that the system can distribute the incoming connections
|
in a listener, so that the system can distribute the incoming connections
|
||||||
into multiple queues, bypassing haproxy's internal queue load balancing.
|
into multiple queues, bypassing haproxy's internal queue load balancing.
|
||||||
Currently Linux 3.9 and above is known for supporting this.
|
Currently Linux 3.9 and above is known for supporting this.
|
||||||
|
|
||||||
|
This directive is deprecated in favor of the more suited "thread" directive
|
||||||
|
below, and will be removed in 2.7.
|
||||||
|
|
||||||
proto <name>
|
proto <name>
|
||||||
Forces the multiplexer's protocol to use for the incoming connections. It
|
Forces the multiplexer's protocol to use for the incoming connections. It
|
||||||
must be compatible with the mode of the frontend (TCP or HTTP). It must also
|
must be compatible with the mode of the frontend (TCP or HTTP). It must also
|
||||||
@ -14095,6 +14098,22 @@ tfo
|
|||||||
need to build HAProxy with USE_TFO=1 if your libc doesn't define
|
need to build HAProxy with USE_TFO=1 if your libc doesn't define
|
||||||
TCP_FASTOPEN.
|
TCP_FASTOPEN.
|
||||||
|
|
||||||
|
thread <thread-set>
|
||||||
|
This restricts the list of threads on which this listener is allowed to run.
|
||||||
|
It does not enforce any of them but eliminates those which do not match. It
|
||||||
|
limits the threads allowed to process incoming connections for this listener.
|
||||||
|
For the unlikely case where several ranges are needed, this directive may be
|
||||||
|
repeated. <thread-set> must use the format:
|
||||||
|
|
||||||
|
all | odd | even | number[-[number]]
|
||||||
|
|
||||||
|
Ranges can be partially defined. The higher bound can be omitted. In such a
|
||||||
|
case, it is replaced by the corresponding maximum value. The main purpose is
|
||||||
|
to have multiple bind lines sharing the same IP:port but not the same thread
|
||||||
|
in a listener, so that the system can distribute the incoming connections
|
||||||
|
into multiple queues, bypassing haproxy's internal queue load balancing.
|
||||||
|
Currently Linux 3.9 and above is known for supporting this.
|
||||||
|
|
||||||
tls-ticket-keys <keyfile>
|
tls-ticket-keys <keyfile>
|
||||||
Sets the TLS ticket keys file to load the keys from. The keys need to be 48
|
Sets the TLS ticket keys file to load the keys from. The keys need to be 48
|
||||||
or 80 bytes long, depending if aes128 or aes256 is used, encoded with base64
|
or 80 bytes long, depending if aes128 or aes256 is used, encoded with base64
|
||||||
|
@ -1504,7 +1504,11 @@ static int bind_parse_process(char **args, int cur_arg, struct proxy *px, struct
|
|||||||
}
|
}
|
||||||
|
|
||||||
conf->settings.bind_thread |= thread;
|
conf->settings.bind_thread |= thread;
|
||||||
return 0;
|
|
||||||
|
memprintf(err, "'process %s' on 'bind' lines is deprecated and will be removed in 2.7.", args[cur_arg+1]);
|
||||||
|
if (slash)
|
||||||
|
memprintf(err, "%s Please use 'thread %s' instead.", *err, slash + 1);
|
||||||
|
return ERR_WARN;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* parse the "proto" bind keyword */
|
/* parse the "proto" bind keyword */
|
||||||
@ -1526,6 +1530,30 @@ static int bind_parse_proto(char **args, int cur_arg, struct proxy *px, struct b
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* parse the "thread" bind keyword */
|
||||||
|
static int bind_parse_thread(char **args, int cur_arg, struct proxy *px, struct bind_conf *conf, char **err)
|
||||||
|
{
|
||||||
|
char *slash;
|
||||||
|
unsigned long thread = 0;
|
||||||
|
|
||||||
|
if ((slash = strchr(args[cur_arg + 1], '/')) != NULL)
|
||||||
|
*slash = 0;
|
||||||
|
|
||||||
|
if (slash) {
|
||||||
|
*slash = '/';
|
||||||
|
memprintf(err, "'%s': thread groups not supported", args[cur_arg+1]);
|
||||||
|
return ERR_ALERT | ERR_FATAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parse_process_number(args[cur_arg+1], &thread, MAX_THREADS, NULL, err)) {
|
||||||
|
memprintf(err, "'%s' : %s", args[cur_arg+1], *err);
|
||||||
|
return ERR_ALERT | ERR_FATAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
conf->settings.bind_thread |= thread;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* config parser for global "tune.listener.multi-queue", accepts "on" or "off" */
|
/* config parser for global "tune.listener.multi-queue", accepts "on" or "off" */
|
||||||
static int cfg_parse_tune_listener_mq(char **args, int section_type, struct proxy *curpx,
|
static int cfg_parse_tune_listener_mq(char **args, int section_type, struct proxy *curpx,
|
||||||
const struct proxy *defpx, const char *file, int line,
|
const struct proxy *defpx, const char *file, int line,
|
||||||
@ -1583,6 +1611,7 @@ static struct bind_kw_list bind_kws = { "ALL", { }, {
|
|||||||
{ "nice", bind_parse_nice, 1 }, /* set nice of listening socket */
|
{ "nice", bind_parse_nice, 1 }, /* set nice of listening socket */
|
||||||
{ "process", bind_parse_process, 1 }, /* set list of allowed process for this socket */
|
{ "process", bind_parse_process, 1 }, /* set list of allowed process for this socket */
|
||||||
{ "proto", bind_parse_proto, 1 }, /* set the proto to use for all incoming connections */
|
{ "proto", bind_parse_proto, 1 }, /* set the proto to use for all incoming connections */
|
||||||
|
{ "thread", bind_parse_thread, 1 }, /* set list of allowed threads for this socket */
|
||||||
{ /* END */ },
|
{ /* END */ },
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user