В общем суть в том, что есть nginx на котором в upstream прописаны 2 хоста, 1 основной и бэкап,
когда http трафик (80порт) переключается с основного сервера на бэкап сервер, нужно сбросить кэш php, сейчас кэш скидывается в ручную, командой php /home/www/xxxx/current/app/cli.php cache clear prod
Нужно как-то сделать, чтобы при появлении трафика на бекап сервере, выполнялась команда php /home/www/xxxx/current/app/cli.php cache clear prod, если кто-то подскажет куда копать, буду очень благодарен
По идее нужен скрипт, который будет проверять появление http трафика и выполнять команду, как проверять появление http трафика?
Не нужно его сбрасывать, его нужно синхронизировать.
Мемкеш он с легкостью балансируется, собственно вы балансируете весь сессии и кеш
Конечно можно сделать что-то вроде
cat /var/log/nginx/access.log | grep "тут признак того что хиты нужные тебе пошли на него" | grep " тут признак по дате или через awk там омжно диапазон дат указывать." && /usr/bin/php /home/www/xxxx/current/app/cli.php cache clear prod
И все это в крон, но лучше синхронизировать сессии и кеш
Спасибо, сделал вот так, syslog для теста взял и рестарт nginx'a тоже, но при таком раскладе команда будет выполняться каждый раз когда будет обновление файла...
#!/bin/bash
date=`date | awk '{print $3, $4}' | sed 's/.\{3\}$//'`
file=`date -r /var/log/syslog | awk '{print $3, $4}' | sed 's/.\{3\}$//'`
if [ "$date" = "$file" ]
then
service nginx restart
echo "service restart"
else [ "$date" != "$file" ]
echo "sovpadenii net"
fi
Подобные вещи надо делать через некое распределённое хранилище типа Zookeeper которое хранит сведенья о топологии серверов. Если пришло глобальное событие - то взвести флажок в зу-кипере типа "трафик на таком -то хосте" появился. А отвествтеный демон или скрипт будет заглядывать в этот флажок и принимать решения. Такая буферизация спасет вас от "множественных сбросов кеша" которых вам не избежать без буферизации и дедупликации событий. Говорю как разработчик поскольку в распределённых системах - это самая частая ошибка. Неучет фантомных и ненужных событий.
Если есть два хоста - то трафик может очень часто переключаться. Вплоть до одновременного выполнения разных запросов там и тут. Так что идея сбрасывать кэш - так себе; особенно в силу того, что неясно, на каком из хостов Вы сбрасываете кэш, и зачем это вообще надо делать.