coordenar um script para ser executado em apenas um dos servidores idênticos com balanceamento de carga

coordenar um script para ser executado em apenas um dos servidores idênticos com balanceamento de carga

Tenho dois servidores CentOS 5 configurados de forma idêntica (possivelmente mais no futuro). Preciso executar um cron job em qualquer um deles e que ele seja executado apenas em um deles.

Eu conheço o RedHat Cluster Suite (nós o usamos em outros servidores), mas é uma arma muito grande para ser usada nesta tarefa, além de não se comportar bem em menos de três nós.

Existe algo leve que eu possa usar para isso?

Os servidores podem se comunicar diretamente entre si. Suponho que posso desenvolver algo sobre ssh ou nrpe (dois servidores que já estão instalados nesses servidores), mas gostaria de saber se já existe algo disponível.

Responder1

Isso é muito simples de fazer com um arquivo de bloqueio em um sistema de arquivos compartilhado como o NFS. Presumo que você não tenha essa configuração.

Aqui estão algumas idéias que vêm à mente:

  1. Implemente um bloqueio em algum recurso compartilhado ou algo que ambas as máquinas possam acessar. Por exemplo, ambos podem gravar em algum recurso de rede externo? Desvantagem: muitas oportunidades para condições de corrida, tenho certeza.

  2. Use o DLM readhat e bloqueie o acesso viaperl DLM::Cliente. Desvantagem: como você mencionou, pode ser mais pesado do que você deseja.

  3. Experimente o servidor de bloqueio rubyPolicial. Pode ser divertido se você gosta de Ruby.

  4. Aqui está outro mecanismo de bloqueio distribuído Perl:IPC:: Armário. Vantagem: não exige que você configure outro serviço como o DLM do kernel Linux.

  5. Use um serviço de mensagens comoCoelhoMQpara fazer o bloqueio. Novamente, provavelmente muito pesado.

Eu também sou um programador Perl, então provavelmente tentarei IPC::Locker primeiro. Gosto da simplicidade dessa abordagem se você tiver apenas dois servidores.

Responder2

Para soluções empresariais, você pode usarBMC Control-M. Uma alternativa de código aberto seriaAgendador de tarefas

informação relacionada