如何为runit设置自定义重启脚本?

时间:2015-04-25 21:37:18

标签: haproxy runit

我使用runit来管理HAProxy并希望安全重启以重新加载配置文件(具体来说:haproxy -f /etc/haproxy/haproxy.cfg -sf $OLD_PROCESS_ID)。我认为我可以run sv restart haproxy并尝试添加名为/etc/service/haproxy/restart的自定义脚本,但它似乎永远不会执行。我如何有一个特殊的重启脚本?我的方法在这方面还不错吗?如何使用runit以最小的影响重新加载我的配置?

1 个答案:

答案 0 :(得分:3)

HAProxy runit服务脚本

的/ etc /服务/ HAProxy的/运行

#!/bin/sh
#
# runit haproxy
#

# forward stderr to stdout for use with runit svlogd
exec 2>&1

PID_PATH=/var/run/haproxy/haproxy.pid
BIN_PATH=/opt/haproxy/sbin/haproxy
CFG_PATH=/opt/haproxy/etc/haproxy.cfg

exec /bin/bash <<EOF
$BIN_PATH -f $CFG_PATH -D -p $PID_PATH

trap "echo SIGHUP caught; $BIN_PATH -f $CFG_PATH -D -p $PID_PATH -sf \\\$(cat $PID_PATH)" SIGHUP
trap "echo SIGTERM caught; kill -TERM \\\$(cat $PID_PATH) && exit 0" SIGTERM SIGINT

while true; do # Iterate to keep job running.
  sleep 1 # Wake up to handle signals
done
EOF

优雅的重新加载,可以保持正常运行。

sv reload haproxy

完全停止并开始。

sv restart haproxy

此解决方案的灵感来自https://gist.github.com/gfrey/8472007