>
add server <backend>/<server> [args]*
- Instantiate a new server attached to the backend <backend>. Only supported on
- a CLI connection running in experimental mode (see "experimental-mode on").
- This method is still in development and may change in the future.
+ Instantiate a new server attached to the backend <backend>.
The <server> name must not be already used in the backend. A special
restriction is put on the backend which must used a dynamic load-balancing
set the mode for any worker when connecting to its CLI.
Example:
- echo "@1; experimental-mode on; del server be1/s2" | socat /var/run/haproxy.master -
- echo "experimental-mode on; @1 del server be1/s2" | socat /var/run/haproxy.master -
+ echo "@1; experimental-mode on; <experimental_cmd>..." | socat /var/run/haproxy.master -
+ echo "experimental-mode on; @1 <experimental_cmd>..." | socat /var/run/haproxy.master -
expert-mode [on|off]
This command is similar to experimental-mode but is used to toggle the
# check on a functional server
haproxy h1 -cli {
- send "experimental-mode on; add server be1/s1 ${s1_addr}:${s1_port} check inter 200ms rise 1 fall 1"
+ send "add server be1/s1 ${s1_addr}:${s1_port} check inter 200ms rise 1 fall 1"
expect ~ "New server registered."
send "enable server be1/s1"
send "disable server be1/s1"
expect ~ ".*"
- send "experimental-mode on; del server be1/s1"
+ send "del server be1/s1"
expect ~ "Server deleted."
}
# check on a disabled server
haproxy h1 -cli {
- send "experimental-mode on; add server be1/s2 ${s2_addr}:${s2_port} check inter 200ms rise 1 fall 1"
+ send "add server be1/s2 ${s2_addr}:${s2_port} check inter 200ms rise 1 fall 1"
expect ~ "New server registered."
send "enable server be1/s2"
send "disable server be1/s2"
expect ~ ".*"
- send "experimental-mode on; del server be1/s2"
+ send "del server be1/s2"
expect ~ "Server deleted."
}
# agent check
haproxy h1 -cli {
- send "experimental-mode on; add server be1/s3 ${s1_addr}:${s1_port} agent-check agent-addr ${s3_addr} agent-port ${s3_port} agent-send 'hello' agent-inter 200ms rise 1 fall 1"
+ send "add server be1/s3 ${s1_addr}:${s1_port} agent-check agent-addr ${s3_addr} agent-port ${s3_port} agent-send 'hello' agent-inter 200ms rise 1 fall 1"
expect ~ "New server registered."
send "enable agent be1/s3"
send "disable agent be1/s3; disable server be1/s3"
expect ~ ".*"
- send "experimental-mode on; del server be1/s3"
+ send "del server be1/s3"
expect ~ "Server deleted."
}
} -run
haproxy h1 -cli {
- # experimental mode disabled
- send "add server foo/s1 ${s1_addr}:${s1_port}"
- expect ~ "This command is restricted to experimental mode only."
-
# non existent backend
- send "experimental-mode on; add server foo/s1 ${s1_addr}:${s1_port}"
+ send "add server foo/s1 ${s1_addr}:${s1_port}"
expect ~ "No such backend."
# missing address
- send "experimental-mode on; add server test/s1"
+ send "add server test/s1"
expect ~ "'server' expects <name> and <addr>\\[:<port>\\] as arguments."
# invalid load-balancing algo
- send "experimental-mode on; add server other/s1 ${s1_addr}:${s1_port}"
+ send "add server other/s1 ${s1_addr}:${s1_port}"
expect ~ "Backend must use a dynamic load balancing to support dynamic servers."
# invalid mux proto
- send "experimental-mode on; add server other2/s1 ${s1_addr}:${s1_port} proto h2"
+ send "add server other2/s1 ${s1_addr}:${s1_port} proto h2"
expect ~ "MUX protocol is not usable for server."
# valid command
- send "experimental-mode on; add server test/s1 ${s1_addr}:${s1_port}"
+ send "add server test/s1 ${s1_addr}:${s1_port}"
expect ~ "New server registered."
# duplicate server
- send "experimental-mode on; add server test/s1 ${s1_addr}:${s1_port}"
+ send "add server test/s1 ${s1_addr}:${s1_port}"
expect ~ "Already exists a server with the same name in backend."
# valid command
# specify the proto, it should be accepted for this backend
- send "experimental-mode on; add server test/s2 ${s1_addr}:${s1_port} proto h2"
+ send "add server test/s2 ${s1_addr}:${s1_port} proto h2"
expect ~ "New server registered."
}
haproxy h1 -cli {
# non existent backend
- send "experimental-mode on; add server li-ssl/s1 ${h1_feSslTerm_addr}:${h1_feSslTerm_port} ssl ca-file common.pem verify none"
+ send "add server li-ssl/s1 ${h1_feSslTerm_addr}:${h1_feSslTerm_port} ssl ca-file common.pem verify none"
expect ~ "New server registered."
send "enable server li-ssl/s1"
###
haproxy h1 -cli {
# invalid command: track on a non-checked server
- send "experimental-mode on; add server be_check/s1 ${s1_addr}:${s1_port} track be_check/srv_no_check"
+ send "add server be_check/s1 ${s1_addr}:${s1_port} track be_check/srv_no_check"
expect ~ "unable to use be_check/srv_no_check for tracking as it does not have any check nor agent enabled."
# valid track usage
- send "experimental-mode on; add server be_check/s1 ${s1_addr}:${s1_port} track be_check/srv_check"
+ send "add server be_check/s1 ${s1_addr}:${s1_port} track be_check/srv_check"
expect ~ "New server registered."
# invalid command: track on a dynamic server
- send "experimental-mode on; add server be_check/s3 ${s1_addr}:${s1_port} track be_check/s1"
+ send "add server be_check/s3 ${s1_addr}:${s1_port} track be_check/s1"
expect ~ "unable to use be_check/s1 for tracking as it is a dynamic server."
}
# Delete the first dynamic server, enable be1/srv, S1 should report s1 and s3 UP
####
haproxy h1 -cli {
- send "experimental-mode on; add server be1/s1 ${s1_addr}:${s1_port} track be1/srv"
+ send "add server be1/s1 ${s1_addr}:${s1_port} track be1/srv"
expect ~ "New server registered."
send "enable server be1/s1"
expect ~ ".*"
- send "experimental-mode on; add server be1/s2 ${s1_addr}:${s1_port} track be1/srv"
+ send "add server be1/s2 ${s1_addr}:${s1_port} track be1/srv"
expect ~ "New server registered."
send "enable server be1/s2"
expect ~ ".*"
- send "experimental-mode on; add server be1/s3 ${s1_addr}:${s1_port} track be1/srv"
+ send "add server be1/s3 ${s1_addr}:${s1_port} track be1/srv"
expect ~ "New server registered."
send "enable server be1/s3"
expect ~ ".*"
send "disable server be1/srv"
expect ~ ".*"
- send "experimental-mode on; del server be1/s1"
+ send "del server be1/s1"
expect ~ "Server deleted."
send "enable server be1/srv"
# Delete the second dynamic server, enable be2/srv, S2 should report s2 and s3 UP
####
haproxy h1 -cli {
- send "experimental-mode on; add server be2/s1 ${s1_addr}:${s1_port} track be2/srv"
+ send "add server be2/s1 ${s1_addr}:${s1_port} track be2/srv"
expect ~ "New server registered."
send "enable server be2/s1"
expect ~ ".*"
- send "experimental-mode on; add server be2/s2 ${s1_addr}:${s1_port} track be2/srv"
+ send "add server be2/s2 ${s1_addr}:${s1_port} track be2/srv"
expect ~ "New server registered."
send "enable server be2/s2"
expect ~ ".*"
- send "experimental-mode on; add server be2/s3 ${s1_addr}:${s1_port} track be2/srv"
+ send "add server be2/s3 ${s1_addr}:${s1_port} track be2/srv"
expect ~ "New server registered."
send "enable server be2/s3"
expect ~ ".*"
send "disable server be2/srv"
expect ~ ".*"
- send "experimental-mode on; del server be2/s2"
+ send "del server be2/s2"
expect ~ "Server deleted."
send "enable server be2/srv"
####
haproxy h1 -cli {
# create server 1, track on be3/srv
- send "experimental-mode on; add server be3/s1 ${s1_addr}:${s1_port} track be3/srv"
+ send "add server be3/s1 ${s1_addr}:${s1_port} track be3/srv"
expect ~ "New server registered."
send "enable server be3/s1"
expect ~ ".*"
# create server 2, track on be3/srv
- send "experimental-mode on; add server be3/s2 ${s1_addr}:${s1_port} track be3/srv"
+ send "add server be3/s2 ${s1_addr}:${s1_port} track be3/srv"
expect ~ "New server registered."
send "enable server be3/s2"
expect ~ ".*"
# create server 3, track on be3/srv
- send "experimental-mode on; add server be3/s3 ${s1_addr}:${s1_port} track be3/srv"
+ send "add server be3/s3 ${s1_addr}:${s1_port} track be3/srv"
expect ~ "New server registered."
send "enable server be3/s3"
expect ~ ".*"
# delete all dynamic servers
- send "experimental-mode on; disable server be3/s1; del server be3/s1"
+ send "disable server be3/s1; del server be3/s1"
expect ~ "Server deleted."
- send "experimental-mode on; disable server be3/s3; del server be3/s3"
+ send "disable server be3/s3; del server be3/s3"
expect ~ "Server deleted."
- send "experimental-mode on; disable server be3/s2; del server be3/s2"
+ send "disable server be3/s2; del server be3/s2"
expect ~ "Server deleted."
# disable / enable the static server
# add a new dynamic server to be able to delete it then
haproxy h1 -cli {
# add a dynamic server and enable it
- send "experimental-mode on; add server test/s2 ${s2_addr}:${s2_port}"
+ send "add server test/s2 ${s2_addr}:${s2_port}"
expect ~ "New server registered."
send "enable server test/s2"
}
haproxy h1 -cli {
- # experimental mode disabled
- send "del server test/s1"
- expect ~ "This command is restricted to experimental mode only."
-
# non existent backend
- send "experimental-mode on; del server foo/s1"
+ send "del server foo/s1"
expect ~ "No such backend."
# non existent server
- send "experimental-mode on; del server test/other"
+ send "del server test/other"
expect ~ "No such server."
}
# delete the dynamic server
haproxy h1 -cli {
# server not in maintenance mode
- send "experimental-mode on; del server test/s2"
+ send "del server test/s2"
expect ~ "Only servers in maintenance mode can be deleted."
send "disable server test/s2"
expect ~ ".*"
# valid command
- send "experimental-mode on; del server test/s2"
+ send "del server test/s2"
expect ~ "Server deleted."
}
} -start
haproxy h1 -cli {
- # experimental mode disabled
- send "del server test/s1"
- expect ~ "This command is restricted to experimental mode only."
-
# non existent backend
- send "experimental-mode on; del server foo/s1"
+ send "del server foo/s1"
expect ~ "No such backend."
# non existent server
- send "experimental-mode on; del server test/other"
+ send "del server test/other"
expect ~ "No such server."
# server referenced in ACL
- send "experimental-mode on; del server test/s1"
+ send "del server test/s1"
expect ~ "This server cannot be removed at runtime due to other configuration elements pointing to it."
# tracked server
- send "experimental-mode on; del server test/s2"
+ send "del server test/s2"
expect ~ "This server cannot be removed at runtime due to other configuration elements pointing to it."
# tracked server
- send "experimental-mode on; del server test/s3"
+ send "del server test/s3"
expect ~ "This server cannot be removed at runtime due to other configuration elements pointing to it."
# server in running mode
- send "experimental-mode on; del server test/s4"
+ send "del server test/s4"
expect ~ "Only servers in maintenance mode can be deleted."
send "disable server test/s4"
expect ~ ".*"
# valid command
- send "experimental-mode on; del server test/s4"
+ send "del server test/s4"
expect ~ "Server deleted."
}
expect ~ ".*"
# valid command
- send "experimental-mode on; del server test/s1"
+ send "del server test/s1"
expect ~ "Server deleted."
- send "experimental-mode on; del server test/s2"
+ send "del server test/s2"
expect ~ "Server deleted."
- send "experimental-mode on; del server test/s3"
+ send "del server test/s3"
expect ~ "Server deleted."
}
}
haproxy h1 -cli {
- send "experimental-mode on; add server test/s1 ${tmpdir}/ssl.sock ssl verify none crt ${testdir}/client1.pem"
+ send "add server test/s1 ${tmpdir}/ssl.sock ssl verify none crt ${testdir}/client1.pem"
expect ~ "New server registered."
send "enable server test/s1"
expect ~ ".*"
{ { "set", "server", NULL }, "set server <bk>/<srv> [opts] : change a server's state, weight, address or ssl", cli_parse_set_server },
{ { "get", "weight", NULL }, "get weight <bk>/<srv> : report a server's current weight", cli_parse_get_weight },
{ { "set", "weight", NULL }, "set weight <bk>/<srv> (DEPRECATED) : change a server's weight (use 'set server' instead)", cli_parse_set_weight },
- { { "add", "server", NULL }, "add server <bk>/<srv> : create a new server (EXPERIMENTAL)", cli_parse_add_server, NULL, NULL, NULL, ACCESS_EXPERIMENTAL },
- { { "del", "server", NULL }, "del server <bk>/<srv> : remove a dynamically added server (EXPERIMENTAL)", cli_parse_delete_server, NULL, NULL, NULL, ACCESS_EXPERIMENTAL },
+ { { "add", "server", NULL }, "add server <bk>/<srv> : create a new server", cli_parse_add_server, NULL },
+ { { "del", "server", NULL }, "del server <bk>/<srv> : remove a dynamically added server", cli_parse_delete_server, NULL },
{{},}
}};