[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Lanzar cron solo desde 1 nodo teniendo X nodos



Hola buenas, estaba dándole vueltas ya que me toca programar una tarea
cron, para ejecutar cierto comando en php.

Eso no hay problema, el problema viene cuando tengo 2 nodos web que
reciben cargas balanceadas.

- web1
- web2

Lo que quiero es que ese comando en php lo ejecute siempre web1, y el
día en que web1 esté caído, que la tarea cron la lance web2.

Para realizar esto se me ha ocurrido una idea, pero no sé si se puede
mejorar o cambiar totalmente:

- Quedaría programada siempre la tarea cron en web1, es decir que la
ejecute él siempre.
- En web2 programaría una tarea cron que ejecutara un script. Ese
script comprobaría si web1 está online, no sólo con un ping, sino por
ejemplo como tienen las llaves públicas copiadas y se hace login por
ssh directo entre ambos, comprobar si por ejemplo existe un
determinado fichero, por ejemplo el .php que voy a ejecutar.

if [ -f /tmp/ficheroaejecutar.php ]

Mandando el comando remotamente con rsync. Si existe y el código de
vuelta es 0, que no haga nada, si el codigo de retorno es diferente a
0, lanzar el comando .php.

Prefiero comprobar si existe un fichero como medida para garantizar si
está caído el nodo web1 o no, porque si realizo un ping y la máquina
devuelve el ping, no significa que esté bien, puede que la máquina
esté saturada y sí responda a ping por ejemplo...Prefiero entrar por
ssh y realizar un comando en remoto con rsync.

¿Qué os parece?

Sé que es una ñapa pero por lo pronto no se me ocurre otra cosa.

Cualquier sugerencia, bienvenida es.

Saludos.


Reply to: