From d0a197b27d3782a5d8f93a1a81768d7e8095a394 Mon Sep 17 00:00:00 2001 From: mmachado Date: Thu, 8 Feb 2024 11:17:28 -0300 Subject: [PATCH] Change rabbitmq-server configuration files The files rabbitmq-server.ocf, rabbitmq-server.service and rabbitmq-server.logrotate are currently being altered by rabbitmq-server-config on the config-files repo. This review includes a patch with the modified files. After this is merged, the rabbitmq-server-config package should be removed from the config-files repo. Test-Plan: PASS: Build package and ISO PASS: Install AIO-SX PASS: Install AIO-DX Story: 2011050 Task: 49610 Depends-On: https://review.opendev.org/c/starlingx/upstream/+/905649 Change-Id: Ie9d0539c0370858e67779a7390a73745db1a0247 Signed-off-by: mmachado --- ...-rabbitmq-server-configuration-files.patch | 76 +++++++ .../rabbitmq-server/debian/deb_patches/series | 1 + ...-rabbitmq-server-configuration-files.patch | 210 ++++++++++++++++++ .../rabbitmq-server/debian/patches/series | 1 + 4 files changed, 288 insertions(+) create mode 100644 openstack/rabbitmq-server/debian/deb_patches/0002-Change-rabbitmq-server-configuration-files.patch create mode 100644 openstack/rabbitmq-server/debian/patches/0002-Change-rabbitmq-server-configuration-files.patch create mode 100644 openstack/rabbitmq-server/debian/patches/series diff --git a/openstack/rabbitmq-server/debian/deb_patches/0002-Change-rabbitmq-server-configuration-files.patch b/openstack/rabbitmq-server/debian/deb_patches/0002-Change-rabbitmq-server-configuration-files.patch new file mode 100644 index 00000000..657e3273 --- /dev/null +++ b/openstack/rabbitmq-server/debian/deb_patches/0002-Change-rabbitmq-server-configuration-files.patch @@ -0,0 +1,76 @@ +From 50beccaa8c01c519375606350bac3405dc4c9012 Mon Sep 17 00:00:00 2001 +From: mmachado +Date: Tue, 20 Feb 2024 11:55:17 -0300 +Subject: [PATCH] Change rabbitmq-server configuration files + +The files in this patch were previously implemented by the +rabbitmq-server-config package on the config-files repo. + +Signed-off-by: mmachado +--- + debian/rabbitmq-server.logrotate | 16 ++++-- + debian/rabbitmq-server.service | 21 +++---- + scripts/rabbitmq-server.ocf | 96 ++++++++++++++++++++++---------- + 3 files changed, 85 insertions(+), 48 deletions(-) + +diff --git a/debian/rabbitmq-server.logrotate b/debian/rabbitmq-server.logrotate +index c509b78..4c8f3b0 100644 +--- a/debian/rabbitmq-server.logrotate ++++ b/debian/rabbitmq-server.logrotate +@@ -1,7 +1,13 @@ + /var/log/rabbitmq/*.log { +- daily +- missingok +- compress +- delaycompress +- notifempty ++ weekly ++ missingok ++ rotate 20 ++ compress ++ delaycompress ++ notifempty ++ sharedscripts ++ postrotate ++ pgrep beam.smp >/dev/null && /usr/sbin/rabbitmqctl -q rotate_logs ++ true ++ endscript + } +diff --git a/debian/rabbitmq-server.service b/debian/rabbitmq-server.service +index fdaee4d..4715229 100644 +--- a/debian/rabbitmq-server.service ++++ b/debian/rabbitmq-server.service +@@ -1,24 +1,17 @@ + [Unit] +-Description=RabbitMQ Messaging Server +-After=network.target epmd.socket +-Wants=network.target epmd.socket ++Description=RabbitMQ broker ++After=network.target epmd@0.0.0.0.socket ++Wants=network.target epmd@0.0.0.0.socket + + [Service] + Type=notify +-User=rabbitmq +-Group=rabbitmq +-UMask=0027 ++User=root ++Group=root + NotifyAccess=all +-TimeoutStartSec=600 +-LimitNOFILE=65536 +-SyslogIdentifier=rabbitmq +-Restart=on-failure +-RestartSec=10 ++TimeoutStartSec=3600 + WorkingDirectory=/var/lib/rabbitmq + ExecStart=/usr/lib/rabbitmq/bin/rabbitmq-server +-ExecStop=/usr/sbin/rabbitmqctl stop +-StandardOutput=append:/var/log/rabbitmq/rabbitmq-server.log +-StandardError=append:/var/log/rabbitmq/rabbitmq-server.error.log ++ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl stop + OOMScoreAdjust=-500 + + [Install] +-- +2.37.1 diff --git a/openstack/rabbitmq-server/debian/deb_patches/series b/openstack/rabbitmq-server/debian/deb_patches/series index 4bcb2506..f26e2f35 100644 --- a/openstack/rabbitmq-server/debian/deb_patches/series +++ b/openstack/rabbitmq-server/debian/deb_patches/series @@ -1 +1,2 @@ 0001-WRS-Allow-rabbitmqctl-to-run-as-root-and-set-root-ho.patch +0002-Change-rabbitmq-server-configuration-files.patch diff --git a/openstack/rabbitmq-server/debian/patches/0002-Change-rabbitmq-server-configuration-files.patch b/openstack/rabbitmq-server/debian/patches/0002-Change-rabbitmq-server-configuration-files.patch new file mode 100644 index 00000000..e69f751c --- /dev/null +++ b/openstack/rabbitmq-server/debian/patches/0002-Change-rabbitmq-server-configuration-files.patch @@ -0,0 +1,210 @@ +From 50beccaa8c01c519375606350bac3405dc4c9012 Mon Sep 17 00:00:00 2001 +From: mmachado +Date: Tue, 20 Feb 2024 11:55:17 -0300 +Subject: [PATCH] Change rabbitmq-server configuration files + +The files in this patch were previously implemented by the +rabbitmq-server-config package on the config-files repo. + +Signed-off-by: mmachado +--- + debian/rabbitmq-server.logrotate | 16 ++++-- + debian/rabbitmq-server.service | 21 +++---- + scripts/rabbitmq-server.ocf | 96 ++++++++++++++++++++++---------- + 3 files changed, 85 insertions(+), 48 deletions(-) + +diff --git a/scripts/rabbitmq-server.ocf b/scripts/rabbitmq-server.ocf +index 7bf3fff..92fd7e1 100755 +--- a/scripts/rabbitmq-server.ocf ++++ b/scripts/rabbitmq-server.ocf +@@ -1,10 +1,18 @@ + #!/bin/sh +- +-## This Source Code Form is subject to the terms of the Mozilla Public +-## License, v. 2.0. If a copy of the MPL was not distributed with this +-## file, You can obtain one at https://mozilla.org/MPL/2.0/. ++## The contents of this file are subject to the Mozilla Public License ++## Version 1.1 (the "License"); you may not use this file except in ++## compliance with the License. You may obtain a copy of the License ++## at http://www.mozilla.org/MPL/ ++## ++## Software distributed under the License is distributed on an "AS IS" ++## basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See ++## the License for the specific language governing rights and ++## limitations under the License. ++## ++## The Original Code is RabbitMQ. + ## +-## Copyright (c) 2018-2020 VMware, Inc. or its affiliates. All rights reserved. ++## The Initial Developer of the Original Code is VMware, Inc. ++## Copyright (c) 2007-2013 VMware, Inc. All rights reserved. + ## + + ## +@@ -22,7 +30,9 @@ + ## OCF_RESKEY_mnesia_base + ## OCF_RESKEY_server_start_args + ## OCF_RESKEY_pid_file +-## OCF_RESKEY_limit_nofile ++## WRS ++# OCF_RESKEY_env_config_file ++# OCF_RESKEY_dist_port + + ####################################################################### + # Initialization: +@@ -32,18 +42,18 @@ + + ####################################################################### + ++. /etc/platform/platform.conf ++ + OCF_RESKEY_server_default="/usr/sbin/rabbitmq-server" + OCF_RESKEY_ctl_default="/usr/sbin/rabbitmqctl" + OCF_RESKEY_nodename_default="rabbit@localhost" + OCF_RESKEY_log_base_default="/var/log/rabbitmq" + OCF_RESKEY_pid_file_default="/var/run/rabbitmq/pid" +-OCF_RESKEY_limit_nofile_default=65535 + : ${OCF_RESKEY_server=${OCF_RESKEY_server_default}} + : ${OCF_RESKEY_ctl=${OCF_RESKEY_ctl_default}} + : ${OCF_RESKEY_nodename=${OCF_RESKEY_nodename_default}} + : ${OCF_RESKEY_log_base=${OCF_RESKEY_log_base_default}} + : ${OCF_RESKEY_pid_file=${OCF_RESKEY_pid_file_default}} +-: ${OCF_RESKEY_limit_nofile=${OCF_RESKEY_limit_nofile_default}} + + meta_data() { + cat < + + +- +- +-Soft and hard limit for NOFILE +- +-NOFILE limit +- +- +- + + + +@@ -175,14 +177,25 @@ RABBITMQ_NODENAME=$OCF_RESKEY_nodename + RABBITMQ_NODE_IP_ADDRESS=$OCF_RESKEY_ip + RABBITMQ_NODE_PORT=$OCF_RESKEY_port + RABBITMQ_CONFIG_FILE=$OCF_RESKEY_config_file ++RABBITMQ_CONF_ENV_FILE=$OCF_RESKEY_env_config_file ++RABBITMQ_DIST_PORT=$OCF_RESKEY_dist_port + RABBITMQ_LOG_BASE=$OCF_RESKEY_log_base + RABBITMQ_MNESIA_BASE=$OCF_RESKEY_mnesia_base + RABBITMQ_SERVER_START_ARGS=$OCF_RESKEY_server_start_args + RABBITMQ_PID_FILE=$OCF_RESKEY_pid_file +-RABBITMQ_LIMIT_NOFILE=$OCF_RESKEY_limit_nofile + [ ! -z $RABBITMQ_NODENAME ] && NODENAME_ARG="-n $RABBITMQ_NODENAME" + [ ! -z $RABBITMQ_NODENAME ] && export RABBITMQ_NODENAME + ++# ++# Make sure a HOME directory is set and exported for rabbitmqctl ++# to work, otherwise an error "erlexec: HOME must be set" will ++# result. Erlang exec requires a HOME directory to be set. ++# Rabbit-Server will source a different directory from the config ++# file. ++# ++HOME=/tmp ++export HOME ++ + ensure_pid_dir () { + PID_DIR=`dirname ${RABBITMQ_PID_FILE}` + if [ ! -d ${PID_DIR} ] ; then +@@ -201,20 +214,15 @@ remove_pid () { + export_vars() { + [ ! -z $RABBITMQ_NODE_IP_ADDRESS ] && export RABBITMQ_NODE_IP_ADDRESS + [ ! -z $RABBITMQ_NODE_PORT ] && export RABBITMQ_NODE_PORT ++ [ ! -z $RABBITMQ_DIST_PORT ] && export RABBITMQ_DIST_PORT + [ ! -z $RABBITMQ_CONFIG_FILE ] && export RABBITMQ_CONFIG_FILE ++ [ ! -z $RABBITMQ_CONF_ENV_FILE ] && export RABBITMQ_CONF_ENV_FILE + [ ! -z $RABBITMQ_LOG_BASE ] && export RABBITMQ_LOG_BASE + [ ! -z $RABBITMQ_MNESIA_BASE ] && export RABBITMQ_MNESIA_BASE + [ ! -z $RABBITMQ_SERVER_START_ARGS ] && export RABBITMQ_SERVER_START_ARGS + [ ! -z $RABBITMQ_PID_FILE ] && ensure_pid_dir && export RABBITMQ_PID_FILE + } + +-set_limits() { +- local current_limit=$(su rabbitmq -s /bin/sh -c "ulimit -n") +- if [ ! -z $RABBITMQ_LIMIT_NOFILE -a $RABBITMQ_LIMIT_NOFILE -gt $current_limit ] ; then +- ulimit -n $RABBITMQ_LIMIT_NOFILE +- fi +-} +- + rabbit_validate_partial() { + if [ ! -x $RABBITMQ_SERVER ]; then + ocf_log err "rabbitmq-server server $RABBITMQ_SERVER does not exist or is not executable"; +@@ -249,6 +257,15 @@ rabbit_validate_full() { + } + + rabbit_status() { ++ # The rabbitmqctl command requires the erlang cookie to be available or it ++ # crashes. If we are on the standby controller, the rabbit filesystem ++ # (and the cookie) are not available, so lets fail gracefully here if the ++ # rabbit database directory is not visible. ++ if [ ! -z $RABBITMQ_MNESIA_BASE ] && [ ! -d $RABBITMQ_MNESIA_BASE ]; then ++ ocf_log debug "Not checking status because rabbitmq-server mnesia_base $RABBITMQ_MNESIA_BASE does not exist or is not a directory"; ++ exit $OCF_NOT_RUNNING; ++ fi ++ + rabbitmqctl_action "status" + } + +@@ -268,7 +285,7 @@ rabbitmqctl_action() { + return $OCF_SUCCESS + ;; + 1|2|69) +- ocf_log debug "RabbitMQ server is not running" ++ ocf_log debug "RabbitMQ server is not running: $rc" + return $OCF_NOT_RUNNING + ;; + *) +@@ -287,10 +304,29 @@ rabbit_start() { + + export_vars + +- # RabbitMQ requires high soft and hard limits for NOFILE +- set_limits +- +- setsid sh -c "$RABBITMQ_SERVER > ${RABBITMQ_LOG_BASE}/startup_log 2> ${RABBITMQ_LOG_BASE}/startup_err" & ++ # Increase the maximum number of file descriptors that can be open at ++ # once - required for large systems. ++ ulimit -n 8192 ++ if [ "${system_type}" = "All-in-one" ]; then ++ # Rabbit/beam related tasks should be on platform cores from the get go. ++ # If they are affined to all cores during initialization sequence of AIO, ++ # the system will end up with many extra beam threads that are not in use. ++ source /etc/init.d/cpumap_functions.sh ++ PLATFORM_CPULIST=$(platform_expanded_cpu_list) ++ PLATFORM_CPUS=$(get_platform_cpus) ++ # Calculate thread pool size based on PLATFORM_CPUS ++ # Refer to: https://github.com/rabbitmq/rabbitmq-common/commit/4f9ef33cf9ba52197ff210ffcdf6629c1b7a6e9e ++ RABBITMQ_IO_THREAD_POOL_SIZE=$((${PLATFORM_CPUS} * 16)) ++ if [ ${RABBITMQ_IO_THREAD_POOL_SIZE} -lt 64 ]; then ++ RABBITMQ_IO_THREAD_POOL_SIZE=64 ++ elif [ ${RABBITMQ_IO_THREAD_POOL_SIZE} -gt 1024 ]; then ++ RABBITMQ_IO_THREAD_POOL_SIZE=1024 ++ fi ++ export RABBITMQ_IO_THREAD_POOL_SIZE ++ setsid sh -c "exec taskset -c ${PLATFORM_CPULIST} $RABBITMQ_SERVER >> ${RABBITMQ_LOG_BASE}/startup_log 2>> ${RABBITMQ_LOG_BASE}/startup_err" & ++ else ++ setsid sh -c "$RABBITMQ_SERVER >> ${RABBITMQ_LOG_BASE}/startup_log 2>> ${RABBITMQ_LOG_BASE}/startup_err" & ++ fi + + # Wait for the server to come up. + # Let the CRM/LRM time us out if required +@@ -363,6 +399,8 @@ else + rabbit_validate_full + fi + ++export_vars ++ + case $__OCF_ACTION in + start) + rabbit_start +-- +2.37.1 diff --git a/openstack/rabbitmq-server/debian/patches/series b/openstack/rabbitmq-server/debian/patches/series new file mode 100644 index 00000000..42f624c1 --- /dev/null +++ b/openstack/rabbitmq-server/debian/patches/series @@ -0,0 +1 @@ +0002-Change-rabbitmq-server-configuration-files.patch