rabbitmq config changes not applied in newer format

Eugen Block eblock at nde.ag
Thu Mar 24 14:33:03 UTC 2022


Update: it doesn't seem to be a problem with the config file format  
but with the clustering. On a VM (single-control node) I tried the  
"newer" config file format and it worked. But that node is not part of  
a cluster, in our production cloud we have the "classic_config"  
enabled as backend and a list of all cluster nodes in the config file:

cluster_formation.peer_discovery_backend = classic_config
cluster_formation.classic_config.nodes.1 = rabbit at controller01.fqdn
cluster_formation.classic_config.nodes.2 = rabbit at controller02.fqdn
cluster_formation.classic_config.nodes.3 = rabbit at controller01
cluster_formation.classic_config.nodes.4 = rabbit at controller02

When I remove that cluster part from the newer config file the node  
doesn't join the cluster, this is what the config looks like:

listeners.tcp.all_ips   = 0.0.0.0:5672
management.load_definitions = /etc/rabbitmq/definitions.json
management.ssl.port = 15671
management.ssl.ip   = 0.0.0.0
management.ssl.cacertfile = /path/to/cafile
management.ssl.certfile   = /path/to/certfile
management.ssl.keyfile    = /path/to/keyfile

This is the error message:

2022-03-24 15:25:49.183 [info] <0.1227.0> WAL: recovering  
["/var/lib/rabbitmq/mnesia/rabbit at controller01/quorum/rabbit at controller01/00000002.wal"]
2022-03-24 15:25:49.359 [warning] <0.1227.0> wal: encountered error  
during recovery: badarg

Then I switch back to the old format where no clustering is mentioned  
at all and it works. Could anyone give me a hint what I'm doing wrong?


Zitat von Eugen Block <eblock at nde.ag>:

> Hi *,
>
> this might not be the right place to ask but I'm curious how others  
> configure their rabbitmq.
>
> RabbitMQ version: 3.8.3
> OpenStack version: Ussuri/Victoria (two different clusters)
>
> We have a highly available cloud controlled by pacemaker. The  
> deployment is based on our own Salt states. We noticed that our  
> config is not applied (e. g. after power outage), we need to import  
> those manually with 'rabbitmqctl import /path/to/definitions.json'.  
> Comparing it to an older cloud version (Rocky, Rabbit version  
> 3.6.16) I noticed that the config format is different between those  
> versions, the older version uses a json format (?):
>
> ---snip---
> # old format
>
> cat /etc/rabbitmq/rabbitmq.config
> [
>  {mnesia,
>   [
>    {dump_log_write_threshold, 300},
>    {dump_log_time_threshold, 180000}
>   ]
>  },
>  {rabbit,
>   [
>    {collect_statistics_interval, 5000},
>    {tcp_listen_options, [
>                          {backlog, 128},{nodelay, true},{keepalive, false}
>                         ]
>    },
>    {tcp_listeners, [
>                     {"x.x.x.x", 5672}
>                    ]},
>    {cluster_partition_handling, pause_minority},
>    {queue_master_locator, <<"min-masters">>},
>    {disk_free_limit, 50000000}
>  ]},
>  {rabbitmq_management,
>   [
>    {listener, [{ip, "x.x.x.x"}, {port, 15673}]},
>    {load_definitions, "/etc/rabbitmq/definitions.json"}
>   ]
>  }
> ].
>
>
> # new format
> [...]
> listeners.tcp.default = 5672
> listeners.tcp.other_port = 5673
> listeners.tcp.other_ip   = x.x.x.x:5672
> [...]
> ---snip---
>
> If I switch to the old format and restart rabbitmq on that node, the  
> changes are applied successfully. Is this a known issue? Should I  
> just stick to the old format? Any comments are appreciated!
>
> Regards,
> Eugen






More information about the openstack-discuss mailing list