5

シェア ナッシング クラスタへの Perl モジュールのデプロイ方法について提案がある人はいますか?

私たちの現在の方法は非常に手作業です。

  1. クラスターの半分を停止する
  2. Perl モジュール (CPAN スタイルのモジュール) を停止したクラスター メンバーにコピーする
  3. 各メンバーに ssh し、perl Makefile.pl; make ; make installインストールする各モジュールで実行します
  4. 展開を確認す​​る
  5. 新しくデプロイされたクラスター メンバーを稼働させ、古いクラスター メンバーを稼働させず、手順 2 -> 4 を繰り返します。

これは明らかに最適とは言えません。Perl モジュールをシェアード ナッシング クラスタにデプロイするための優れたツール チェーンを持っている、または知っている人はいますか?

4

7 に答える 7

4

1 つのノードをオフラインにし、Perl をインストールしてから、それを使用して他のノードを再イメージ化します。

少なくとも、何も共有されていないクラスターにソフトウェアをインストールしたいと思うのはそのためだと思います。Perl は、たまたまインストールするアプリケーションにすぎません。

于 2008-09-25T03:43:05.330 に答える
3

すべてのマシンが同一であると仮定すると、正規のインストールを 1 つ保持し、rsync などを使用して他のマシンを最新の状態に保つことができるはずです。

于 2008-09-25T03:57:45.230 に答える
2

現在、データ処理を行うクラスター化された Perl アプリケーションがあります。また、ソフトウェアが依存する多数の CPAN モジュールと、開発したモジュールがあります。「何も共有しない」と言うとき、NFS マウントのようなものを指していると思います。

マシンの構成が同一である場合、アプリケーション全体を単一のディレクトリ構造 (例: /opt/my-app) に構築し、それを tar することができます。ボックス。

ボックスに展開する限り、 Capistranoを使用できる場合があります。ssh に便乗した独自のクラスター ユーティリティをいくつか開発しました。そのユーティリティの 1 つの形式、parallel-jobsをリリースしました。そのREADMEには、複数の並列 ssh コマンドを実行する例が示されています。そのプログラムを拡張して、クラスターについて認識し、クラスター全体で同じコマンドを実行できるようにすることは小さなステップです (一連の異なるコマンドとは対照的に)。

于 2008-09-25T03:55:54.020 に答える
2

Debian または Ubunto OS を使用している場合は、Perl モジュールをパッケージ化できます。これを支援するためにいくつかのコードをオープン ソース化ました。モジュールを使用すると、展開がはるかに簡単になります。

すべての CPAN 用の RedHat rpm を取得するプロジェクトもあります。Dave Cross は、RPM-Land で Perlについて話しました。これは役に立つかもしれません。

パッケージ化されていない他のシステムを使用している場合は、rsync オプション (1 つのマシンにインストールしてから他のマシンにrsyncをインストールする) も同様に機能するはずです。

Puppetのような中央マネージャーを使用すると、コードのインストールからユーザーや電子メールの構成の管理まで、クラスター内のマシンの作成と保守がはるかに簡単になります。パイプラインには同様のことを行う Perl プロジェクトもありますが、これはまだ公開されていません。

于 2008-09-25T09:20:55.580 に答える
2

過去に、(CPANの)Expectモジュールを使用して、説明したプロセスを基本的に自動化し、各ホストに自動的にsshingし、必要なファイルをコピーし、インストールを実行するPerlプログラムを開発しました。残念ながら、これはクライアントのためにオンサイトで開発されたものであるため、共有するコードにアクセスできません。ただし、Expect に慣れている場合は、セットアップがそれほど難しくないはずです。

于 2008-09-25T03:46:12.093 に答える
1

Capistranoは、サーバーのグループでコマンドを実行できるようにするツールです。それはあなたの仕事をかなり簡単にするのに完全に適しています。

自動化のさらに先の複雑さは、サーバーのグループを定義し、それらに役割を与えてから、特定の役割にサブスクライブしているすべてのマシンにコードのセットをプッシュできるPuppetです。

于 2008-09-25T04:49:39.210 に答える
0

共有なしのクラスターが正確にはわかりませんが、Fedora、Mandriva、Ubuntu などの基本的な *nix システムを使用している場合。perl モジュールの多くは、特定のアーキテクチャ用にプリコンパイルされています。これらを簡単に実行できます。

これらのシステムが他の誰かが言ったのと同じアーキテクチャであり、コンパイルされたモジュールをシステムからシステムにコピーするだけでよい場合は、受信側のシステムにもすべての依存関係があることを確認してください。

于 2008-09-25T03:48:30.980 に答える