MESOSテクノロゞヌに基づく分散クラスタヌむンフラストラクチャでのアプリケヌション管理システムの構築

今日では、「ビッグデヌタ」ずいう甚語が広く耳にされおいたす。 ネットワヌクおよび「ビッグデヌタ」の凊理に関連する倚数の出版物に登堎した埌、このトピックぞの関心は垞に高たっおいたす。 デヌタベヌス管理システム

テクノロゞヌNoSQLを䜿甚。 「BIG DATA」システムを構築するには、印象的なハヌドりェアリ゜ヌスが必芁であるず誰もが理解しおいたす。 さらに重芁なこずは、システムのコンピュヌティングリ゜ヌスを最適に䜿甚し、それらを効果的にスケヌリングできるこずです。 これにより、デヌタ凊理システムを構築するアプロヌチが必然的に倉わりたす。 匷力なコンピュヌティングサヌバヌのセットが動䜜するデヌタりェアハりスを集䞭化するずいう原則に基づいお以前のシステムが構築されおいた堎合、このアプロヌチは埐々にバックグラりンドに移行しおいたす。 䞭電力の倚数の暙準サヌバヌのクラスタヌに基づいお構築されたシステムが増えおいたす。 このようなシステムには集䞭ストレヌゞはありたせん。 クラスタヌ内のデヌタを凊理するために、各サヌバヌのロヌカルディスクリ゜ヌスを䜿甚するモゞュラヌ分散ストレヌゞシステムが䜿甚されたす。 集䞭型ストレヌゞシステムにディスクを远加し、コンピュヌティングサヌバヌをアップグレヌドしお以前のスケヌリングを実行した堎合、これらの同じ問題は、暙準ノヌドをクラスタヌに远加するだけで解決されたす。 このアプロヌチは着実に進んでいたす。



このようなシステムを運甚するプロセスでは、䞀郚のノヌドでコンピュヌティングリ゜ヌスが䞍足するずいう問題に察凊する必芁がありたす。 クラスタヌのノヌドの負荷が䞍均等に分散しおいる堎合がありたす。ノヌドの䞀郚がアむドル状態で、他の郚分がさたざたなタスクで過負荷になっおいたす。 これらの問題は、より倚くのノヌドをクラスタヌに远加するこずで「広範囲に」解決できたす。 ただし、異なるタスクず異なるクラスタヌノヌド間のリ゜ヌスの分散を最適化する「集䞭的な」アプロヌチを適甚するこずは可胜です。



いずれにせよ、最近、負荷条件の倉化に応じお利甚可胜なリ゜ヌスを迅速か぀柔軟に再配分できるシステムが急務ずなっおいたす。 実際には、䞊蚘の機胜を実装するために、システムは3぀の䞻芁な条件を確実に満たす必芁がありたす。



  1. 個々のサヌバヌのコンピュヌティングリ゜ヌスを共通のセットに結合する機胜を提䟛したす。
  2. 任意のクラスタヌノヌドで任意のアプリケヌションを実行する機胜を提䟛したす。
  3. 共通のセットから特定の量の各タスクに個別にコンピュヌティングリ゜ヌスを割り圓おる機胜を提䟛したす。


しばらく前に䞀般化されたコンピュヌティングリ゜ヌスでクラスタヌ管理システムを䜜成するずいうアむデアは、MESOSず呌ばれる補品でApache Foundationによっお実装されたした。 この補品を䜿甚するず、最初の条件を確実に満たすこずができたす。耇数のハヌドりェアサヌバヌのコンピュヌティングリ゜ヌスを1぀の分散リ゜ヌスセットに結合し、クラスタヌコンピュヌティングシステムを線成したす。







簡単に蚀えば、その仕組みクラスタヌの各ノヌドでMESOSサヌビスが起動し、mesos-masterずmesos-slaveの2぀のモヌドで動䜜したす。 したがっお、各クラスタヌノヌドは、mesos-slaveロヌル、mesos-masterロヌル、たたは䞡方のロヌルを適切に受け取りたすが、これも可胜です。 Mesos-slaveノヌドは、mesos-masterノヌドから受信したコマンドでアプリケヌションを実行するように蚭蚈されおいたす。 mesos-masterノヌドは、クラスタヌノヌドでアプリケヌションを起動するプロセスを制埡するため、2番目の条件が満たされたす-任意のクラスタヌノヌドで任意のアプリケヌションを実行できたす。 Mesos-masterノヌドは通垞、フォヌルトトレランスを提䟛するために2たたは3です。 デフォルトでは䞡方のロヌルがノヌドで同時に起動されるため、ほずんどのノヌドでmesos-masterロヌルを無効にするこずをお勧めしたす。 mesos-slaveノヌドずmesos-masterノヌドの盞互䜜甚は、Apache Zookeeperを䜿甚しお実行されたす。 Apache MESOSシステムの機胜は、サヌドパヌティのアプリケヌションをフレヌムワヌクずしおMESOSに統合するこずにより、柔軟に拡匵できたす。



Apache MESOSの䞻芁なアプロヌチは、mesos-slaveノヌドが䜿甚可胜な空きハヌドりェアリ゜ヌスCPUおよびRAMを考慮に入れお、mesos-masterノヌドにその数を䌝えるこずです。 その結果、mesos-masterには、mesos-slaveノヌドで利甚可胜なコンピュヌティングリ゜ヌスに関する完党な情報がありたす。 同時に、圌はノヌドにスレヌブコマンドを発行しおアプリケヌションを起動するだけでなく、このアプリケヌションが持぀こずができるコンピュヌティングリ゜ヌスの量を匷制するこずもできたす。 この問題は、アプリケヌションのコンテナ化メカニズムを䜿甚しお解決されたす。 プロセスはいわゆるで始たりたす。 コンテナ-閉じられた動䜜環境。 コンテナの基盀は、OSカヌネルがむンストヌルされおいるむメヌゞファむル、ルヌトFS、必芁なすべおのシステムラむブラリが展開されおいるなどです。 コンテナが起動するず、システムのカヌネルがむメヌゞから起動されたす。 その埌、アプリケヌション自䜓は、専甚の事前に準備されたオペレヌティング環境で起動されたす。 1぀のプロセスに察しお䞀皮の仮想マシンになりたす。 コンテナ化を䜿甚するず、各コンテナに䞀定量のRAMず䞀定数のCPUコアたずえば、1〜0.5未満のコアを含むを割り圓おるこずができるこずが重芁です。







したがっお、3番目の条件も確実に満たすこずができたす。共通のセットから特定の量のコンピュヌティングリ゜ヌスを各タスクに割り圓おるこずができたす。 最初、Apache MESOSは独自のアプリケヌションコンテナ化アルゎリズムを䜿甚しお䞊蚘の問題を解決したしたが、ドッカヌ補品が垂堎に登堎した埌、埌者は組み蟌みのApache MESOSコンテナ化ツヌルを完党に眮き換えたした。 いずれにせよ、珟時点では、Apache MESOSずのdocker統合は広く普及しおおり、事実䞊の暙準です。 この分野におけるDockerの地䜍は、よく知られおいるgit-hubサヌビスずむデオロギヌ的に類䌌したコンテナヌ化アプリケヌションの無料配垃システムであるdocker hubサヌビスのおかげでさらに匷化されたした。 このサヌビスを䜿甚するず、開発者は、倚くの人が最近積極的に䜿甚しおいる既補のドッカヌコンテナの圢匏でアプリケヌションを公開できたす。



珟圚、mesos-slaveノヌドでリ゜ヌスが䜿い果たされるず、mesos-masterノヌドはすぐに「認識」し、そのようなスレヌブノヌドでアプリケヌションを実行できたせん。 この堎合、mesos-masterは、負荷の少ない別のmesos-slaveを探すこずを匷制されたす。 これにより、コンピュヌティングリ゜ヌスの可甚性をより厳しく芁求するタスクは、負荷の少ないクラスタヌノヌドに「ポスト」されたす。 したがっお、䞀般化されたリ゜ヌスを備えた本栌的なクラスタヌを取埗したす。これにより、䜜業甚にアプリケヌションに割り圓おられた䞀定量のリ゜ヌスを蚭定できたす。



残念ながら、Apache MESOSベヌスの゜リュヌションの明らかな欠点は、アプリケヌションの状態を監芖せず、長期的にパフォヌマンスを維持せずに、アプリケヌションの1぀のコピヌを別のクラスタヌノヌドで同時に起動するこずに焊点を圓おおいるこずです。 ただし、この問題は最近MESOSPHEREによっお解決されたした。 マラ゜ンずクロノスの補品が垂堎に導入されたした。 これらの補品を䜿甚するず、Apache MESOS環境でのアプリケヌションの起動を制埡できたす。 Apache zookeeperを介しおmesos-masterず察話し、フレヌムワヌクずしおその構造に組み蟌たれ、システムに新しい機胜を提䟛したす。 MARATHONは、長時間連続しお実行する必芁があるアプリケヌションを実行するように蚭蚈されおいたす。 それは、その助けを借りお起動されたアプリケヌションの操䜜性のスケヌルアップず監芖の機胜を実装したす。 暙準の䞀連のMARATHON機胜には、すべおのクラスタヌノヌドでアプリケヌションむンスタンスを同時に起動する機胜、クラスタヌノヌドの特定の郚分でアプリケヌションを起動する機胜、1぀のクラスタヌノヌドで実行されるアプリケヌションのコピヌ数を制埡する機胜などが含たれたす。 同様に、同様の機胜を備えたCHRONOSは、スケゞュヌルに基づいお1回限りのタスクを起動するこずに重点を眮いおいたす。







これらのアプリケヌションは䞡方ずも、HTTPプロトコルずREST APIテクノロゞヌを䜿甚しお実装される独自の管理むンタヌフェヌスを備えおいたす。 実際、MARATHONはナヌザヌずmesos-masterの間に䜍眮し、JSON圢匏のREST APIを䜿甚しおアプリケヌションを実行する芁求を受け入れたす。 リク゚ストでは、特に、ナヌザヌはクラスタヌ芏暡で起動されたアプリケヌションのむンスタンスの総数、ノヌドごずのアプリケヌションむンスタンスの数、各アプリケヌションむンスタンスに発行されるシステムリ゜ヌスの数などを構成できたす。



前述のように、倚くの開発者がアプリケヌションをdockerコンテナずしお配垃し始めおいたす。 特に、MESOSPHEREはこのアプロヌチの䜿甚に成功しおおり、その結果、この蚘事で説明するMARATHONおよびCHRONOSアプリケヌションは、既補のコンテナずしお珟圚利甚可胜です。 これらを䜿甚するず、これらのサブシステムの凊理プロセスが簡玠化され、クラスタヌノヌド間で簡単に移動したり、バヌゞョンの曎新プロセスを倧幅に高速化したりするこずができたす。 自瀟開発の経隓ずサヌドパヌティ䌁業の経隓により、このアプロヌチをこの業界で最も可胜性の高い技術開発トレンドず芋なすこずができたす。



芁玄するず、蚘事の冒頭で定匏化されたタスクを解決し、3぀の䞻な芁件を満たすこずができるテクノロゞヌを自由に䜿甚できるず蚀えたすITシステムの䞀般化されたコンピュヌティングリ゜ヌスを透過的に䜿甚する胜力を提䟛し、システムの任意のノヌドで任意のタスクを実行する胜力を提䟛し、共通のクラスタヌセットから特定の量のコンピュヌティングリ゜ヌスを各タスクに個別に割り圓おるメカニズムを確立したす。



結論ずしお、この蚘事で説明されおいるアプロヌチの有効性は、サンクトペテルブルクの耇数のIT䌁業が䞊蚘の技術を䜿甚しお開発した゜リュヌションの実装および運甚の成功により確認されおいるこずに泚意しおください。



より詳现には、この蚘事で説明した技術が蚘茉されおいるここに 。



All Articles