동일한 부하 분산 서버 중 하나만 실행되도록 스크립트 조정

동일한 부하 분산 서버 중 하나만 실행되도록 스크립트 조정

저는 동일하게 구성된 두 개의 CentOS 5 서버를 가지고 있습니다(향후에는 더 많아질 수도 있습니다). 그 중 하나에서 cron 작업을 실행해야 하며 그 작업은 그 중 하나만 실행됩니다.

RedHat Cluster Suite(우리는 다른 서버에서 사용함)에 대해 알고 있지만 이 작업에 사용하기에는 너무 크고 3개 미만의 노드에서는 제대로 작동하지 않습니다.

거기에 사용할 수 있는 가벼운 것이 있나요?

서버는 서로 직접 통신할 수 있습니다. SSH나 nrpe(이러한 서버에 이미 설치된 두 개의 서버)를 통해 무언가를 개발할 수 있다고 생각하지만 이미 사용 가능한 것이 있는지 궁금합니다.

답변1

NFS와 같은 공유 파일 시스템에서 잠금 파일을 사용하면 매우 간단합니다. 그러나 나는 당신이 그 설정을 가지고 있지 않다고 가정합니다.

마음속에 떠오르는 몇 가지 아이디어는 다음과 같습니다.

  1. 일부 공유 리소스 또는 두 시스템이 모두 액세스할 수 있는 잠금을 구현합니다. 예를 들어 둘 다 외부 네트워크 리소스에 쓸 수 있습니까? 단점: 경쟁 조건에 대한 기회가 많다고 확신합니다.

  2. Readhat DLM을 사용하고 다음을 통해 액세스 잠금을 수행합니다.Perl DLM::클라이언트. 단점: 언급한 대로 원하는 것보다 더 무거울 수 있습니다.

  3. Ruby lockserver를 사용해 보세요장교. 루비에 관심이 있다면 재미있을 것입니다.

  4. 또 다른 Perl 분산 잠금 메커니즘은 다음과 같습니다.IPC::로커. 장점: Linux 커널 DLM과 같은 다른 서비스를 설정할 필요가 없습니다.

  5. 다음과 같은 메시징 서비스를 사용하십시오.RabbitMQ잠금을 수행합니다. 다시 말하지만 아마도 꽤 헤비급일 것입니다.

나는 Perl 프로그래머이기 때문에 아마도 IPC::Locker를 먼저 시도해 볼 것입니다. 서버가 두 대뿐인 경우 이러한 접근 방식의 단순함이 마음에 듭니다.

답변2

엔터프라이즈 솔루션의 경우 다음을 사용할 수 있습니다.BMC 컨트롤-M. 오픈 소스 대안은 다음과 같습니다.작업 스케줄러

관련 정보