Current Series Release Notes¶
18.0.0.0b1-225¶
Prelude¶
Behavior of rabbitmq_upgrade
variable has changed. It no longer can be used to reset the cluster state. It now acts solely as a flag to perform a rolling-upgrade of the existing cluster.
New Features¶
RabbitMQ policies now support the apply_to parameter to e.g have a policy target only classic_queues, exchanges, …
The option
rabbitmq_erlang_version_spec
has been added allowing deployers to set the version of erlang used on a given installation.
Added variable
rabbitmq_erlang_extra_args
that allows to define extra arguments for erlang.
Added a variable
rabbitmq_erlang_package_version
that can be used to define an erlang version being used whenexternal_repo
is used as package source.
The override
rabbitmq_memory_high_watermark
can be used to set the maximum size of the erlang Virtual Machine before the garbage collection is triggered. The default is lowered to0.2
, from0.4
as the garbage collection can require 2x of allocated amount during its operation. This can result in a equivalent use of0.4
, resulting in 40% of memory usage, visible to the rabbitMQ container. The original default setting of0.4
can lead to 80% memory allocation of rabbitMQ, potentially leading to a scenario where the underlying Linux kernel is killing the process due to shortage of virtual memory.
RabbitMQ version is upgraded to a new major version 4.0
Add
rabbitmq_additional_config
to be able to add additional configuration e.g. to add configuration for plugins.
New variables that provide better control over RabbitMQ management interface have been implemented:
rabbitmq_management_bind_tcp_port
rabbitmq_management_bind_tls_port
rabbitmq_management_ssl
Added variable
rabbitmq_init_overrides
that allows to control rabbitmq overrides that will be applied to the systemd service. Previously values were hardcoded without possibility for override.
Add the abbility to configure the logging options with the variable
rabbitmq_log
of the rabbitmq-server using key-value pairs. The default values for journald (true) and file (false) are keept but more options (see https://www.rabbitmq.com/logging.html) can be configured now.
Add ability to set the environment variable
RABBITMQ_USE_LONGNAMES
via therabbitmq-env.conf
to be able to use the FQDN of a node. By default this will be set tofalse
, the default value also set by RabbitMQ.
Added variable
rabbitmq_manage_hosts_entries
that controls if rabbitmq_server role will attempt to adjust /etc/hosts file
The apt repository setup for the rabbitmq_server role is migrated to use the deb822_repository ansible module rather than the legacy apt_key and apt_repository modules. The format of the rabbitmq_repo and rabbitmq_erlang_repo ole default variables are changed to match the requirements of the new module, and are now lists allowing multiple repositories to be configured if required.
The previously used apt/yum package repositories for rabbitmq located at novemberain.com are have been replaced with those found at rabbitmq.com, in accordance with changes to the rabbitmq installation guide.
Upgrade Notes¶
Support is added to enable all stable RabbitMQ feature flags by default. This happens automatically post upgrade, and avoids compatibility issues which could occur when installing a new version of RabbitMQ.
The rabbitMQ high watermark is set to
0.2
rather than0.4
to prevent possible OOM situations, which limits the maximum memory usage by rabbitMQ to 40% rather than 80% of the memory visible to the rabbitMQ container. The overriderabbitmq_memory_high_watermark
can be used to alter the limit.
The data structure for
rabbitmq_gpg_keys
has been changed to be a dict passed directly to the applicable apt_key/rpm_key module. As such any overrides would need to be reviewed to ensure that they do not pass any key/value pairs which would cause the module to fail.
The default values for
rabbitmq_gpg_keys
have been changed for all supported platforms will use vendored keys. This means that the task execution will no longer reach out to the internet to add the keys, making offline or proxy-based installations easier and more reliable.
The default queue policy has changed to
^(?!(amq\.)|(.*_fanout_)|(reply_)).*
instead of^(?!amq\.).*
for efficiency. The new HA policy excludes reply queues (these queues have a single consumer and TTL policy), fanout queues (they have the TTL policy) and amq queues (they are auto-delete queues, with a single consumer).
The default Mnesia
dump_log_write_threshold
value has changed to300
instead of100
for efficiency.dump_log_write_threshold
specifies the maximum number of writes allowed to the transaction log before a new dump of the log is performed. Increasing this value can increase the performances during the queues/exchanges/bindings creation/destroying. The values should be between 100 and 1000. More detail [1].[1] http://erlang.org/doc/man/mnesia.html#dump_log_write_threshold
Please, make sure you are running RabbitMQ version of 3.13 before proceeding with the upgrade. In case you RabbitMQ version is lower then 3.13 upgrade to 4.0 will fail. You can run upgrade to 3.13 with same version of role by supplying variable
rabbitmq_package_version
during runtime, for example:openstack-ansible openstack.osa.rabbitmq_server -e rabbitmq_upgrade=true -e rabbitmq_package_version=3.13.7-1
and then re-running upgrade normally to 4.0.
The option rabbitmq_disable_non_tls_listeners has been removed in favor of setting the bind address and port configuration directly using a new option rabbitmq_port_bindings. This new option is a hash allowing for multiple bind addresses and port configurations.
RabbitMQ was migrated to the new-style config, which resides in
/etc/rabbitmq/rabbitmq.conf
. Old configrabbitmq.config
will be removed during upgrade.
The configuration of apt repositories for the rabbitmq_server role through the rabbitmq_repo variable is changed to match the deb822_repository ansible module. Any deployments that customise the repository configuration should adjust their rabbitmq_repo and rabbitmq_erlang_repo overrides to suit.
The previously used apt/yum package repositories for rabbitmq located at novemberain.com are have been replaced with those found at rabbitmq.com, in accordance with changes to the rabbitmq installation guide. Any local mirrors should be adjusted to use the recommended upstream sources.
Deprecation Notes¶
The use of the
apt_package_pinning
role as a meta dependency has been removed from the rabbitmq_server role. While the package pinning role is still used, it will now only be executed when the apt task file is executed.
Variable
rabbitmq_erlang_version_spec
has been deprecated and does not have any effect anymore. Please, userabbitmq_erlang_package_version
instead.
rabbitmq_install_method: file is deprecated now and will be removed in the Wallaby release. As for now supported options are only external_repo and distro. Among with that the following variables are deprecated and prepared for the removal:
rabbitmq_package_url
rabbitmq_package_sha256
rabbitmq_package_path
Variable rabbitmq_release_version has been removed as not used anymore.
RabbitMQ packages are no longer provided by PackageCloud due to the upstream repository being no longer available after 2023-05-28. Installations will now utilize a community mirror of CloudSmith repositories for rabbitmq and erlang.
https://github.com/rabbitmq/rabbitmq-server/discussions/8386
Bug Fixes¶
Do not duplicate records in /etc/hosts file by rabbitmq role when hosts file is already managed by OSA.
Other Notes¶
Version of RabbitMQ is bumped to 3.11.7, Erlang version is bumped to 25.2.
Default source of rabbitmq and erlang packages has been switched to cloudsmith.io
Supplying
rabbitmq_upgrade=true
no longer re-initialize cluster and will perform regular rolling upgrade of the RabbitMQ cluster.