coordinar un script para ejecutarlo en solo uno de los servidores idénticos con equilibrio de carga

coordinar un script para ejecutarlo en solo uno de los servidores idénticos con equilibrio de carga

Tengo dos servidores CentOS 5 configurados idénticamente (posiblemente más en el futuro). Necesito ejecutar un trabajo cron en cualquiera de ellos y que se ejecutará solo en uno de ellos.

Conozco RedHat Cluster Suite (lo usamos en otros servidores), pero es un arma demasiado grande para usarla en esta tarea, además no se comporta bien con menos de tres nodos.

¿Hay algo liviano que pueda usar para eso?

Los servidores pueden comunicarse entre sí directamente. Supongo que puedo desarrollar algo a través de ssh o nrpe (dos servidores que ya están instalados en estos servidores), pero me preguntaba si ya hay algo disponible.

Respuesta1

Esto es bastante sencillo de hacer con un archivo de bloqueo en un sistema de archivos compartido como NFS. Sin embargo, supongo que no tienes esa configuración.

He aquí algunas ideas que me vienen a la mente:

  1. Implemente un bloqueo en algún recurso compartido o algo a lo que ambas máquinas puedan acceder. Por ejemplo, ¿pueden ambos escribir en algún recurso de red externo? Desventaja: estoy seguro de que hay muchas oportunidades para las condiciones de carrera.

  2. Utilice el DLM readhat y acceda al bloqueo medianteperl DLM::Cliente. Desventaja: como mencionas, podría ser más pesado de lo que deseas.

  3. Pruebe el servidor de bloqueo RubyOficial. Podría ser divertido si te gusta Ruby.

  4. Aquí hay otro mecanismo de bloqueo distribuido de Perl:IPC::Casillero. Ventaja: no requiere que configure otro servicio como el DLM del kernel de Linux.

  5. Utilice un servicio de mensajería comoConejoMQpara hacer el bloqueo. De nuevo, probablemente sea un peso bastante pesado.

Yo también soy programador de Perl, así que probablemente primero probaré IPC::Locker. Me gusta la simplicidad de ese enfoque si solo tienes dos servidores.

Respuesta2

Para soluciones empresariales puede utilizarBMC Control-M. Una alternativa de código abierto seríaProgramador de trabajos

información relacionada