https://bugzilla.redhat.com/show_bug.cgi?id=1104843
--- Comment #3 from John Eckersberg <jeckersb(a)redhat.com> ---
(In reply to Peter Lemenkov from comment #2)
Hello All.
A small update on this - both F-20/Rawhide and EPEL7 Erlang builds are now
containing epmd.socket file for socket-activated epmd. It's still not
enabled by default though (just because I didn't dig into details regarding
systemd presets).
I believe we should add the following lines to rabbitmq-server.service
After=epmd.socket
Requires=epmd.socket
Also I believe we can drop ExecStartPre now.
This does work, after making some tweaks.
As is, rabbitmq-server fails to start because epmd is set to bind only to
localhost, and rabbit is trying to connect on the "public" interface.
Localhost is explicitly set in epmd.socket:
ListenStream=127.0.0.1:4369
And fails with the error:
Jun 13 21:03:08 jeckersb-f20 systemd[1]: Starting RabbitMQ broker...
Jun 13 21:03:09 jeckersb-f20 rabbitmqctl[1186]: Waiting for
'rabbit@jeckersb-f20' ...
Jun 13 21:03:09 jeckersb-f20 rabbitmqctl[1186]: pid is 1185 ...
Jun 13 21:03:09 jeckersb-f20 rabbitmq-server[1185]: ERROR: epmd error for host
"jeckersb-f20": address (cannot connect to host/port)
Jun 13 21:03:09 jeckersb-f20 systemd[1]: rabbitmq-server.service: main process
exited, code=exited, status=1/FAILURE
Jun 13 21:03:09 jeckersb-f20 rabbitmqctl[1186]: Error: process_not_running
Jun 13 21:03:09 jeckersb-f20 systemd[1]: rabbitmq-server.service: control
process exited, code=exited status=2
Jun 13 21:03:10 jeckersb-f20 rabbitmqctl[1253]: Stopping and halting node
'rabbit@jeckersb-f20' ...
Jun 13 21:03:10 jeckersb-f20 rabbitmqctl[1253]: Error: unable to connect to
node 'rabbit@jeckersb-f20': nodedown
Jun 13 21:03:10 jeckersb-f20 rabbitmqctl[1253]: DIAGNOSTICS
Jun 13 21:03:10 jeckersb-f20 rabbitmqctl[1253]: ===========
Jun 13 21:03:10 jeckersb-f20 rabbitmqctl[1253]: nodes in question:
['rabbit@jeckersb-f20']
Jun 13 21:03:10 jeckersb-f20 rabbitmqctl[1253]: hosts, their running nodes and
ports:
Jun 13 21:03:10 jeckersb-f20 rabbitmqctl[1253]: - unable to connect to epmd on
jeckersb-f20: address (cannot connect to host/port)
Jun 13 21:03:10 jeckersb-f20 rabbitmqctl[1253]: current node details:
Jun 13 21:03:10 jeckersb-f20 rabbitmqctl[1253]: - node name:
'rabbitmqctl1253@jeckersb-f20'
Jun 13 21:03:10 jeckersb-f20 rabbitmqctl[1253]: - home dir: /var/lib/rabbitmq
Jun 13 21:03:10 jeckersb-f20 rabbitmqctl[1253]: - cookie hash:
pjjhwhUNJ+O/cAmSUbP89w==
Jun 13 21:03:10 jeckersb-f20 systemd[1]: rabbitmq-server.service: control
process exited, code=exited status=2
Jun 13 21:03:10 jeckersb-f20 systemd[1]: Failed to start RabbitMQ broker.
Jun 13 21:03:10 jeckersb-f20 systemd[1]: Unit rabbitmq-server.service entered
failed state.
I tried changing this to be:
ListenStream=4369
Since that sounds like a sane dual-stack option, from systemd.socket(5):
"If the address string is a single number, it is read as port number to listen
on via IPv6. Depending on the value of BindIPv6Only= (see below) this might
result in the service being available via both IPv6 and IPv4 (default) or just
via IPv6."
However this causes rabbitmq-server to crash like so:
Jun 13 21:10:20 jeckersb-f20 systemd[1]: Starting RabbitMQ broker...
Jun 13 21:10:21 jeckersb-f20 rabbitmqctl[1587]:
{error_logger,{{2014,6,13},{21,10,21}},"Protocol: ~tp: register/listen error:
~tp~n",["inet_tcp",epmd_close]}
Jun 13 21:10:21 jeckersb-f20 rabbitmqctl[1587]:
{error_logger,{{2014,6,13},{21,10,21}},crash_report,[[{initial_call,{net_kernel,init,['Argument__1']}},{pid,<0.21.0>},{registered_name,[]},{error_info,{exit,{error,b
Jun 13 21:10:21 jeckersb-f20 rabbitmqctl[1587]:
{error_logger,{{2014,6,13},{21,10,21}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{pid,un
Jun 13 21:10:21 jeckersb-f20 rabbitmqctl[1587]:
{error_logger,{{2014,6,13},{21,10,21}},supervisor_report,[{supervisor,{local,kernel_sup}},{errorContext,start_error},{reason,{shutdown,{failed_to_start_child,net_ker
Jun 13 21:10:21 jeckersb-f20 rabbitmqctl[1587]:
{error_logger,{{2014,6,13},{21,10,21}},crash_report,[[{initial_call,{application_master,init,['Argument__1','Argument__2','Argument__3','Argument__4']}},{pid,<0.9.0>
Jun 13 21:10:21 jeckersb-f20 rabbitmqctl[1587]:
{error_logger,{{2014,6,13},{21,10,21}},std_info,[{application,kernel},{exited,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,net_kernel,{
Jun 13 21:10:21 jeckersb-f20 rabbitmq-server[1586]:
{error_logger,{{2014,6,13},{21,10,21}},"Protocol: ~tp: register/listen error:
~tp~n",["inet_tcp",epmd_close]}
Jun 13 21:10:21 jeckersb-f20 rabbitmq-server[1586]:
{error_logger,{{2014,6,13},{21,10,21}},crash_report,[[{initial_call,{net_kernel,init,['Argument__1']}},{pid,<0.21.0>},{registered_name,[]},{error_info,{exit,{err
Jun 13 21:10:21 jeckersb-f20 rabbitmq-server[1586]:
{error_logger,{{2014,6,13},{21,10,21}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{pi
Jun 13 21:10:21 jeckersb-f20 rabbitmq-server[1586]:
{error_logger,{{2014,6,13},{21,10,21}},supervisor_report,[{supervisor,{local,kernel_sup}},{errorContext,start_error},{reason,{shutdown,{failed_to_start_child,net
Jun 13 21:10:21 jeckersb-f20 rabbitmq-server[1586]:
{error_logger,{{2014,6,13},{21,10,21}},crash_report,[[{initial_call,{application_master,init,['Argument__1','Argument__2','Argument__3','Argument__4']}},{pid,<0.
Jun 13 21:10:21 jeckersb-f20 rabbitmq-server[1586]:
{error_logger,{{2014,6,13},{21,10,21}},std_info,[{application,kernel},{exited,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,net_kern
Jun 13 21:10:22 jeckersb-f20 rabbitmqctl[1587]: {"Kernel pid
terminated",application_controller,"{application_start_failure,kernel,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,net_ker
Jun 13 21:10:22 jeckersb-f20 rabbitmq-server[1586]: {"Kernel pid
terminated",application_controller,"{application_start_failure,kernel,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,net
Jun 13 21:10:23 jeckersb-f20 rabbitmqctl[1587]: Crash dump was written to:
erl_crash.dump
Jun 13 21:10:23 jeckersb-f20 rabbitmqctl[1587]: Kernel pid terminated
(application_controller)
({application_start_failure,kernel,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,net_kern
Jun 13 21:10:23 jeckersb-f20 systemd[1]: rabbitmq-server.service: control
process exited, code=exited status=1
Jun 13 21:10:23 jeckersb-f20 rabbitmq-server[1586]: Crash dump was written to:
erl_crash.dump
Jun 13 21:10:23 jeckersb-f20 rabbitmq-server[1586]: Kernel pid terminated
(application_controller)
({application_start_failure,kernel,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,net_
Jun 13 21:10:23 jeckersb-f20 systemd[1]: rabbitmq-server.service: main process
exited, code=exited, status=1/FAILURE
Jun 13 21:10:23 jeckersb-f20 rabbitmqctl[1658]:
{error_logger,{{2014,6,13},{21,10,23}},"Protocol: ~tp: register/listen error:
~tp~n",["inet_tcp",epmd_close]}
Jun 13 21:10:23 jeckersb-f20 rabbitmqctl[1658]:
{error_logger,{{2014,6,13},{21,10,23}},crash_report,[[{initial_call,{net_kernel,init,['Argument__1']}},{pid,<0.21.0>},{registered_name,[]},{error_info,{exit,{error,b
Jun 13 21:10:23 jeckersb-f20 rabbitmqctl[1658]:
{error_logger,{{2014,6,13},{21,10,23}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{pid,un
Jun 13 21:10:23 jeckersb-f20 rabbitmqctl[1658]:
{error_logger,{{2014,6,13},{21,10,23}},supervisor_report,[{supervisor,{local,kernel_sup}},{errorContext,start_error},{reason,{shutdown,{failed_to_start_child,net_ker
Jun 13 21:10:23 jeckersb-f20 rabbitmqctl[1658]:
{error_logger,{{2014,6,13},{21,10,23}},crash_report,[[{initial_call,{application_master,init,['Argument__1','Argument__2','Argument__3','Argument__4']}},{pid,<0.9.0>
Jun 13 21:10:23 jeckersb-f20 rabbitmqctl[1658]:
{error_logger,{{2014,6,13},{21,10,23}},std_info,[{application,kernel},{exited,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,net_kernel,{
Jun 13 21:10:23 jeckersb-f20 rabbitmqctl[1658]: {"Kernel pid
terminated",application_controller,"{application_start_failure,kernel,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,net_ker
Jun 13 21:10:24 jeckersb-f20 rabbitmqctl[1658]: Crash dump was written to:
erl_crash.dump
Jun 13 21:10:24 jeckersb-f20 rabbitmqctl[1658]: Kernel pid terminated
(application_controller)
({application_start_failure,kernel,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,net_kern
Jun 13 21:10:24 jeckersb-f20 systemd[1]: rabbitmq-server.service: control
process exited, code=exited status=1
Jun 13 21:10:24 jeckersb-f20 systemd[1]: Failed to start RabbitMQ broker.
Jun 13 21:10:24 jeckersb-f20 systemd[1]: Unit rabbitmq-server.service entered
failed state.
Finally, I forced it to listen IPv4 only, on all interfaces with:
ListenStream=0.0.0.0:4369
And this works as expected. So I agree that we should use the systemd-managed
epmd instance with all of its socket activation goodness, but only after the
fix above.
--
You are receiving this mail because:
You are on the CC list for the bug.