Instalei um novo linux alpino e configurei o Redis usando o comando
apk add redis
Agora, o instalador não nos forneceu um /etc/sentinel.conf
, então criei manualmente um, copiando o /etc/redis.conf
.
port 26379
dir /var/lib/redis
bind 192.168.56.122
sentinel announce-ip 192.168.56.122
sentinel announce-port 26379
sentinel monitor mymaster 192.168.56.121 6379 2
sentinel auth-pass mymaster mypassword
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 10000
daemonize yes
logfile /var/log/redis/sentinel.log
pidfile /var/run/redis/sentinel.pid
Agora para executar o sentinel como um daemon Eu crio o seguinte script /etc/init.d/sentinel
copiando o /etc/init.d/redis
.
Se eu executar o comando
/etc/init.d/sentinel start
então é iniciado. Mas quando tento pará-lo usando
/etc/init.d/sentinel stop
o sistema informa que o serviço foi interrompido, mas se vejo o processo, ainda o vejo em execução. Existe algo que estou fazendo errado?
#!/sbin/openrc-run
SENTINEL_CONF=${SENTINEL_CONF:-/etc/sentinel.conf}
SENTINEL_USER=${SENTINEL_USER:-root}
SENTINEL_GROUP=${SENTINEL_GROUP:-root}
name="Sentinel server"
command=/usr/bin/redis-sentinel
command_args=${SENTINEL_CONF}
depend() {
use net localmount logger
after keepalived firewall
}
# get global pidfile, logfile, and dir from config file
get_config() {
if [ ! -f "${SENTINEL_CONF}" ] ; then
eerror "You need a ${SENTINEL_CONF} file to run redis"
return 1;
fi
pidfile=$(awk '$1 == "pidfile" { print $2 }' "$SENTINEL_CONF")
logfile=$(awk '$1 == "logfile" { print $2 }' "$SENTINEL_CONF")
dir=$(awk '$1 == "dir" { print $2 }' "$SENTINEL_CONF")
: ${pidfile:=/var/run/redis/sentinel.pid}
: ${logfile:=/var/log/redis/sentinel.log}
: ${dir:=/var/lib/redis}
}
start() {
get_config || return 1
checkpath -d -o ${SENTINEL_USER}:${SENTINEL_GROUP} ${pidfile%/*} \
${logfile%/*} ${dir}
ebegin "Starting $name"
start-stop-daemon --start \
--chdir "${dir}" \
--user ${SENTINEL_USER}:${SENTINEL_GROUP} \
--pidfile "${pidfile}" \
--exec "${command}" \
-- ${command_args}
eend $?
}
stop() {
get_config
ebegin "Stopping $name"
start-stop-daemon --stop --retry 30 --pidfile "${pidfile}"
eend $?
}
Eu também copiei o /etc/conf.d/redis
e criei uma cópia chamada /etc/conf.d/sentinel
# Redis user.
SENTINEL_USER="root"
# Redis group.
SENTINEL_GROUP="root"
# Redis configuration file.
SENTINEL_CONF="/etc/sentinel.conf"
Tags redis alpine-linux sysvinit