mirror of
https://github.com/samba-team/samba.git
synced 2025-01-14 19:24:43 +03:00
ded7c23122
Httpd can be very slow to start on some platforms, wait 5 monitor intervals before we try to restart it if it has not bound to port 80 yet. After 10 failed intervals, flag the node as unhealthy. (This used to be ctdb commit 6ec1993aa5f2778b8227ce5f6eca0d19e4ae9788)
82 lines
1.5 KiB
Bash
Executable File
82 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# event script to manage httpd in a cluster environment
|
|
|
|
. $CTDB_BASE/functions
|
|
|
|
detect_init_style
|
|
|
|
case $CTDB_INIT_STYLE in
|
|
redhat)
|
|
service_name="httpd"
|
|
service_config="http"
|
|
;;
|
|
suse|debian|*)
|
|
service_name="apache2"
|
|
service_config="apache2"
|
|
;;
|
|
esac
|
|
|
|
# RHEL5 sometimes use a SIGKILL to terminate httpd, which then leaks
|
|
# semaphores. This is a hack to clean them up.
|
|
cleanup_httpd_semaphore_leak() {
|
|
killall -q -0 "$service_name" ||
|
|
for i in $(ipcs -s | awk '$3 == "apache" { print $2 }') ; do
|
|
ipcrm -s $i
|
|
done
|
|
}
|
|
|
|
##########
|
|
|
|
service_start="cleanup_httpd_semaphore_leak; service $service_name start"
|
|
service_stop="service $service_name stop; killall -q -9 $service_name || true"
|
|
service_reconfigure="service $service_name restart"
|
|
|
|
loadconfig
|
|
|
|
ctdb_start_stop_service
|
|
|
|
is_ctdb_managed_service || exit 0
|
|
|
|
case "$1" in
|
|
startup)
|
|
ctdb_service_start
|
|
;;
|
|
|
|
shutdown)
|
|
ctdb_service_stop
|
|
;;
|
|
|
|
monitor)
|
|
if ctdb_service_needs_reconfigure ; then
|
|
ctdb_service_reconfigure
|
|
exit 0
|
|
fi
|
|
|
|
if ctdb_check_tcp_ports 80 >/dev/null 2>/dev/null ; then
|
|
ctdb_counter_init
|
|
else
|
|
ctdb_counter_incr
|
|
|
|
ctdb_check_counter_equal 5 || {
|
|
echo "HTTPD is not running. Trying to restart HTTPD."
|
|
ctdb_service_stop
|
|
ctdb_service_start
|
|
exit 0
|
|
}
|
|
ctdb_check_counter_limit 10 quiet|| {
|
|
echo "HTTPD is not running. Trying to restart HTTPD."
|
|
ctdb_service_stop
|
|
ctdb_service_start
|
|
exit 1
|
|
}
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
ctdb_standard_event_handler "$@"
|
|
;;
|
|
esac
|
|
|
|
exit 0
|
|
|