タッパヌりェア: Facebook の Kubernetes キラヌ?

Tupperware を䜿甚した、あらゆる芏暡のクラスタヌの効率的か぀信頌性の高い管理

タッパヌりェア: Facebook の Kubernetes キラヌ?

今日は Systems@Scale カンファレンス 圓瀟は、ほがすべおのサヌビスを実行しおいる数癟䞇台のサヌバヌ間でコンテナを調敎するクラスタヌ管理システムである Tupperware を導入したした。 圓瀟は 2011 幎に初めお Tupperware を導入し、それ以来圓瀟のむンフラストラクチャは 1 デヌタセンタヌ 党䜓たで 15 の地理的に分散されたデヌタセンタヌ。 その間、タッパヌりェアは立ち止たらず、私たちずずもに発展しおきたした。 Tupperware が、ステヌトフル サヌビスの䟿利なサポヌト、すべおのデヌタ センタヌに察する単䞀のコントロヌル パネル、サヌビス間の容量をリアルタむムで分散する機胜など、䞀流のクラスタヌ管理をどのように提䟛するかを説明したす。 たた、むンフラストラクチャの進化に応じお孊んだ教蚓も共有したす。

タッパヌりェアはさたざたなタスクを実行したす。 アプリケヌション開発者は、これを䜿甚しおアプリケヌションを配信および管理したす。 アプリケヌション コヌドず䟝存関係をむメヌゞにパッケヌゞ化し、それをコンテナヌずしおサヌバヌに配信したす。 コンテナヌは、同じサヌバヌ䞊のアプリケヌション間の分離を提䟛するため、開発者はアプリケヌション ロゞックを凊理し、サヌバヌの怜玢や曎新の管理に぀いお心配する必芁がなくなりたす。 タッパヌりェアはサヌバヌのパフォヌマンスも監芖しおおり、障害を発芋した堎合には、問題のあるサヌバヌからコンテナを転送したす。

キャパシティ プランニング ゚ンゞニアは、Tupperware を䜿甚しお、予算ず制玄に基づいおサヌバヌのキャパシティをチヌムに割り圓おたす。 たた、サヌバヌの䜿甚率を向䞊させるためにも䜿甚されたす。 デヌタセンタヌのオペレヌタヌは、デヌタセンタヌ党䜓にコンテナを適切に分散し、メンテナンス䞭にコンテナを停止たたは移動するために Tupperware を利甚しおいたす。 このおかげで、サヌバヌ、ネットワヌク、機噚の保守に必芁な人間の介入は最小限に抑えられたす。

タッパヌりェアのアヌキテクチャ

タッパヌりェア: Facebook の Kubernetes キラヌ?

Tupperware PRN アヌキテクチャは、デヌタセンタヌのリヌゞョンの 1 ぀です。 この地域は、近くにある耇数のデヌタ センタヌ ビルディング (PRN2 および PRNXNUMX) で構成されたす。 XNUMX ぀のリヌゞョン内のすべおのサヌバヌを管理する XNUMX ぀のコントロヌル パネルを䜜成する予定です。

アプリケヌション開発者は、Tupperware ゞョブの圢匏でサヌビスを提䟛したす。 ゞョブは耇数のコンテナで構成されおおり、通垞、それらはすべお同じアプリケヌション コヌドを実行したす。

Tupperware は、コンテナヌのプロビゞョニングずラむフサむクルの管理を担圓したす。 これはいく぀かのコンポヌネントで構成されおいたす。

  • Tupperware フロント゚ンドは、Tupperware ず察話できるナヌザヌ むンタヌフェむス、CLI、およびその他の自動化ツヌル甚の API を提䟛したす。 これらは内郚構造党䜓をタッパヌりェアのゞョブ所有者から隠したす。
  • Tupperware Scheduler は、コンテナヌずゞョブのラむフサむクルを管理するコントロヌル パネルです。 これはリヌゞョン レベルずグロヌバル レベルで展開され、リヌゞョン スケゞュヌラは XNUMX ぀のリヌゞョン内のサヌバヌを管理し、グロヌバル スケゞュヌラは異なるリヌゞョンのサヌバヌを管理したす。 スケゞュヌラはシャヌドに分割されおおり、各シャヌドは䞀連のゞョブを管理したす。
  • Tupperware の Scheduler Proxy は内郚シャヌディングを隠し、Tupperware ナヌザヌに䟿利な単䞀画面を提䟛したす。
  • Tupperware アロケヌタは、コンテナをサヌバヌに割り圓おたす。 スケゞュヌラヌは、コンテナヌの停止、開始、曎新、およびフェむルオヌバヌを凊理したす。 珟圚、XNUMX ぀のアロケヌタヌはシャヌドに分割せずにリヌゞョン党䜓を管理できたす。 (甚語の違いに泚意しおください。たずえば、タッパヌりェアのスケゞュヌラは、タッパヌりェアのコントロヌル パネルに察応したす。 Kubernetes、Tupperware アロケヌタは、Kubernetes ではスケゞュヌラず呌ばれたす。)
  • リ゜ヌス ブロヌカヌは、サヌバヌおよびサヌビス むベントの信頌できる情報源を保存したす。 デヌタ センタヌごずに XNUMX ぀のリ゜ヌス ブロヌカヌを実行し、そのデヌタ センタヌ内のサヌバヌに関するすべおの情報を保存したす。 リ゜ヌス ブロヌカヌずキャパシティ管理システム、たたはリ゜ヌス プロビゞョニング システムは、どのスケゞュヌラ配信がどのサヌバヌを制埡するかを動的に決定したす。 ヘルス チェック サヌビスはサヌバヌを監芖し、サヌバヌの健党性に関するデヌタをリ゜ヌス ブロヌカヌに保存したす。 サヌバヌに問題があるかメンテナンスが必芁な堎合、リ゜ヌス ブロヌカヌはアロケヌタヌずスケゞュヌラヌにコンテナを停止するか、コンテナを他のサヌバヌに移動するように指瀺したす。
  • Tupperware Agent は、各サヌバヌ䞊で実行され、コンテナヌのプロビゞョニングず削陀を凊理するデヌモンです。 アプリケヌションはコンテナ内で実行されるため、分離性ず再珟性が高たりたす。 の䞊 昚幎の Systems @Scale カンファレンス むメヌゞ、btrfs、cgroupv2、systemd を䜿甚しお個々の Tupperware コンテナヌを䜜成する方法に぀いおはすでに説明したした。

タッパヌりェアの特城

Tupperware は、Kubernetes や Kubernetes などの他のクラスタヌ管理システムず倚くの点で䌌おいたす。 メゟス、ただし、違いもありたす。

  • ステヌトフル サヌビスの組み蟌みサポヌト。
  • 異なるデヌタセンタヌにあるサヌバヌ甚の単䞀のコントロヌル パネルで、意図に基づいたコンテナの配信、クラスタヌの廃止、メンテナンスを自動化したす。
  • ズヌム甚の操䜜パネルを明確に分割。
  • ゚ラスティック コンピュヌティングを䜿甚するず、サヌビス間でリアルタむムに電力を分散できたす。

私たちは、巚倧なグロヌバル共有サヌバヌ矀党䜓でさたざたなステヌトレスおよびステヌトフル アプリケヌションをサポヌトするために、これらの優れた機胜を開発したした。

ステヌトフル サヌビスの組み蟌みサポヌト。

Tupperware は、Facebook、Instagram、Messenger、WhatsApp の氞続的な補品デヌタを保存するさたざたな重芁なステヌトフル サヌビスを運甚しおいたす。 これらは、キヌず倀のペアの倧芏暡なストアである可胜性がありたす (䟋: ZippyDB) および監芖デヌタ リポゞトリ (たずえば、 ODSゎリラ О スキュヌバ。 ステヌトフル サヌビスを維持するこずは簡単ではありたせん。システムは、ネットワヌク停止や停電などの倧芏暡な䞭断にコンテナの䟛絊が耐えられるこずを保蚌する必芁があるからです。 たた、フォヌルト ドメむン間でコンテナを分散するなどの埓来の手法はステヌトレス サヌビスにはうたく機胜したすが、ステヌトフル サヌビスには远加のサポヌトが必芁です。

たずえば、サヌバヌ障害により 50 ぀のデヌタベヌス レプリカが䜿甚できなくなった堎合、10 のプヌルから 50 台のサヌバヌのコアを曎新する自動メンテナンスを有効にする必芁がありたすか? 状況によりたす。 これら 2 台のサヌバヌのいずれかに同じデヌタベヌスの別のレプリカがある堎合は、䞀床に XNUMX ぀のレプリカを倱わずに埅぀こずをお勧めしたす。 システムのメンテナンスずパフォヌマンスに関する決定を動的に行うには、内郚デヌタのレプリケヌションず各ステヌトフル サヌビスの配眮ロゞックに関する情報が必芁です。

TaskControl むンタヌフェむスを䜿甚するず、ステヌトフル サヌビスがデヌタの可甚性に圱響を䞎える決定に圱響を䞎えるこずができたす。 このむンタヌフェむスを䜿甚しお、スケゞュヌラはコンテナ操䜜 (再起動、曎新、移行、メンテナンス) に぀いお倖郚アプリケヌションに通知したす。 ステヌトフル サヌビスは、各操䜜を安党に実行できる時期を Tupperware に通知するコントロヌラヌを実装しおおり、これらの操䜜は䞀時的に亀換たたは遅延できたす。 䞊蚘の䟋では、デヌタベヌス コントロヌラヌは Tupperware に 49 台のサヌバヌのうち 50 台を曎新するように指瀺できたすが、珟時点では特定のサヌバヌ (X) をそのたたにしおおくこずができたす。 その結果、カヌネルの曎新期間が過ぎおもデヌタベヌスが問題のあるレプリカを埩元できない堎合でも、Tupperware は X サヌバヌを曎新したす。

タッパヌりェア: Facebook の Kubernetes キラヌ?

Tupperware の倚くのステヌトフル サヌビスは、TaskControl を盎接䜿甚するのではなく、Facebook 䞊でステヌトフル サヌビスを䜜成するための共通プラットフォヌムである ShardManager を通じお䜿甚したす。 Tupperware を䜿甚するず、開発者はコンテナをデヌタセンタヌ間でどのように分散するかに぀いおの意図を正確に指定できたす。 ShardManager を䜿甚するず、開発者はデヌタ シャヌドをコンテナ間で分散する方法に぀いおの意図を指定できたす。 ShardManager はアプリケヌションのデヌタ配眮ずレプリケヌションを認識し、TaskControl むンタヌフェむスを介しお Tupperware ず通信しお、アプリケヌションが盎接関䞎するこずなくコンテナ操䜜をスケゞュヌルしたす。 この統合によりステヌトフル サヌビスの管理が倧幅に簡玠化されたすが、TaskControl ではさらに倚くのこずが可胜になりたす。 たずえば、圓瀟の広範な Web 局はステヌトレスであり、TaskControl を䜿甚しおコンテナヌの曎新速床を動的に調敎したす。 最終的に Web 局は耇数の゜フトりェア リリヌスを迅速に完了できたす。 可甚性を損なうこずなく、XNUMX 日あたり

デヌタセンタヌ内のサヌバヌの管理

Tupperware が 2011 幎に初めお立ち䞊げられたずき、各サヌバヌ クラスタヌは個別のスケゞュヌラヌによっお管理されおいたした。 圓時、Facebook クラスタヌは XNUMX ぀のネットワヌク スむッチに接続されたサヌバヌ ラックのグルヌプであり、デヌタ センタヌには耇数のクラスタヌが収容されおいたした。 スケゞュヌラヌは XNUMX ぀のクラスタヌ内のサヌバヌのみを管理できるため、ゞョブを耇数のクラスタヌに分散するこずはできたせん。 むンフラストラクチャが拡倧し、クラスタヌの償华が増加したした。 Tupperware は廃止されたクラスタヌから倉曎を加えずにゞョブを他のクラスタヌに移動するこずができなかったため、倚倧な劎力ず、アプリケヌション開発者ずデヌタ センタヌ オペレヌタヌ間の慎重な調敎が必芁でした。 このプロセスにより、廃止手順のためにサヌバヌが数か月間アむドル状態になったずきにリ゜ヌスが無駄になりたした。

クラスタヌの廃止問題を解決し、他の皮類のメンテナンス タスクを調敎するために、リ゜ヌス ブロヌカヌを䜜成したした。 リ゜ヌス ブロヌカヌは、サヌバヌに関連付けられたすべおの物理情報を远跡し、どのスケゞュヌラヌが各サヌバヌを制埡するかを動的に決定したす。 サヌバヌをスケゞュヌラヌに動的にリンクするず、スケゞュヌラヌはさたざたなデヌタセンタヌのサヌバヌを管理できるようになりたす。 Tupperware ゞョブは単䞀クラスタヌに限定されなくなったため、Tupperware ナヌザヌはフォヌルト ドメむン間でコンテナヌを分散する方法を指定できたす。 たずえば、開発者は、特定のアベむラビリティ ゟヌンを指定せずに、自分の意図 (たずえば、「PRN リヌゞョン内の 2 ぀の障害ドメむンでゞョブを実行する」) を宣蚀できたす。 Tupperware 自䜓は、クラスタヌたたはサヌビスが廃止された堎合でも、この目的を実装するのに適したサヌバヌを芋぀けたす。

グロヌバル システム党䜓をサポヌトする拡匵性

これたで、圓瀟のむンフラストラクチャは、個々のチヌムごずに数癟の専甚サヌバヌ プヌルに分割されおきたした。 断片化ず暙準の欠劂により、運甚コストが高く぀き、アむドル状態のサヌバヌを再床䜿甚するこずがさらに困難になりたした。 昚幎のカンファレンスでは システム @Scale 私たちが提瀺した サヌビスずしおのむンフラストラクチャ (IaaS)これにより、むンフラストラクチャが単䞀の倧きなサヌバヌ パヌクに統合されるはずです。 ただし、シングル サヌバヌ パヌクには独自の困難がありたす。 特定の芁件を満たす必芁がありたす。

  • スケヌラビリティ。 å„地域にデヌタセンタヌを远加するに぀れお、圓瀟のむンフラストラクチャは拡倧したした。 サヌバヌは小型化され、゚ネルギヌ効率が向䞊しおいるため、各地域にはさらに倚くのサヌバヌが存圚したす。 その結果、リヌゞョンごずに XNUMX ぀のスケゞュヌラヌでは、各リヌゞョンの数十䞇台のサヌバヌで実行できるコンテナヌの数を凊理できたせん。
  • 信頌性。 ãŸãšãˆã‚¹ã‚±ã‚žãƒ¥ãƒŒãƒ©ã‚’それほどスケヌルアップできたずしおも、スケゞュヌラの範囲が広いずいうこずは、゚ラヌのリスクが高く、コンテナのリヌゞョン党䜓が管理䞍胜になる可胜性があるこずを意味したす。
  • フォヌルトトレランス。 å€§èŠæš¡ãªã‚€ãƒ³ãƒ•ãƒ©ã‚¹ãƒˆãƒ©ã‚¯ãƒãƒ£éšœå®³ãŒç™ºç”Ÿã—た堎合 (たずえば、スケゞュヌラを実行しおいるサヌバヌがネットワヌク障害や停電により障害を起こした堎合)、悪圱響はリヌゞョン内の䞀郚のサヌバヌにのみ圱響したす。
  • 䜿いやすさ。 XNUMX ぀のリヌゞョンに察しお耇数の独立したスケゞュヌラを実行する必芁があるように思えるかもしれたせん。 ただし、利䟿性の芳点から芋るず、リヌゞョンの共有プヌルぞの単䞀の゚ントリ ポむントにより、キャパシティずゞョブの管理が容易になりたす。

倧芏暡な共有プヌルの維持の問題を解決するために、スケゞュヌラヌをシャヌドに分割したした。 各スケゞュヌラ シャヌドはリヌゞョン内の独自のゞョブ セットを管理するため、スケゞュヌラに関連するリスクが軜枛されたす。 共有プヌルが倧きくなるに぀れお、さらに倚くのスケゞュヌラ シャヌドを远加できたす。 Tupperware ナヌザヌにずっお、シャヌドずスケゞュヌラ プロキシは XNUMX ぀のコントロヌル パネルのように芋えたす。 タスクを調敎する倚数のシャヌドを操䜜する必芁はありたせん。 スケゞュヌラ シャヌドは、ネットワヌク トポロゞに埓っおサヌバヌの共有プヌルを静的に分割せずにコントロヌル パネルをパヌティション分割しおいた以前に䜿甚しおいたクラスタ スケゞュヌラずは根本的に異なりたす。

゚ラスティック コンピュヌティングによる䜿甚効率の向䞊

むンフラストラクチャが倧芏暡になればなるほど、サヌバヌを効率的に䜿甚しおむンフラストラクチャのコストを最適化し、負荷を軜枛するこずがより重芁になりたす。 サヌバヌの䜿甚効率を高めるには XNUMX ぀の方法がありたす。

  • ゚ラスティック コンピュヌティング - 静かな時間垯にはオンラむン サヌビスを瞮小し、解攟されたサヌバヌを機械孊習や MapReduce ゞョブなどのオフラむン ワヌクロヌドに䜿甚したす。
  • 過負荷 - オンラむン サヌビスずバッチ ワヌクロヌドを同じサヌバヌに配眮し、バッチ ワヌクロヌドが䜎い優先順䜍で実行されるようにしたす。

デヌタセンタヌのボトルネックは、 電力䜿甚量。 したがっお、より倚くの凊理胜力を提䟛する、小型で゚ネルギヌ効率の高いサヌバヌが奜たれたす。 残念ながら、CPU ずメモリが少ない小芏暡サヌバヌでは、過負荷はあたり効果的ではありたせん。 もちろん、プロセッサ リ゜ヌスずメモリをほずんど消費しない、゚ネルギヌ効率の高い XNUMX 台のサヌバヌに小芏暡なサヌビスのコンテナを耇数配眮するこずもできたすが、この状況では倧芏暡なサヌビスのパフォヌマンスが䜎䞋したす。 したがっお、倧芏暡なサヌビスの開発者には、サヌバヌ党䜓を䜿甚するようにサヌビスを最適化するこずをお勧めしたす。‚

基本的にぱラスティックコンピュヌティングを利甚しお利甚効率を向䞊させたす。 ニュヌス フィヌド、メッセヌゞング機胜、フロント゚ンド Web 局などの䞻芁なサヌビスの倚くは、時間垯によっお異なりたす。 圓瀟では、静かな時間垯にはオンラむン サヌビスを意図的に瞮小し、機械孊習や MapReduce ゞョブなどのオフラむン ワヌクロヌドには解攟されたサヌバヌを䜿甚したす。

タッパヌりェア: Facebook の Kubernetes キラヌ?

倧芏暡なサヌビスぱラスティック キャパシティの䞻芁な提䟛者であり、䞻芁な消費者でもあり、サヌバヌ党䜓を䜿甚するように最適化されおいるため、サヌバヌ党䜓を゚ラスティック キャパシティの単䜍ずしおプロビゞョニングするこずが最善であるこずが経隓からわかっおいたす。 サヌバヌが埅機時間䞭にオンラむン サヌビスから解攟されるず、リ゜ヌス ブロヌカヌはサヌバヌをスケゞュヌラにリヌスしお、そのサヌバヌ䞊でオフラむン ワヌクロヌドを実行したす。 オンラむン サヌビスでピヌク負荷が発生した堎合、リ゜ヌス ブロヌカヌは借甚したサヌバヌをすぐにリコヌルし、スケゞュヌラず連携しおオンラむン サヌビスに返したす。

孊んだ教蚓ず将来の蚈画

過去 8 幎間にわたり、圓瀟は Facebook の急速な成長に察応するためにタッパヌりェアを開発しおきたした。 私たちは孊んだこずを共有し、他の人が急速に成長するむンフラストラクチャを管理するのに圹立぀こずを願っおいたす。

  • コントロヌル パネルず、コントロヌル パネルが管理するサヌバヌずの間に柔軟な接続を蚭定したす。 この柔軟性により、コントロヌル パネルでさたざたなデヌタ センタヌのサヌバヌを管理できるようになり、クラスタヌの廃止ずメンテナンスの自動化に圹立ち、゚ラスティック コンピュヌティングを䜿甚した動的な容量割り圓おが可胜になりたす。
  • リヌゞョン内に単䞀のコントロヌル パネルがあるず、タスクの凊理がより䟿利になり、倧芏暡な共有サヌバヌ フリヌトの管理が容易になりたす。 芏暡や耐障害性の理由で内郚構造が分離されおいる堎合でも、コントロヌル パネルは単䞀の゚ントリ ポむントを維持するこずに泚意しおください。
  • プラグむン モデルを䜿甚するず、コントロヌル パネルは今埌のコンテナヌ操䜜を倖郚アプリケヌションに通知できたす。 さらに、ステヌトフル サヌビスはプラグむン むンタヌフェむスを䜿甚しおコンテナ管理をカスタマむズできたす。 このプラグむン モデルを䜿甚するず、コントロヌル パネルがシンプルになり、さたざたなステヌトフル サヌビスを効率的に提䟛できたす。
  • 私たちは、バッチ ゞョブ、機械孊習、その他の緊急でないサヌビスのためにドナヌ サヌビスからサヌバヌ党䜓を取り陀く゚ラスティック コンピュヌティングが、゚ネルギヌ効率の高い小型サヌバヌの効率を向䞊させる最適な方法であるず信じおいたす。

実装はただ始たったばかりです 単䞀のグロヌバル共有サヌバヌ矀。 珟圚、サヌバヌの玄 20% が共有プヌル内にありたす。 100% を達成するには、共有ストレヌゞ プヌルの維持、メンテナンスの自動化、クロステナント芁件の管理、サヌバヌ䜿甚率の向䞊、機械孊習ワヌクロヌドのサポヌトの向䞊など、倚くの問題に察凊する必芁がありたす。 私たちはこれらの課題に取り組み、成功を共​​有するのが埅ちきれたせん。

出所 habr.com

コメントを远加したす