同一の負荷分散サーバの1つでのみスクリプトを実行するように調整する

同一の負荷分散サーバの1つでのみスクリプトを実行するように調整する

同じ構成の CentOS 5 サーバーが 2 台あります (将来的にはさらに増える可能性もあります)。そのうちの 1 台で cron ジョブを実行する必要がありますが、そのジョブはそのうちの 1 台でのみ実行されます。

RedHat Cluster Suite については知っています (他のサーバーでも使用しています) が、このタスクに使用するには大きすぎますし、3 ノード未満ではうまく動作しません。

そのために使える軽量なものはありますか?

サーバーは直接通信できます。ssh または nrpe (これらのサーバーにすでにインストールされている 2 つのサーバー) 経由で何かを開発できると思いますが、すでに利用可能なものがあるかどうか疑問に思っています。

答え1

これは、NFS のような共有ファイルシステム上のロックファイルを使用すると非常に簡単に実行できます。ただし、その設定はされていないと思います。

思い浮かぶアイデアをいくつか挙げます。

  1. 共有リソース、または両方のマシンがアクセスできるものにロックを実装します。たとえば、両方のマシンが外部ネットワーク リソースに書き込むことができますか? 欠点: 競合状態が発生する可能性が高くなります。

  2. readhat DLMとアクセスロックを使用するperl DLM::クライアント欠点: あなたが言うように、あなたが望むよりも重いかもしれません。

  3. rubyロックサーバーを試す役員ルビーに興味があるなら楽しいかもしれません。

  4. ここに別の Perl 分散ロック メカニズムがあります:IPC::ロッカー利点: Linux カーネル DLM のような別のサービスをセットアップする必要がありません。

  5. 次のようなメッセージングサービスを使用するラビットMQロックを実行します。これもおそらくかなり重いです。

私自身は Perl プログラマーなので、まずは IPC::Locker を試してみると思います。サーバーが 2 台しかない場合は、このアプローチのシンプルさが気に入っています。

答え2

エンタープライズソリューションには、BMC コントロール Mオープンソースの代替案としてはジョブスケジューラ

関連情報