Задание Cron не переводит Redis в подчиненный режим

В моей организации Redis работает в конфигурации Master/Slave, используя Keepalived для переключения между ними. Было обнаружено, что когда экземпляр Slave по какой-то причине умирает, Keepalived не перезапускает его. Я начал писать задание cron, чтобы проверить, работает ли redis, и, если подчиненный умирает, перезапустить его.

#!/bin/bash
#redis_cron_restart.sh
######variables########
REDIS_IP="10.19.105.229"
REDIS_CONF="/var/lib/redis/redis.conf"
#Check to see if Redis is running
killall -0 redis-server
if [ $? -eq 1 ]
        then
                date >> /var/lib/redis/log.txt
                echo redis-server not running. Checking redis master >> /var/lib/redis/log.txt
                redis-cli -h ${REDIS_IP} PING
                if [ $? -eq 1 ]
                        then
                                echo redis master not running. Doing nothing. >> /var/lib/redis/log.txt
                        else
                                echo redis master is running. I must be the slave. Restarting keepalived >> /var/lib/redis/log.txt
                                redis-server ${REDIS_CONF}
                                sleep 1
                                wait
                                redis-cli SLAVEOF ${REDIS_IP} 6379
                fi
        else
                echo redis-server running. >> /var/lib/redis/log.txt
fi

Он запускается и перезапускает Redis. Это, однако, не переводит Redis в режим slave. Если я наберу

redis-cli SLAVEOF 10.19.105.229 6379

на моем терминале, однако, он переходит в подчиненный режим. Есть идеи?

2 ответа

Решение

Возможно ли, что в вашей внутренней else блок, вызов redis-server немедленно возвращается, но сам сервер занимает более одной секунды для запуска? В таком случае, wait не буду ждать достаточно долго

Вы пытались написать полный путь к redis-cli и redis-server в скрипте? Или просто установите переменную PATH в начале скрипта и сделайте ее такой же, какой вы видите при вводе echo $PATH в вашем терминале.

Другие вопросы по тегам