Use MISC_CHECK:
MISC_CHECK {
misc_path "/etc/keepalived/servicecheck.sh"
}
Onde /etc/keepalived/servicecheck.sh é um script de shell que faz toda a verificação útil para você:
#!/bin/sh
# Check if mongo is running
mongo --eval "db.stats()"
RESULT=$? # returns 0 if mongo eval succeeds
if [ $RESULT -ne 0 ]; then
echo "mongodb not running"
exit 1
else
echo "mongodb running!"
fi
# Check if apache is running
ps auxw | grep apache2 | grep -v grep > /dev/null
if [ $? != 0 ]
then
exit 1
fi
Este é apenas um exemplo. Você pode construir qualquer quantidade de lógica no seu script. Qualquer status de retorno de 1 fará com que o keepalived deixe o servidor fora de serviço.