Process Manager
Use the program
directive to specify an external program that should run as a child process under HAProxy Enterprise.
Syntax
A program
section in your configuration is a set of directives that define the program to be run, its command-line options and flags, as well as user, group, and restart options.
Run the echo
command to print Hello World! when HAProxy Enterprise starts:
program echo
command echo "Hello, World!"
A functionally equivalent example that sets the user
and group
directives:
program echo
command echo "Hello, World!"
user hapee-lb
group hapee
When you restart HAProxy Enterprise, you can see that the echo
command executed then exited without error. You can use the Process Manager to execute long-running programs that live alongside HAProxy Enterprise too. Programs will restart and reload when HAProxy Enterprise does, unless you specify no option start-on-reload
.
$ sudo systemctl restart hapee-2.0-lb
$ sudo systemctl status hapee-2.0-lb
systemd[1]: Starting HAPEE Load Balancer...
hapee-lb[3330]: [NOTICE] 324/184322 (3330) : New program 'echo' (3351) forked
hapee-lb[3330]: [NOTICE] 324/184322 (3330) : New worker #1 (3352) forked
systemd[1]: Started HAPEE Load Balancer.
hapee-lb[3330]: Hello, World!
hapee-lb[3330]: [ALERT] 324/184322 (3330) : Current program 'echo' (3351) exited with code 0 (Exit)
An HAProxy Enterprise program
section is made up of the following directives:
Directive | Description | Required | Default |
---|---|---|---|
| The command to be run, with flags and options. | yes | none |
| The user to run the command as, if different than HAProxy Enterprise user. | no | HAProxy Enterprise user, e.g. hapee-lb. |
| The group to run the command as, if different than HAProxy Enterprise group. | no | HAProxy Enterprise group, e.g. hapee |
| HAProxy Enterprise stops and recreates child programs at reload. Disable this by setting | no |
|
Examples
Below we demonstrate more examples of using the Process Manager program
section in your configuration.
Data Plane API
Start the Data Plane API with HAProxy Enterprise, but do not restart it when HAProxy Enterprise reloads:
program dataplaneapi
command /usr/local/bin/dataplaneapi --host 0.0.0.0 --port 5555 --haproxy-bin /opt/hapee-2.0/sbin/hapee-lb --config-file /etc/hapee-2.0/hapee-lb.cfg --reload-cmd "systemctl reload hapee-2.0" --reload-delay 5 --userlist haproxy-dataplaneapi
no option start-on-reload
The directive no option start-on-reload
dictates that a new node of the program should not be started upon reload of the master.
Stream Processing Offload Agent
Start Stream Processing Offload Agent programs such as the Traffic Mirror agent:
program mirror
command spoa-mirror --runtime 0 --mirror-url http://test.local
user myusername
group mygroupname
You can specify a user
and group
to use when executing the command.
Next up
Multi-threading