You start HAProxy by invoking the "hapee-lb" program (located in
/opt/hapee-1.6/sbin/) with a number of arguments passed on the command line. The syntax is:
$ hapee-lb [<options>]*
[<options>]* are any number of options.
An option always starts with
-followed by one of more letters, and possibly followed by one or multiple extra arguments.
Without any option, HAProxy displays the help page with a reminder about supported options.
Available options may vary slightly based on the operating system. See available options below.
Start HAProxy in safe mode
A safe way to start HAProxy from an init file consists in forcing the daemon mode, storing existing pids to a pid file and using this pid file to notify older processes to finish before leaving:
hapee-lb -f /etc/haproxy.cfg -D -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)
Start HAProxy with split configuration files
If you configuration is split into several specific files (eg: tcp vs http), we recommend that you use the
hapee-lb -f /etc/haproxy/global.cfg -f /etc/haproxy/stats.cfg -f /etc/haproxy/default-tcp.cfg -f /etc/haproxy/tcp.cfg -f /etc/haproxy/default-http.cfg -f /etc/haproxy/http.cfg -D -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)
When the number of files is unknown, such as customer-specific files, we recommended that you assign them a name starting with a fixed-size sequence number and to use
- to load them.
hapee-lb -f /etc/haproxy/global.cfg -f /etc/haproxy/stats.cfg -f /etc/haproxy/default-tcp.cfg -f /etc/haproxy/tcp.cfg -f /etc/haproxy/default-http.cfg -f /etc/haproxy/http.cfg -D -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid) -f /etc/haproxy/default-customers.cfg -- /etc/haproxy/customers/*
Enable master-worker model
In the master-worker model, HAProxy launches one master process and starts a number of additional worker processes under it.
The new master process monitors all worker processes and controls them from a single instance and relieves systemd or other software from these tasks.
To enable the master/worker model, you can use one of the following approaches:
Use the new directive in the global configuration section named master-worker
Start the haproxy process with the command line argument
In this example, HAProxy is running with an nbproc of 2, both running under the same master process:
/opt/hapee-1.6/sbin/hapee-lb -Ws -f /etc/hapee-1.6/hapee-lb.cfg -p /run/hapee-1.6-lb.pid -sf 4928 -x /var/run/hapee-1.6/hapee-lb.sock _ /opt/hapee-1.6/sbin/hapee-lb -Ws -f /etc/hapee-1.6/hapee-lb.cfg -p /run/hapee-1.6-lb.pid -sf 4928 -x /var/run/hapee-1.6/hapee-lb.sock _ /opt/hapee-1.6/sbin/hapee-lb -Ws -f /etc/hapee-1.6/hapee-lb.cfg -p /run/hapee-1.6-lb.pid -sf 4928 -x /var/run/hapee-1.6/hapee-lb.sock
For instance, if
expose-fd listeners is present on a
stats socket line in the configuration when the master gets a USR2 signal (i.e. when systemd is told to reload), HAProxy automatically adds a
-x argument with the socket path which forces the file descriptors of the listing sockets to be handed off without losing a single connection.
Post bug reports
Sometimes a failure to start can happen for unknown reasons. Check that the version of HAProxy you are invoking is the expected version, and if it supports the features you are expecting (such as SSL, PCRE, compression, Lua, etc).
You can verify this by using
/opt/hapee-1.6/sbin/hapee-lb -vv to retrieve important information such as build options, the target system, and the versions of the libraries used. HAProxy Support will systematically ask for this information when you post a bug report:
$ /opt/hapee-1.6/sbin/hapee-lb -vv HA-Proxy 1.6.0-2.0.0-191.746 2019/01/23 Copyright 2000-2017 Willy Tarreau <email@example.com>
High level information
The relevant information that many non-developer users can verify here are:
Build options: TARGET = linux2628 CPU = generic CC = gcc CFLAGS = -pg -O0 -g -fno-strict-aliasing -Wdeclaration-after-statement -DBUFSIZE=8030 -DMAXREWRITE=1030 -DSO_MARK=36 -DTCP_REPAIR=19 OPTIONS = USE_ZLIB=1 USE_DLMALLOC=1 USE_OPENSSL=1 USE_LUA=1 USE_PCRE=1 Default settings : maxconn = 2000, bufsize = 8030, maxrewrite = 1030, maxpollevents = 200 Encrypted password support via crypt(3): yes Built with zlib version : 1.2.6 Compression algorithms supported : identity("identity"), deflate("deflate"), raw-deflate("deflate"), gzip("gzip") Built with OpenSSL version : OpenSSL 1.0.1o 12 Jun 2015 Running on OpenSSL verson : OpenSSL 1.0.1o 12 Jun 2015 OpenSSL library supports TLS extensions : yes OpenSSL library supports SNI : yes OpenSSL library supports prefer-server-ciphers : yes Built with PCRE version : 8.12 2011-01-15 PCRE library supports JIT : no (USE_PCRE_JIT not set) Built with Lua version : Lua 5.3.1 Built with transparent proxy support using: IP_TRANSPARENT IP_FREEBIND Available polling systems : epoll : pref=300, test result OK poll : pref=200, test result OK select : pref=150, test result OK Total: 3 (3 usable), will use epoll.
1.6-dev7-a088d3-4 above means the code is currently at commit ID a088d3 which is the 4th one after after official version 1.6-dev7. This is a production-ready version.
2015/10/08, represented in the universal year/month/day format (August 8th, 2015). If you see an old date here, it means there are a number of bugs or security issues that have since been fixed. Check the official site.