成長するcron:次のスケジューラは何ですか?[閉まっている]


30

ジョブスケジューリングのすべてのニーズを処理することを忘れない限り、cronを使用しています。ストレージクローン/スナップショットからデータベースに対するレポート、毎日のシステムレポート、監視チェックまで、すべてがcronを介して数百台のサーバーでスケジュールされています。

欠点は非常に明白です:ジョブの管理が難しく、依存関係を作成する簡単な方法がありません(特に異なるサーバー間で)、そしてもちろん、誰かが「一時的に」ジョブをスキップした後でコメントを削除するのを忘れることは避けられません。

私たちは商業的な提供を試みましたが、最終的にはcronからのステップアップとして高すぎると考えられました。

SLURM、Oracle Grid Engine、Torque / Maui、Quartz、DIET、Condorなどの他のオプションがあります。これらのオプションは、任意の数の同様のノードで実行されるジョブを備えた、より大規模で同種のクラスター環境向けです。など。私たちの環境はかなり混合されており(さまざまなLinux、AIX、およびFreeBSD)、さまざまなタイプのシステム間で依存関係を作成する必要があります(たとえば、Linuxボックスのジョブは、AIXボックスのジョブを実行するかどうかを判断する必要がある場合があります)。

cronからより集中管理された製品に移行した経験はありますか?ソフトウェアを選択するためのヒントや、オープンソースと商用のどちらを選択するのが良いのか?

回答:


11

Condor、OGE、Torqueはすべてあなたをそこに連れて行くことができますが、CondorだけがDAGManツールを備えた組み込みの依存関係管理を持っています。DAGManを使用すると、ワークフローを説明する有向非循環グラフを設定でき、マネージャーがワークフロー内のジョブを移動し、フローの各ステップで合否結果を評価します。Condorは比較的プラットフォームに依存しないため、DAGManも同様であり、LinuxまたはWindowsで親が実行された場合、AIXで1つの子ステップを実行できます。DAGManはジョブの実行場所に関係なく、終了コードが成功または失敗するだけです。

ソフトウェアを選択するためのヒントや、オープンソースと商用のどちらを選択するのが良いのか?

いくつかの注意事項がありますが、このスペースの無料コミュニティは一見の価値があります。

OGEは今、奇妙な空間にいます。オラクルが製造したGEバリアントを実行することはもはや無料ではなく、オラクルはもはやGE SCCに書き戻すコードを提供していませんが、フリーのオープンソースプロジェクトとして戦おうとしているコードのいくつかの分岐が存在します。特にユニバは、サンの元GE開発者を雇い、オープンソースの無料で入手可能なGEバリアントの開発を続けています。Grid Engineには2つのことがあります。セットアップが簡単で、短い実行時間(<2分)のジョブを処理でき、スループットを低下させる大量のスケジューリングオーバーヘッドをジョブに与えることができません。大きな欠点は、Windowsのサポートがあまり良くないことです。私たちの中には、何年も前にCygwinで実行するために移植するためにいくらかの努力をしましたが、確かにネイティブほど良いものではありません。

今、コンドルはあなたが言及した3つの技術の中で私のお気に入りです。Condorには強力なコミュニティがあり、ソフトウェアは非常に成熟しています(現在20歳以上)。ネイティブのWindowsおよびPOSIX OSのサポートにより、あらゆる場所で非常にうまく動作します。前述のDAGManは、Condorに付属している多くの素晴らしい作品の1つにすぎません。設定するのは複雑な作業ですが、一度実行すると動作が安定します。ジョブ<->マシンマッチングを実行し、リソースの使用ルールを構築するための非常に柔軟な言語を備えています。また、マシンでの動的なプロビジョニングもサポートしており、ジョブが必要とするマシンリソースの量を選択してから、差異がまだ利用可能であることを再通知します。グローバルライセンスカウンターをサポートしているため、ソフトウェアライセンスなどを制限できます。そしてもちろん、ワークフロー管理のための非常に強力なツールであるDAGManがあります。Condorの欠点は、短時間実行されるジョブのスケジューリングのオーバーヘッドが負担になることです。理想的には2分より長く実行されるジョブが必要です。そうしないと、システムでのスケジューリングがジョブの時間の大きな部分になり始めます。

トルクはもう少しニッチです。私はそれについてあまり知りません。CondorよりもGrid Engineに匹敵します。@warrenが言及した有料のアドオンがあり、基本的な無料のTorqueでできることを拡張できます。

3つのテクノロジーを試して、特定のワークロードでどのように機能するかを確認したい場合、CycleCloudは、Condor、GridEngine、またはTorqueで事前に構成された安全な仮想化プールをスピンアップできます。あなたの側で。各テクノロジーの小さなプールをスピンアップし、代表的なワークロードで試してみると数ドルになります。(免責事項:私はCycle Computingで働いており、CycleCloudを作成しています)


情報のおかげで。コンドルは、特定のジョブを実行できるすべてのマシンのコレクションを対象としています。私が抱えている問題は、非常に特定の場所で実行される多数のジョブを持っていることの1つですが、特定の順序で実行するにはジョブをチェーンする必要があります。これはコンドルにもできることですか、それともこの方法で動作させるのは苦痛でしょうか?
Cakemox

1
コンドルはあなたの状況に対処できます。プール内の非常に特定のマシンまたはハードウェアを対象とするように、DAGからのジョブをあらゆる方法で制限できます。
イアンC.

6

クロノスは非常に有望に見えます。

Chronosは、Airbnbのcronの代替品です。これは、Apache Mesosの上で実行される分散型のフォールトトレラントスケジューラです。これを使用してジョブを調整できます。カスタムのMesosエグゼキューターとデフォルトのコマンドエグゼキューターをサポートしています。したがって、デフォルトでは、Chronosはsh(ほとんどのシステムbashで)スクリプトを実行します。実行が行われるMesosスレーブにHadoopがインストールされていなくても、Chronosを使用してHadoop(EMRを含む)などのシステムと対話できます。含まれるラッパースクリプトにより、ファイルを転送してバックグラウンドでリモートマシンで実行し、非同期コールバックを使用してジョブの完了または失敗をChronosに通知できます。

また、cronの代替としてJenkinsを使用して、個人的に大きな成功を収めています。リモートサーバーでのジョブの実行を非常にうまく処理します。これに関する記事は次のとおりです。http://www.22ideastreet.com/blog/2014/05/02/replace-local-cron-with-jenkins/


4

過去4.5年間、私はHP(旧Opsware)サーバーオートメーションプラットフォーム、およびその他のビジネステクノロジー最適化スイート(ネットワークオートメーション、オペレーションオーケストレーションなど)で働いてきました。

十分に大きい環境では、SAを介したジョブ管理は非常に実行可能な(そして望ましい)ツールです。OOと連携して、ジョブは変更管理、チケット発行などを介して制御できます。

これはそれほど面白くない部分です:それは高価です(非常に高価です)。私がしばらく前に尋ねた同様の質問で提案のいくつかをチェックするかもしれません:FLOSSサーバー管理と監査ツール

また、(Adaptive Computingの)Torque / Maui / Moab は非常にクールだと言います。価格については確かではありませんが、柔軟性の高いツールでもあります。


免責事項-HP BTOとAdaptiveのパートナーで働いています


2

問題に対する完全に異なる見解!

cron 古く、特定の用語では不格好です。

スケジューリングを行うための新しい方法を実際に探している場合は、メッセージングミドルウェアに基づいたイベントをお試しください。各サーバー上のクライアントとRabbitMQを考えてください。

ホスト間の依存関係は、「通知キュー」によって解決できます。

「リアルタイム」ベースのイベントは少しトリッキーです。それが実際にcronの目的です(少なくとも小規模な環境に関しては非常に得意です)。アイデアをつかむのが難しいのは、ヒックアップを防ぐことです。たとえば、毎晩0100hにスナップショットを作成します。その瞬間に、インフラストラクチャ全体を介して、負荷の急上昇やログインの失敗が多数発生する場合があります。アプローチに基づいたキューがある場合、少なくともいくらかの偏差が無料で得られます(ただし、保証されているわけではありません-一部のロジックがそれを実装しない限り)。

回避すべきことは、リアルタイムベースのジョブがないと、次のようなものに頼ることができないということです。ええ、私のバックアップは0200hから始まり、それでも0400hで実行される場合は何か問題があります。簡単なのは、干渉する2つのジョブが同時に実行されないようにすることです。一度に1つのジョブのみを消費するブロッキングエージェントを作成します。

管理部分は、ジョブをオンデマンドで送信できる優れたWebインターフェイスです。または、「cron」またはそのお気に入りの実装に戻ります。Javaクォーツスケジューラは、数秒単位の粒度を持ちます。時間ベースの部分は、古き良きcronを使用します:)

OTであることに私を落胆させないでください-それはかなり大まかな概念ですが、質問はお金を排除しないので、支出するのではなく何かを作成することによって正確な社内要件の解決策を得るためにお金を費やすこともできますベンダーがいくつかの要件を満たしていると考える場所で何かを購入することによるお金:)


これは大規模なジョブを配布するのに興味深いですが、私のジョブはより一時的なものです。ただし、このようにキューに入れることができるジョブがいくつかあるので、それらについてはこのことを念頭に置いておきます。
Cakemox

1

CAのEspresso(Cyber​​mation)を使用しました。彼らが今それを何と呼んでいるかわからない。UC4も使用しました。両方とも機能し、多額の費用がかかり(私の理解では)、維持するのが負担になる可能性がありますが、ブリキに書かれていることを行います。/ Edit-商用アプリは高価すぎると言うのを見逃しました。確かに同意できますが、一部の企業にとっては価値があります。特に、収益を上げるビジネスアプリケーションの場合は価値があります。


1

私は、本番環境で2000行以上の中央のcrontabを置き換えるオプションとして、オープンソースジョブスケジューラを使用しました。cronが非常に複雑になったため、ダウンタイムウィンドウとは何か、サーバー間の依存関係をどのように処理するかを判断できませんでした。この製品は役に立ちましたが、セットアップが少し複雑でした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.