Merge pull request #21 from vuntz/ocf-limit_nofile
OCF RA: Add new limit_nofile parameter to both OCF resource agents
This commit is contained in:
commit
0da346eb88
|
@ -51,6 +51,7 @@ OCF_RESKEY_max_rabbitmqctl_timeouts_default=3
|
||||||
OCF_RESKEY_policy_file_default="/usr/local/sbin/set_rabbitmq_policy"
|
OCF_RESKEY_policy_file_default="/usr/local/sbin/set_rabbitmq_policy"
|
||||||
OCF_RESKEY_rmq_feature_health_check_default=true
|
OCF_RESKEY_rmq_feature_health_check_default=true
|
||||||
OCF_RESKEY_rmq_feature_local_list_queues_default=true
|
OCF_RESKEY_rmq_feature_local_list_queues_default=true
|
||||||
|
OCF_RESKEY_limit_nofile_default=65535
|
||||||
|
|
||||||
: ${HA_LOGTAG="lrmd"}
|
: ${HA_LOGTAG="lrmd"}
|
||||||
: ${HA_LOGFACILITY="daemon"}
|
: ${HA_LOGFACILITY="daemon"}
|
||||||
|
@ -76,6 +77,7 @@ OCF_RESKEY_rmq_feature_local_list_queues_default=true
|
||||||
: ${OCF_RESKEY_policy_file=${OCF_RESKEY_policy_file_default}}
|
: ${OCF_RESKEY_policy_file=${OCF_RESKEY_policy_file_default}}
|
||||||
: ${OCF_RESKEY_rmq_feature_health_check=${OCF_RESKEY_rmq_feature_health_check_default}}
|
: ${OCF_RESKEY_rmq_feature_health_check=${OCF_RESKEY_rmq_feature_health_check_default}}
|
||||||
: ${OCF_RESKEY_rmq_feature_local_list_queues=${OCF_RESKEY_rmq_feature_local_list_queues_default}}
|
: ${OCF_RESKEY_rmq_feature_local_list_queues=${OCF_RESKEY_rmq_feature_local_list_queues_default}}
|
||||||
|
: ${OCF_RESKEY_limit_nofile=${OCF_RESKEY_limit_nofile_default}}
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
|
|
||||||
|
@ -347,6 +349,14 @@ stopped/demoted.
|
||||||
<content type="boolean" default="${OCF_RESKEY_rmq_feature_local_list_queues_default}" />
|
<content type="boolean" default="${OCF_RESKEY_rmq_feature_local_list_queues_default}" />
|
||||||
</parameter>
|
</parameter>
|
||||||
|
|
||||||
|
<parameter name="limit_nofile" unique="0" required="0">
|
||||||
|
<longdesc lang="en">
|
||||||
|
Soft and hard limit for NOFILE
|
||||||
|
</longdesc>
|
||||||
|
<shortdesc lang="en">NOFILE limit</shortdesc>
|
||||||
|
<content type="string" default="${OCF_RESKEY_limit_nofile_default}" />
|
||||||
|
</parameter>
|
||||||
|
|
||||||
$EXTENDED_OCF_PARAMS
|
$EXTENDED_OCF_PARAMS
|
||||||
|
|
||||||
</parameters>
|
</parameters>
|
||||||
|
@ -571,6 +581,13 @@ now() {
|
||||||
date -u +%s
|
date -u +%s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_limits() {
|
||||||
|
local current_limit=$(su $OCF_RESKEY_username -s /bin/sh -c "ulimit -n")
|
||||||
|
if [ ! -z $OCF_RESKEY_limit_nofile -a $OCF_RESKEY_limit_nofile -gt $current_limit ] ; then
|
||||||
|
ulimit -n $OCF_RESKEY_limit_nofile
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
master_score() {
|
master_score() {
|
||||||
local LH="${LL} master_score():"
|
local LH="${LL} master_score():"
|
||||||
local score=$1
|
local score=$1
|
||||||
|
@ -1181,6 +1198,9 @@ start_beam_process() {
|
||||||
|
|
||||||
[ -f /etc/default/rabbitmq-server ] && . /etc/default/rabbitmq-server
|
[ -f /etc/default/rabbitmq-server ] && . /etc/default/rabbitmq-server
|
||||||
|
|
||||||
|
# RabbitMQ requires high soft and hard limits for NOFILE
|
||||||
|
set_limits
|
||||||
|
|
||||||
# run beam process
|
# run beam process
|
||||||
command="${OCF_RESKEY_binary} >> \"${OCF_RESKEY_log_dir}/startup_log\" 2>/dev/null"
|
command="${OCF_RESKEY_binary} >> \"${OCF_RESKEY_log_dir}/startup_log\" 2>/dev/null"
|
||||||
RABBITMQ_NODE_ONLY=1 su rabbitmq -s /bin/sh -c "${command}"&
|
RABBITMQ_NODE_ONLY=1 su rabbitmq -s /bin/sh -c "${command}"&
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
## OCF_RESKEY_mnesia_base
|
## OCF_RESKEY_mnesia_base
|
||||||
## OCF_RESKEY_server_start_args
|
## OCF_RESKEY_server_start_args
|
||||||
## OCF_RESKEY_pid_file
|
## OCF_RESKEY_pid_file
|
||||||
|
## OCF_RESKEY_limit_nofile
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# Initialization:
|
# Initialization:
|
||||||
|
@ -44,11 +45,13 @@ OCF_RESKEY_ctl_default="/usr/sbin/rabbitmqctl"
|
||||||
OCF_RESKEY_nodename_default="rabbit@localhost"
|
OCF_RESKEY_nodename_default="rabbit@localhost"
|
||||||
OCF_RESKEY_log_base_default="/var/log/rabbitmq"
|
OCF_RESKEY_log_base_default="/var/log/rabbitmq"
|
||||||
OCF_RESKEY_pid_file_default="/var/run/rabbitmq/pid"
|
OCF_RESKEY_pid_file_default="/var/run/rabbitmq/pid"
|
||||||
|
OCF_RESKEY_limit_nofile_default="65535"
|
||||||
: ${OCF_RESKEY_server=${OCF_RESKEY_server_default}}
|
: ${OCF_RESKEY_server=${OCF_RESKEY_server_default}}
|
||||||
: ${OCF_RESKEY_ctl=${OCF_RESKEY_ctl_default}}
|
: ${OCF_RESKEY_ctl=${OCF_RESKEY_ctl_default}}
|
||||||
: ${OCF_RESKEY_nodename=${OCF_RESKEY_nodename_default}}
|
: ${OCF_RESKEY_nodename=${OCF_RESKEY_nodename_default}}
|
||||||
: ${OCF_RESKEY_log_base=${OCF_RESKEY_log_base_default}}
|
: ${OCF_RESKEY_log_base=${OCF_RESKEY_log_base_default}}
|
||||||
: ${OCF_RESKEY_pid_file=${OCF_RESKEY_pid_file_default}}
|
: ${OCF_RESKEY_pid_file=${OCF_RESKEY_pid_file_default}}
|
||||||
|
: ${OCF_RESKEY_limit_nofile=${OCF_RESKEY_limit_nofile_default}}
|
||||||
|
|
||||||
meta_data() {
|
meta_data() {
|
||||||
cat <<END
|
cat <<END
|
||||||
|
@ -144,6 +147,14 @@ Location of the file in which the pid will be stored
|
||||||
<content type="string" default="${OCF_RESKEY_pid_file_default}" />
|
<content type="string" default="${OCF_RESKEY_pid_file_default}" />
|
||||||
</parameter>
|
</parameter>
|
||||||
|
|
||||||
|
<parameter name="limit_nofile" unique="0" required="0">
|
||||||
|
<longdesc lang="en">
|
||||||
|
Soft and hard limit for NOFILE
|
||||||
|
</longdesc>
|
||||||
|
<shortdesc lang="en">NOFILE limit</shortdesc>
|
||||||
|
<content type="string" default="${OCF_RESKEY_limit_nofile_default}" />
|
||||||
|
</parameter>
|
||||||
|
|
||||||
</parameters>
|
</parameters>
|
||||||
|
|
||||||
<actions>
|
<actions>
|
||||||
|
@ -176,6 +187,7 @@ RABBITMQ_LOG_BASE=$OCF_RESKEY_log_base
|
||||||
RABBITMQ_MNESIA_BASE=$OCF_RESKEY_mnesia_base
|
RABBITMQ_MNESIA_BASE=$OCF_RESKEY_mnesia_base
|
||||||
RABBITMQ_SERVER_START_ARGS=$OCF_RESKEY_server_start_args
|
RABBITMQ_SERVER_START_ARGS=$OCF_RESKEY_server_start_args
|
||||||
RABBITMQ_PID_FILE=$OCF_RESKEY_pid_file
|
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 ] && NODENAME_ARG="-n $RABBITMQ_NODENAME"
|
||||||
[ ! -z $RABBITMQ_NODENAME ] && export RABBITMQ_NODENAME
|
[ ! -z $RABBITMQ_NODENAME ] && export RABBITMQ_NODENAME
|
||||||
|
|
||||||
|
@ -204,6 +216,13 @@ export_vars() {
|
||||||
[ ! -z $RABBITMQ_PID_FILE ] && ensure_pid_dir && export RABBITMQ_PID_FILE
|
[ ! -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() {
|
rabbit_validate_partial() {
|
||||||
if [ ! -x $RABBITMQ_SERVER ]; then
|
if [ ! -x $RABBITMQ_SERVER ]; then
|
||||||
ocf_log err "rabbitmq-server server $RABBITMQ_SERVER does not exist or is not executable";
|
ocf_log err "rabbitmq-server server $RABBITMQ_SERVER does not exist or is not executable";
|
||||||
|
@ -276,6 +295,9 @@ rabbit_start() {
|
||||||
|
|
||||||
export_vars
|
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" &
|
setsid sh -c "$RABBITMQ_SERVER > ${RABBITMQ_LOG_BASE}/startup_log 2> ${RABBITMQ_LOG_BASE}/startup_err" &
|
||||||
|
|
||||||
# Wait for the server to come up.
|
# Wait for the server to come up.
|
||||||
|
|
Loading…
Reference in New Issue