カテゴリ:Linux

使用して仮想環境を計算オフィスグリッド-第4部

スティーブンロイドワトキン 、金曜日2009年12月4日午後11時59分

はじめに

私は一日ごとのデータ機能のレコードの処理数百万のジョブをバッチ多くのランたちは、会社と私はそれぞれの周りしたマシンに座って、すべてのことを考え、最近数時間何もしない毎日。 システム我々の処理の能力をか強化するため、これらのマシンを使用することが良い場合は私たちがすることは、それは? 記事セットの、この、私はオフィスの採用の利点の電位を見ているつもりグリッド環境を使用して仮想化された。

第3部私たちはマシンを作成した我々の仮想処理や労働者の時間アイドルになるように設定ポップアップウィンドウのマシンを。

最新のコードを実行する

必然的に変更されます後に作成する労働者のロジックは、ビジネス、バグが使用してデータを処理することが見つかりました、高速の周りに座っての労働者は、去ることに生産したがってれるより効率的なコードは、 古い臭いのコードを どのようにして我々は常に我々の処理スクリプトの最新かつ最高のバージョンを使用していることを確認しますか?

我々はこれを行うことがいくつかの非常にシンプルで簡単な方法がありますが、トリックは、しかし、これを達成するために処理能力と、ネットワークトラフィックを削減することです。 きれいにはソリューションの最も簡単な始め、繰り返しのカップルかけて徐々にそれを改善する。

最初のメソッドは、単に(サンバ、FTP、または同様のを介して)私たちの仕事の管理サーバーに接続し、ソースコードの最新バージョンをプルダウンされます。 あまり効率的で、それが仕事をします。 きれいは、多少は、rsyncスクリプトを作成する方法についての使用方法について改善することではなく、それぞれの時間? 代わりに何を(実行我々のコードを上の各更新についてはちょうどその当初からコードを入れてチェックにsubversionのスクリプトを最新の処理のsvn update )?

最終的には次のようにシンプルですbashスクリプト(10分毎にcr​​onで呼ばれる)になりかねない:

  #!/ bin / shに
はgrepはgrep | -場合、ps axを| grepをVのPHPの >は/ dev / null

     "ジョブは、終了現在処理している"エコー

     "今すぐ起動すると、ジョブが実行されていない"エコー
     CDの/パス/ / /作業コピーに
     SVNの更新
     phpのyourJobProcessingScript.php
 Fiの 

今、私たちは、それぞれ実行して我々は確実に最新のコードを実行していることを確認することができます。 我々はコードベースごとに、すべての時間を我々は我々のネットワークを介してファイルの差分を転送することによって実行し、ネットワークトラフィックを低減することを実行する更新することによって、これを確実にしています。

私のデモのセットアップでは、私は正確に上記のようでした。 Subversionは私の仕事処理サーバにインストールされていると私は単純には'svn update'を使用して'労働者'ブランチから最新のコードを引っ張った。 私は、結果の戻り値の一部としてデータベースに戻っていた私の処理スクリプトのバージョン番号のタグを追加しました。 私は自分のコードは、私は絶対に最新の処理スクリプトを実行していた労働者の分岐、すなわちに私のトランクをコピーするたびに更新されていたことを見ることができるこの方法。

最新のデータを使用して

あなたの仕事処理は、これらがあまりにも更新されるとしているいくつかの点で、データソースの使用を行う場合。 あなたはすぐに、労働者が足踏み状態にすべてをもたらすの実行を開始のトラフィックを使用してネットワークをあふれさせるつもりは非常にまれに基づいてデータソースを呼び出す場合を除き。 私の解決策については私は私のVMとのまわりで私のデータソースを移動したいことを決めた。

がホールド馬をしているあなたは!巨大いる場合はどうすれば私のソースは、データ? まあこれは実際に話している私たちは、データである場合の多くはどうやって? これは、サーバーを処理できることを追加購入に各マシンよりもドライブを大容量のハードディスク追加インストールするよりコスト効率に。 これは、予算の質問され、決定するためにビジネス交流です。 それは多分マシンがデータワーカー源はあなたのしているので、大規模なデータのその量を保つために不可能は、そのわずか。 場合にはそのよう何をあなたは? まあ我々は、サーバ、データ、ローカルできるように寄港するが、これはネットワークの問題を可能性がありますが発生します。 場合にはこのように、このグリッドシステムは、環境事務所にに含めることになる現実。 これは、要求があります元のデータもスロットル/または毎晩と6時とすること20:00労働者の間だけでなく、たとえば、呼び出し元のあなたの戦略を実行代替することができますように。

に移動させますデータの100ギガに、我々のデータソースの量を言う。 まあはいかなり更新ネットワーク上を移動するデータのビットだ。 どのように我々はこの場合、データの最新のコピーを持っていることを確認しますか? rsyncはしかし、可能性が個人的に私はあなたの仕事の処理サーバーで、最新のデータソースを実行して行く方法があります(とてもいいビンログと)レプリケーションのマスタとしてこれを設定することにより、と思う:

レプリケーション データソースへのジョブ制御サーバーの更新に奴隷として労働者のそれぞれを設定することにより、膨大なデータの更新を実行しない限り、すべての労働者はキックされているネットワーク活動の巨大な増加(せずに、労働者に素敵なトリクルダウンwill回)で。 あなたは、データベースを更新のないにつれて、前に、各ジョブの一時停止を長いことでこれがある利点をrsyncでのmysqlの更新される継続的継続データを処理が中に労働者デーモンが上。

これは私のデモサーバーをセットアップする方法です。 レプリケーションをセットアップするために、私は(MySQLのサイトガイドに続いてレプリケーションを設定すると)数分以内に20私は、データセットをジョブ制御サーバいた私inital労働者を複製する。 追加の各労働者については、レプリケーションの設定とプロセスは、VMがコピーされるたびに働いた。

概要

資料のこのセクションでは、私たちはいかに簡単かと見てきました痛みは、仕事をして、ネットワークトラフィックを削減また、説明したのと同じtime.Âでusing rsyncやSubversionでも(SVN)のが最新に処理コードを維持することですかそれはあなたの労働者の各々にまで浸透させることにより最新のあなたのデータソース情報を保持する。 したがって、我々は、ビジネスロジックと情報私たちのオフィスグリッドシステム内のについていくことを保証する領域。 明らかに無数の選択肢があるでしょうが、ここでは、これらのタスクを実行するされた2つの簡単な例をソリューションは、手に入れるのがいかに簡単かを表示します。

次回

シリーズの一部のこの最後では、適切な名前第5システムを、この展開私たちがありますについて説明します。 私が学んだされているものと、私が作成し、管理を要約します。

使用して仮想環境を計算オフィスグリッド-第3部

スティーブンロイドワトキン 、金曜日2009年12月4日11時37分

はじめに

私は一日ごとのデータ機能のレコードの処理数百万のジョブをバッチ多くのランたちは、会社と私はそれぞれの周りしたマシンに座って、すべてのことを考え、最近数時間何もしない毎日。 システム我々の処理の能力をか強化するため、これらのマシンを使用することが良い場合は私たちがすることは、それは? 記事セットの、この、私はオフィスの採用の利点の電位を見ているつもりグリッド環境を使用して仮想化された。

第2部私たちは、実行されているサーバは、自由に仕事を見て、どのようにジョブが失敗することなく処理される必要がありますジョブは、各確保する間の処理量を最大に設定を達成するために。

またはぐったりサーバを - あなたの労働者の設定

プロセスの次のステップは、仮想の労働者を設定することです。 このために私はVirtualBoxを使用してCentOSのインストールを使用するつもりです。 私がインストールしようとしているのmySQLPHPをとしても知られているサーバーぐったり木の実は、m ySQLは、P HP)はServerAは(私がしたことは名前を開く)。

  • あなたのWindowsマシン(リンクをたどって)にインストールするのVirtualBox
  • ダウンロードして、作成された仮想マシン内で(現在のバージョン5.3)CentOSのインストール

一:あるの[OK]をここでは、ある(がないですおそらくこの行くことに私はポイントは1,000秒の偉大なチュートリアルout'を作成し、VirtualBoxの仮想マシンの下CentOSのManaging )。 重要な点は、GridMachineマシンに仮想私と呼ばれるに注意してください、私が仮定されていること。

これまでの仮想化クライアントとオペレーティングシステムの私の選択肢などに行くように、各選択肢には大きな理由がある。 VirtualBoxは私と私の自宅のマシンで使用する3つの主要なオペレーティングシステムでサポートされているものです。 私はその良い安定したOSとしてCentOSの選択と私は自分のWebサーバー上のそれを使用します。 私の代わり効率的に使用することをより多くのコードを速くして、Xは実行営業使用するそうだとすれ )にする'の精神ここに簡単で、最も簡単なシステム適用するための私の素晴らしいツール右側の信者をジョブ(ている私がが:)

重要なのは、VMのは、我々は、労働者のマシンに個別のネットワーク設定を構成する必要はありません私たちはwant.By DHCPを使用していない何かされている個別に構成する必要がありますそれぞれの新しい仮想マシンのそれ以外の場合は、DHCPを使用していることを確認、DHCPが提出されますあなたのIPアドレスから。 したがって、(これはスケーラビリティを向上させ、労働者の管理作業が軽減さ)を、それぞれの設定について心配することなくオフィスの仮想マシンをコピーすることができます。

を達成するために目指すべきであるプロセスは、新しい物理マシンを得るためにVirtualBoxをインストールし、かなり多くの他のせずに仮想イメージを展開するだろう。 これは、セットアップするのが賢明かもしれないので、少なくとも多くのマシンが実行されている方法を見ることができる別のサブネット上のすべての労働者。 また、長期リースまたは無制限のリースDHCPのあなたのマシンをセットアップする必要があります。

どのように作業者のジョブを実行するには

これは興味深いエリアである労働者のジョブの処理のためのいくつかの有効な方法があります。 ここで私はちょうど2つは、最も明白な説明します:

  • 永遠にスクリプトを実行:スクリプトを、そのシェルスクリプトやPHPスクリプトの労働者に一度だけ実行されると無限ループの一部として実行されます。 私は、スクリプトのいずれかのクラッシュは、このメソッドを割引した可能性のある労働者は、介入のいくつかの並べ替えすることなく実行を中止します。
  • cronベースのスクリプトの実行:cronデーモンは、スクリプトへの呼び出しをキックオフX分ごとに調子は取得します。 いくつかのチェックがなければ、これは実行している労働者のスクリプトの多くの多くのコピーをする可能性があります。

私の決断は私のシェルスクリプトは、次のタスクを実行するごとに10 minutes.Âシェルスクリプトをキックオフcronで行っていました:

  1. プロセスリストを取得し、'php'を、これをgrepする。 次に進みますが見つかった場合はありません。
  2. あなたの仕事のコードを呼び出して、私の場合では、これはPHPが基づくものになるだろう
  3. 労働者のスクリプトが実行を完了
  4. 次の適切な呼び出しで再度行く準備

私のbashスクリプトは、次のようになります:

  #!/ bin / shに
はgrepの- v grepの| |はgrep phpの> / dev / nullにps axをする場合

     "ジョブは、終了現在処理している"エコー

     "今すぐ起動すると、ジョブが実行されていない"エコー
     phpのyourJobProcessingScript.php
 Fiの 

ノートでは、:エコーのは完全に無意味な、 ほとんどは、それらを編集しようとするとありますがやって来るに役立つ次の人に。

それは、労働者の仮想マシン、単純な、迅速かつ容易に受信されているハードウェアの各々の新しい作品にコピーするの設定終了します。 グリッドシステムの'賢は本当に可視化のOSにない場合は、そのすべてが、プロセスのジョブ、ジョブ構成に作成したコードとは、ジョブが適切な(つまり、ホストがアイドル状態のときにしたときに実行されることを確認することで)。

Windowsをセットアップする労働者を初期化する

最初のタスクは、Windowsのコマンドラインから仮想マシンを実行するために必要なコマンドを使用することです。 場所がデフォルトにVirtualBoxをあなたがしたインストールされて、あなたは、労働者は、名前、ワーカーした交流をロードするために必要なコマンドGridMachineをして:

  "はC:\ Program Files \日\ VirtualBoxの\ VBoxManage.exe"startvmのGridMachine 

しかし、我々は使用する必要があります。'レス'状態でスクリプトを実行するには:

  "はC:\ Program Files \日\ VirtualBoxの\ VBoxHeadless.exe"- startvmのGridMachine - vrdp =オフ 

これは、GUIなしで仮想マシンを起動し、それが正常の状態を保存することができます。 メッセージを約リスニングポート3389上にあるのでそのようにRDPをオフに引数がオフにする2番目は競合を与えるあなたに、またはRDPでウィンドウを閉じます。 仮想マシン名は小文字が区別される場合!

次に、我々はマシンがアイドル状態になっているかつて我々の労働者のVMをキックオフするには、Windowsをセットアップする必要があります。 >全てのプログラム - - >アクセサリ - [システムツール] - これを行うには(Windows XPの場合)、スタートに行く必要があります>スケジュールされたタスクを以下のように:

スケジュールされたタスク

カスタムプログラムを追加するを参照して[次へ]をクリックはスケジュールされたタスクの追加は続きます。 移動は、あなたのVBoxManageスクリプトとして[OK]をクリックします。 オプション(我々は1分でこの設定を変更します)、続行のいずれかのタスクをスケジュールします。 このタスクを実行する人を聞いてきます次の画面のウィンドウをスキップした後、私は新しい特権を持つユーザーを作成するか、またはいずれかの'管理者'をお勧めしたい。 我々は、任意の時点でマシン上の標準的なスタッフのアカウントを使用して干渉する必要はありません注意してください。 このタスクの横にあるチェックショーの高度なオプション]をクリックします。

untickedは左にするには最後に'の実行テキストボックスを追加当社startvmのログインしたときのみが実行できるように、文字列を'GridMachine。 スケジュールタスクは、次の訪問は、次のタブに移動する前にあなたがアイドル状態であると機械のようにいた時間の長さを選択して'アイドル'は、オプションまでのスケジュールの低下を変更してください。

最後に、これは時間のX量を実行されている場合、状態はタスクを停止するオプションを外しますが、マシンは、もはやアイドル状態の場合、タスクを停止するオプションをチェックしない。

スケジュール

それは、Windowsホストのセットアップのためのそれを見る!

概要

この部分では、労働者として機能するように仮想マシンだけでなく、私たちが電話して私たちの仕事の処理スクリプトを実行する方法(PHPスクリプト自分のために)設定されている。 ここから私たちはコンピュータがアイドル状態になるときは、ヘッドレスモードで仮想マシンを起動するには、Windowsの私達のコピーをセットアップする方法を、ユーザーがマシンの使用を再開したときにその状態を保存を見て。 うまくいけば、この時点では、それがこのようなシステムを設定するにはいくつかの実験を自分で軌道に乗るてうずうずしているのがいかに簡単か見ている!

次回

第4部私たちはロジックと情報ビジネス最新の日付だろうと、され常に最新の結果は、データソースように取得したコードとすることを探して使用して、最新のバージョンを実行しているツールを確保することにしています。

使用して仮想環境を計算オフィスグリッド-第1部

スティーブンロイドワトキン 、金曜日2009年12月4日23:23

はじめに

私は一日ごとのデータ機能のレコードの処理数百万のジョブをバッチ多くのランたちは、会社と私はそれぞれの周りしたマシンに座って、すべてのことを考え、最近数時間何もしない毎日。 システム我々の処理の能力をか強化するため、これらのマシンを使用することが良い場合は私たちがすることは、それは? 記事セットの、この、私はオフィスの採用の利点の電位を見ているつもりグリッド環境を使用して仮想化された。

としてPHPの開発者は、私はLinuxを、すなわち一日だ行くごとに私が使用して使用するツールをMySQLのは、PHPは、VirtualBoxとSubversion(SVN)。 しかし、私は、このガイドでは、同じように、他の言語や技術に適応すると思います。

私が提供するソリューションは非常に緩くI、または、単純化のために物事を変えてやるとより興味深い使用方法のシナリオを生成するために私たちは、これが全体の記事を本当でないかもしれませんが達成するために必要があると思います処理のタイプに基づいて行われます。

これはオフィスの大部分が実行さものであるため、これらの仮想化環境では、Windowsマシン上で実行されます。 オフィスのマシンでは、これらのマシンを使用してスタッフを妨害すべきではありませんか、その処理には、マシンのメンテナンスを必要とし、彼らが利用可能になるように簡単にデプロイ可能な新しいマシンにすること。 これは非常に拡張性を減らすのと同様にまた、新しい仮想マシンは、追加の構成を必要としませんし、グリッドシステムを拡張することができるで容易になります。

なぜは、Officeコンピューティンググリッドを配置する?

まず、あなたにそのようなリソースを計算可能性があります雲が理由だけではなく、使用を考えて、 AmazonのEC2プラットフォーム まあ理由としては、例えば、いくつかのことができます:

  • あなたは、クラウドコンピューティング環境に特定のデータを委託されません
  • あなたは、NHSのレコードを、例えば、法的な理由で潜在的に、(国を残してデータなど)、法律上の理由からクラウドコンピューティング環境に特定のデータを配置することはできません。
  • あなたの処理ユニットが閉じて、フルコントロールを持っているハードウェア上でも保存しておきたい
  • あなたは雲のインスタンスを実行するプロジェクトの資金を持っていない
  • あなたのオフィスは、インターネットに接続していないため、雲のリソースを使用しないこと、その
  • あなたは雨が好きではない、雲が離れても維持を示唆雨は、したがって、

私はリストには、続けることができたんだけど、私は今のところ十分だと思う。

Officeのコンピューティンググリッドの利点

まあ、(真の物理のスタイルでいくつかの抜本的な仮定を行うことができますし、)いくつかの数学を行うことができます。 あなたは1日あたり100ジョブを実行している大きながっしりした体格の処理サーバーを使用している想像してください。 あなたのオフィスでは、アイドル状態の16時間は50マシンを一日を過ごす、これらの各マシンは、がっしりした体格の処理は断つように強力な10%のです。 (ここではすべての結果は、過小評価してパフォーマンスの向上に丸められます)。

だから、10%の電力* 2 / 3回= 0.067すなわち、1デスクトップの処理のアイドル時間* 1マシンは、1日6フルジョブを処理することができる。

は、メインサーバの処理としての場合は一日に何のジョブごとに処理するためにアイドル状態のデスクトップ15を受け取り、それはあなたが今スケールこれをバックアップします。

50台ふり事務所の私たちのために私たちは、 サーバーの処理4フル最大1サーバの電源を可能性が大きく我々の処理、あるいは、我々は100の代わりに、 日あたりのジョブ400を処理することができます。

通知は、 ハードウェアの新規投資ためのあなたの会社がてきた4人だけ増加し、そのバッチ処理能力 可能性のあるので、あなたは緑のイニシアチブとしてこれを見ることができ、あなたの電力使用量を増加させるが、私は一般的に、とにかく一晩に残されているマシンにしてきたほとんどのオフィス環境からつもりだ。

他の利点は、(または更新)処理サーバーあなたのオフィスのマシンが十分なされている場合遅延することができ、あなたのオフィスのグリッドは自動的に、より強力になるあなたのオフィスのマシンの力を向上させるように、新しいへの投資を意味しています。

テクノロジー

あなたは何が必要ですか? (または、より正確に私が使用していたもの):

  • アイドルオフィスのマシン(スペア古いWindows XPのラップトップ私の場合)
  • VirtualBoxの(または別の仮想化クライアントソフトウェア)
  • マシンを指定してPHPを仮想的なダウンOSのカットを実行しているrunningÂは、MySQL、私がサーバーをリンプだ呼び出すこれらの私:)
  • ジョブを実行するには
  • Job Serverは(どこか別の仮想マシンすることができます)

典型的なジョブ

次のようにこのシステムが実行するように設計されているジョブの種類は:

  • システムがその上に我々が一致するように結果を返す必要があるデータのリストを受け取る
  • チェック/いくつかの(比較的静的)データソースを検索して含まマッチング
  • データソースからの結果は、結果に応じて追加のデータソースのチェック、マージ、さらに検証が必要な場合があります
  • データは、一致するレコードが返されます完全に検証処理
  • ジョブ内の各レコードには、残りの独立しています

だから、基本的に我々はデータベースの検索、いくつかの数字の計算は、ビジネス環境ではかなり一般的なシナリオの混合物を必要とするジョブを実行して見ている。

グリッドソリューションは、このタイプのジョブを処理するための有利されていません。 基本的には、独立した単位に分割することができます任意のプロセスを並列に実行することができます。 :詳細については、このウィキペディアの例を参照してくださいグリッドコンピューティングは、有名ないくつかの例は、 SETIアットホームBIONCを コンピューティンググリッドを実行するためのフレームワークがあり、これらのに見ても価値があります。

私たちは何を達成するの​​だろうか?

私はオフィスのグリッドを展開する非常に高価な、または時間がかかる必要はないことを示すために願っていますこれらの記事の終わりまで。 私は議論するつもりです:

  • ジョブ構成は、ジョブ制御システムを設定する
  • 適切な処理の仮想マシンを作成する
  • どのように設定するには、Windowsマシン上のシステム
  • の確保は、最新のコードとデータを使用している
  • 展開とベンチマーク
  • 今後

私は([OK]を私が構築し、これを書いている)Windows XPおよび私の'GridMachine'仮想マシンを使用して、ローカルマシン上の概念をテストするためにサンプルアプリケーションを構築することがあります。 私の仕事の管理サーバーが実行される私のメインマシンがするFedora 11の

これは完全に動作する堅牢なシステムを示すためのものされるものではない、その意味するデモの詳細と、これらのものは時間の合理的に短期間で、少しコストで達成することができることを示して議論する。 私には一切コメント、修正、または改善を送信すること自由に感じなさい、私が一致するように更新この記事を維持するために最善を尽くします。

次回

パート2私は、システム制御ジョブ起動で見てで、失敗しますがなくても処理を見ているジョブは、各ことに確保しながらの処理量を達成するための最大のためにどのようにジョブがで構成する必要があります。

使用して仮想環境を計算オフィスグリッド-パート2

スティーブンロイドワトキン 、金曜日2009年12月4日23:23

はじめに

私は一日ごとのデータ機能のレコードの処理数百万のジョブをバッチ多くのランたちは、会社と私はそれぞれの周りしたマシンに座って、すべてのことを考え、最近数時間何もしない毎日。 システム我々の処理の能力をか強化するため、これらのマシンを使用することが良い場合は私たちがすることは、それは? 記事セットの、この、私はオフィスの採用の利点の電位を見ているつもりグリッド環境を使用して仮想化された。

第1部私はグリッドをオフィス作成した概要を望んで、もしあなたが、なぜシステムが理由の可能性についていくつかの技術だけでなく、使用して私がすること。

ジョブ制御

あなたが行くなら、それらを管理するためのいくつかの方法が必要になるだろうし、ジョブを実行されている。 あなたの仕事の制御システムは、(あなたの仕事のサーバー上で)本当によくてもオフィスのグリッドを実行する前に考える必要があります。 そこでまず、どのようなジョブ制御システムのタスクは次のとおりです:

  • 労働者からの要求に応じて、ジョブの手
  • 労働者は何のジョブの種類を実行するに教える
  • トラックジョブ
  • ジョブは一度実行のみされていることを確認してください
  • または、労働者に仕事のデータを提供し、少なくともここでそれを得るためにそれらを教えて

システムはまた、企業がグリッドソリューションの価値を見るようにジョブのいくつかの種類を実行するために延長することができる、拡張できるようになりました単一のケースでの動作のソリューションを必要とします。 たとえば、ジョブは、優先順位を得ることが、複数のジョブの種類は最終的にも、それは'ジェネリック労働者から離れていません(ただし、ジョブの種類ごとに最適化されているいくつかの異なる労働者のマシンを実行することができます(つまり、いくつかのコードベース)が存在する可能性がありますのアイデア)。 システム開発は、短期的なビジョンは、長期的フラストレーションと増加、開発時間をもたらすことができる場合は、常に未来を考えてみてください。

Job Serverを

私たちは、これは固定リソースロケータを持ってあなたのグリッドで唯一のシステムである必要がありますから、IPアドレス、ホスト名、URL(内部DNSを使用して)、などこれは、されていることが、私たちの仕事を制御するための場所が必要としている労働者はここで仕事を探すために知っておく必要があります、労働者は、ジョブ管理システム(ないジョブ制御システムの労働者を見つけること)を見つける必要があります。

ジョブサーバー自体は本当に複雑なタスクを(基本的なシステムとにかくに)持っていない場合、それは、仕事から手をジョブのリストを格納するために結果が表示され、その後後で取得するためにそれらを格納する必要があります。 これらの部品は('など、ジョブの手')非常に基本的なことができる定義されている方法。 我々は、追加、編集、削除、ジョブを一時停止の管理インターフェイスを含むようにシステムを拡張することができますその後、これがこの演習を超えています。

理由はあなたの仕事のサーバーは、メイン処理サーバー内で実行中の仮想マシンであることができなかったし、全くありませんが、それからあまりにも多くのリソースを消費しない提供。 それは潜在的にあなたに数週間の処理時間相当のカップル(だけでは、メイン処理サーバと比較して)、原価計算、処理全体の週末を失うとしている金曜の夜にダウンした場合には、ジョブサーバーは、しかし、必要な高可用性をしない。 あなたは、高可用性、負荷分散環境でのお仕事サーバーを置いて検討する必要があります。

基本的なセットアップ

私たちの仕事のサーバの基本的なセットアップ)は、HP PがしますySql メートル 、木の実である Li 構成サーバーリンプの私が私の呼び出しを私の(。 して、Thea労働者で実行されているコードは、実際にはジョブ制御システムデータベースとのとの相互作用によって実行することができますか仕事がうまくいく。 それ以降のサービスをWebできる作成我々は、自分自身を作品に出ハードジョブをいうよりも有する労働者が手、実際に今使用して続行されます私たちがKISSの原則を (愚かな保管、それをシンプルで、!)

だから、三作成することができますmySQLのジョブに対処するためのテーブルです。 これらは、`ジョブされる`、`jobRecords`と`jobResults`。

ジョブ表 ここに私が使用しているSQLのバディに偉大な小さな代替をphpMyAdminにだけ理由:参照してください他のために(CentOSのそのインストールが簡単に10大の選択肢をphpMyAdminにする

このテーブルには、5つの簡単なフィールドで構成されています

  • イド:ジョブを一意に識別する
  • 名前は:識別子他である可能性がありますクライアント参照番号のいずれか、または
  • ステータス:あなた 、例えばで知っている場所の仕事を行う必要があります
    • 0は:開始していません
    • 1:拾った
    • 2:完成品
  • started_by:仕事を始めた誰ですか? これは完全に必須ではありませんが、あると便利です。 私はあなたのネットワーク上のIPアドレスで労働者を追跡することをお勧めしたい
  • started_at:仕事をするかを開始労働者は? 我々は再び仕事をピックアップして、別の労働者が処理を開始する必要があります知っている時間のX時間内に完了していないジョブを追跡することにより。 労働者が処理を停止することが/いくつかの理由で、停電、クラッシュ、ネットワークの損失などのオフライン

この表は、ジョブの多くの労働者が(明らかにこれは傾向にある必要がある仕事をピックアップする方法を参照してくださいするには、カウンタをかかった時間を参照してくださいするには、終了時間の列を追跡する統計を可能にするためにいくつかの追加フィールドが拡張することができるかそれは簡単です。 1)は、ジョブの優先順位は、リストは行くことができるとします。 より複雑なジョブのシナリオでは、労働者が、(そのためのみ適して労働者を使用する)にアクセスする必要がどのくらいのメモリ、あるいは労働者のタイプが必要となるかを指定することが可能になります。

きれいは、いくつかの例ジョブを追加:

例えばジョブ

次の表は、再び非常に理解することは簡単ですが、これらは私たちの仕事の記録がされます。 彼らは列で主な仕事のテーブルにリンクされている`jobs_id。 我々は4つの列を持っている非常に簡単な例を加えることができます、非常にあなたが労働者に供給するために必要なデータに依存してこの表の構成:

  • イド:レコードのID
  • 名:人の名前
  • アドレス:人のアドレス
  • jobs_id:ジョブIDには、このリンクされているレコードが

3番目と最後の表は、結果表で構成されて、それがあるとほとんど同じレコード表の一部である可能性がいくつかの列を追加する当社の記録テーブルとして、および構成する:

  • job_record_id:ジョブのテーブルへのリンクの結果を
  • 結果:結果データ

...とは、ジョブ制御するために必要なすべてを見ること! (非常に基本的なレベルではあるが)私の場合は、プロセスに自分のデータが位置していた別のテーブルに指摘したんだけど、これは同じように簡単に、シミュレーションコードを実行するためのパラメータファイルをされてことが、あなたはそれを名前を付けます。

ジョブを選択

前述したように、労働者は、我々が実際に必要なすべての処理を必要とし、情報を取得する仕事を見つけることです、今の私たちのために私たちの仕事の管理を行います。 どのように我々がこれを行うには希望ですか? さて私たちの仕事の選択基準を選択して、ジョブを探して、SQLで私は次のようでした:

  1. 完全としてではなく、我々の労働者からマークされていないと(最も簡単な方法は、IPアドレスになる識別子を持つ代替__ME__)それらをリセットするすべてのジョブしてください:
     のUPDATE`ジョブ`のSETは`status`= 0のWHEREは`status`= 1と`started_by`= __ME__; 
  2. ジョブを選択し、この労働者はそれに対処されていることを制御システムを教えて、私たちの仕事の選択基準を使用する:
     のUPDATE`ジョブ`のSETは`status`= 1、`started_by`= __ME__、`started_at`= NOW()ののWHEREは`status`= 0の場合、または
     (これは`status`= 1と`started_at`> DATE_SUB(NOW()の、区間X時間))ORDER BYは`ASCのの`id; 

    我々はすべてのジョブは、労働者のクラッシュや欠勤に行くのイベントで実行されていることを確認時のX量の結果が返されていないジョブを掴んで。

  3. 次に、自分の記録が続くのジョブの詳細をつかむ:
     します。SELECT * FROM`ジョブの`WHERE`started_by`= __ME__のLIMIT 1;
    します。SELECT * FROM`job_recordsはの`WHERE`= __JOBID__の`id; 

ジョブの完了時に私たちを挿入我々の結果の記録が完了し、ジョブをマークします。 ジョブが停止することができるように/あなたのスクリプトのいくつかの堅牢性のためにできるように、いつでも再開に注意してください。 これは、タスクがそのジョブのレコード数と賢明されるジョブ制御システムに保存される結果の数をチェックして、ジョブ制御システムを更新する途中で中断する可能性があります。

加えて、ことながら本当にすることができますこのジョブが方法を示していますが選択するSQL -クエリのフレームには、管理対象から抽象化ベースのシステム、ファイル、サービスをWeb使用してジョブ制御をするようにかどうかを判断して切り替えるのXML 、またはその他のシステムの数は、それが上記のコードには影響しません。

ジョブの設定

次に考慮すべき側面は、ジョブのサイズおよび構成されます。 ジョブの設定と一緒に遊んで、私たちは、速度、プロセスの複製、および信頼性の間に優れたバランスを取ることができます。 カップルにOFAのシナリオしてください:

  1. ジョブが実行さとる1日に、各:これは)時間が意味する3分の2のための電力を10(覚えているジョブを処理する各日15労働者が必要%である。 これは明らかに賢明構成されていない場合、ジョブのサイズが大きすぎる方法です! それは(それが結果を加えて再処理時間が返されていないことをピックアップして時間)初期労働者が無断外出する必要があります処理の仕事を得るために時間を2倍以上かかるだろう。 理想的では、以上のようにジョブが刻々と過ぎている方法のアイドル期間が長い方の端の各々 、少なくともいずれかによって完全な仕事をクリアeasilyしたい二希望かかる日に行方不明に最初にすべきプロセスジョブがで最悪のケース。
  2. ジョブの実行分を1番:これは、ジョブをそれぞれ意味する実行15分ほどかかる労働者が。 ながら、これは最初に理想的に見えるかもしれませんが、あなたが等、このシナリオでは、お使いのシステムの他の部分への負担を置いて、独自の問題を紹介昼食時、コーヒーブレイク、会議中に追加の作業の処理を得ることができます。 たとえば、まずセットアップ/処理時間比したがって、システムの効率を失って、右下に行くつもりです。 あなたのネットワークは常に一日の仕事にその日を洞ているイライラスタッフが様々な労働者に求人情報を配信する予定です。 また、それは多く、定期的に仕事の小さな断片の多くを配る必要があるとして、ジョブの処理サーバーでより多くの負担をかけないようになるだろう。 最後に、このような状況であなたの仕事のサーバーが処理を穏やかにジョブサーバーは困難を経験していたことに気付かない続けたことの大きな仕事に対し、未完成の作品の巨大なバックログを作成するつもりがダウンした場合。

現実には多くの利用可能なリソース、ジョブのターンアラウンド時間の要件は、ネットワーク機能などのジョブの種類に依存して、グリッドの設定を行うための1つの理想的構成があるでしょう。 しかし、いくつかのガイドラインは次のようになります:

  • サイズのジョブは、各労働者が15時間(最長可能性が高いアイドル時間)の期間で少なくとも3-4ジョブを介して得ることができる
  • そのセットアップ時間は非常に意味のない処理時間(心、上記の点で軸受)と比較してなるようにジョブのサイズで再生します。
  • ジョブは、それは、その行った欠勤を仮定して、別の労働者とそれを処理を開始完了する予定(多分それ以下)二重の時間を完了しない場合。 これは、あなたはそれが(おそらく長い後続のジョブが失敗した場合)を完成させるために3回、ジョブの通常の長さを待たなければならないことを意味します。 あなたは、時間を、この削減したいかもしれませんが、基礎を定期的にタスクを処理ように注意する必要が重複しない起動することがありますが同じくらいすぎて減らすことを。
  • ジョブズCEOは、可能な限り外の要件とは無関係にする必要があります。 ジョブサーバーは、例えば、唯一の開始と終了のすべてのジョブので連絡する必要があります。
  • ネットワークを飽和しないでください、これは2つの負の影響を持っているが、あなたの昼間のスタッフは、ネットワークがイライラする問題は、接続にのみ、あなたのグリッドを拡張として悪くなる問題がタイムアウトして発生する可能性がある使用しております。
  • 確認ジョブは、労働者に実行することができます。 ジョブは、あまりにも思い出になる場合は集中的に、またはディスク容量集中ジョブが中止開始されますあなたが気づくだけが理由は本当の理由で処理ジョブの数の減少です。

ジョブの送信結果

ジョブの結果を提出するとき、それは結果が現在のワーカーは、しばらくの間休止されている場合は特に、他の労働者が提出されていないことを確認することが重要です。

ときの結果は、結果の数は、ジョブ内のレコードの数と一致することを確認でございます。

は、前述のように仕事の検索結果の提出にフォールトトレランスを構築すると強調した上ですることはできません。 労働することができますほとんどの時間の都合でサスペンドモードに入ると、これは用の仕出し料理する必要があります(最も可能性が高い)。 また、再びはるかに簡単に対処するためのジョブ制御システムへの将来の変化に応えるため、あなたの結果提出を抽象化する。

概要

このsectionÂでは、ジョブ制御サーバが実行する必要が何をどのように設定し、非常に基本的なシステムを得るために見てきました。 我々は、制御システムからジョブを取得する方法と、最高のジョブを構成を取得する説明最も我々のオフィスのグリッドシステムの。 、ジョブ制御サーバに戻って結果を提出の段落または2位に発表された。

  • ジョブ制御サーバーは、ジョブを管理し、すべての作業単位が完了していることを保証
  • あなたの仕事/結果の提出を我々は多くの問題もなく管理サーバーの技術を変更することができます選択して抽象化することにより、
  • 設定あなたの仕事は、彼らは、ネットワークインフラストラクチャ上で過剰な圧力をかけることなく、定期的に処理タスクを複製することなく、迅速かつ効率的に実行されていることを確認してください。
  • を確認して、あなたのルーチンにフォールトトレランスとエラーcheckingÂを構築すること、労働者が一時停止することができます再開、最も時間の不便。 結果は、すでに別の労働者が提出されているかどうかを確認してください。

次回

第3部私たちはマシンを処理します作成我々の仮想と労働時間になるアイドルにマシンを設定し、当社のWindows。

使用して仮想環境を計算オフィスグリッド-第5部

スティーブンロイドワトキン 、金曜日2009年12月4日11時03分

はじめに

I work in a company where we run many batch jobs processing millions of records of data each day and I've been thinking recently about all the machines that sit around each and every day doing nothing for several hours. Wouldn't it be good if we could use those machines to bolster the processing power of our systems? In this set of articles I'm going to look at the potential benefits of employing an office grid using virtualised environments.

In Part 4 we looked at using tools to ensure that we're running the latest version of the code and data sources so that obtained results are always up-to-date with the latest business information and logic.

Pre-Deployment

Before deploying your grid system if there's one thing you do and one thing alone it's benchmark your current system ! No matter what you tell colleagues about how much extra work your system is going to do unless you have numbers to back this up your guarantees are nothing. だから、

  • how many records can you process currently? あたりの日? Per Hour?
  • How long does it typically take to turn around a job?
  • How much more capacity do you have?

There's also additional questions:

  • If your processing server (or one of your processing servers) goes down how will this affect your capabilities, will you be crippled?
  • What advantages do you hope/expect to get from a grid system?
  • Are your office machines capable of running the jobs?
  • Are your (or can you jobs be converted) to wrok in this style of running?

The last major point is to take your time on any major change like this. Update your processing code to work using the new methodology, benchmark again. Possibly set up your processing server to run a virtual machine, after all your processing server will just be another worker (just a very powerful one relatively). Allow the new process to settle.

Deployment

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. を繰り返して喜んで、すべてのオフィス機器は、個々のマシンのパフォーマンスを殺したり、停止するには、ネットワークを粉砕せずに実行するまで、このサイクルを。

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

ストップ!

どのようないくつかの時間で動作しているから労働者を停止したい場合は? 彼らはすべてのアウトが、再生、実行していると空腹昆虫のようにデータを処理するために最善をしようとしている。 答えは明らかにその価値が見過ごされ、念のために追加するかもしれません。 単に出口(0)または死ぬ()または処理ジョブを殺すためにいくつかの他のステートメントを使用して処理スクリプトを編集します。 重要な理由は、なぜ我々は常に実行する前に、最新の処理スクリプトを更新してみて!

デモンストレーションシステム

ために私は技術や方法論を示すために、非常に小さなグリッドを作成短い記事のセットを作成する。 私は、記事、チュートリアルの多くを読んで、セットアップに様々なツールを使用し、何が起こっているか監視します。 手段は私が行っていることで、トラフィックとオフィス全体を飽和も私は、ホストのパフォーマンスが影響を受けた方法を参照してください定期的に職員のPCへのアクセスがあった。

私のデモシステムは確かに非常に謙虚だった。 私は通常のデスクトップは、ジ​​ョブ制御サーバとして設定され使用されます。 これについて私がインストールされていたMySQLのレプリケーションでマスタとして設定されてインストールされているサーバーを、 PHPの 、ÂとSVNを介してリンクされているApacheの (VMの労働者を介してのアクセス)。

私は、6歳のWindows XPのラップトップ上のVirtualBoxでCentOSの労働者のマシンを作成しました。 マシンにVMをコピーし、それを手放すの後に指定するなどのタスクをスケジュール設定すれ。

仮想マシンは、PHP、転覆、およびMySQLで設定された。 私は、ジョブ制御サーバーのリポジトリーからの'労働者と確認したことは'svn update'を使用して更新できるという名前のブランチをチェックアウト。 次に私のセットアップスレーブとしてMySQLとのデータは、ジョブ制御サーバーを停止ワーカーVMへのMySQLから複製されたことを確認した。 すべてこれは私のセットアップのbashスクリプトとcronジョブの後。

私の処理スクリプトは、基本的に、この(非常に簡単なもの)の線に沿って行った:

  • 名]フィールドに読む
  • VM上で保持されているデータソースからテーブル内の類似した名前の数をカウント
  • 上記のように名前の数を数え、スペース(すなわちforename、中​​間、姓)で名前を分割する
  • 1,000回このプロセスを繰り返し

各ジョブの実行に約20分かかりました。 ある時点で私は窓のラップトップ上でワーカーVMの複数のコピーを開いて、ジョブが労働者のIPアドレスの各々によってオフにチェックすることが見ていた。 この時点で私はまた、レプリケーションが自動的に再起動を確認した。

ラップトップを残して、ジョブ制御サーバからのジョブの処理を開始労働者のような結果空費します。 When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

結論/評価

次の明白な手順では、実際に現実世界での例を取得することです、オフィス環境の中でこのようなシステムを展開して、何が起こるか見て起動します。 技術を証明する証跡燃える会社と有効性をせずに、このことを約束し、事業をお願い少し難しいかもしれません。 グリッド/分散コンピューティングは、非常に普及しているいくつかの円であり、(BIONCは、SETI @ Homeは、折り畳みアットホームなど)いくつかの大規模なアプリケーションを持っています。 しかし私は、小規模、そのオフィス環境の中で展開されることができず、私の検索でこのような単純なシステムを見つけるには、しませんでした。

私は、ほぼすべてのオフィスで主にオープンソースのソフトウェアやツールを利用使用して、基本的にフリーのシステムを作成しました。 技術は基本的に実証され、実行し、期待どおりに動作表示されます。 うまくいけば、私は非常に簡単な設定されていない多くの仕事におよびあなたは、安い、Â、強力で、すべての拡張を同時にされるオフィスグリッドコンピューティングシステムを展開することができますことを示している。

システムが起動され、実行されるほとんどのカスタマイズ、あなたがすることができます改善の量には終わりがない。 例の統計情報/ベンチマークについて簡単にそのようなシステムの価値を、毎日を示す追加することができます。 新しいマシンは、迅速かつ容易に追加することができます彼らはあなたの処理能力を強化し、既存のハードウェアにアップグレードして到着したとき。

私は、あなたがこのシリーズの記事を読んで楽しんできた願っ事務所グリッドシステムを実行しているのあなたに思考の糧を与えられます。 解決策は、必ずしもすべての状況では動作しませんが、独自のソリューションを使用して行う処理データを取得できるように適応する必要がありますここで紹介する。

私に何かコメント、修正、または改善、お気軽にしてくださいと私は一致するように更新この記事を維持するために最善を尽くします。

[notice] child pid XXXX exit signal Segmentation fault (11)

By Steven Lloyd Watkin , Sunday 11th October 2009 6:09 pm

If you've recently upgraded PHP or Apache you maybe coming up against the issue of your webserver returning blank pages, and throwing error messages into your logs with no idea why, here's one possible way to fix it…

I've had this problem a couple of times recently after upgrading Apache or PHP on a virtual machine. The first time I noticed the error I simply reverted to a backup of my VM but the second time I realised I'd have to look into the issue.

The first time I noticed the issue some of my web pages were being served as blank files while the others worked absolutely fine. After some investigation I noted that apache was writing out to /var/log/http/error_log with the following message repeatidly:

[notice] child pid XXXX exit signal Segmentation fault (11)

There's not allot to go by on-line, and most of the pages about it trail off to nothing. That said, I narrowed down the issue to PHP crashing when trying to unneeded dynamic libraries.

Looking at my php.ini (/etc/php.ini) I commented out all of the dynamic libraries loaded planning on commenting them back in as required. The two I had to take out where pdo.so and mysql .so .

Once these were removed all my web pages were being served fine, just as before the PHP/Apache update.

Wireless on Acer 5002 WLMi on Linux (Fedora 11)

By Steven Lloyd Watkin , Saturday 11th July 2009 9:48 pm

As I've spent another few hours today without internet access I thought I'd better get this written down so that next time I mess my laptop up the information is easy to fix.

Basically to get wireless drivers working for an Acer 5002 WLMi you'll need to use b43-fwcutter. Instructions can be found here: Linux Wireless B43 .

Easy once the information is located.













パノラマテーマ別 Themocracy

10人オンライン中
7人のゲスト、3ボット、0人のメンバー
今日の最大の訪問者は:24 12:36 UTCに午前
今月:26 2011年7月5日12時35分は、UTC午前
今年:130 28-03-2011 22:40 UTCに
すべての時間:130 28-03-2011 22:40 UTCに