Meituan Cluster スケジューリング システムのクラウド ネイティブ実践

Meituan Cluster スケジューリング システムのクラウド ネイティブ実践

著者 |タン・リン

この記事では、大規模クラスター管理の難しさを解決し、優れた合理的なクラスター スケジューリング システムを設計する Meituan の実践を紹介します。また、Kubernetes に代表されるクラウド ネイティブ テクノロジーを実装する際に Meituan が特に懸念する問題、課題、および対応するプロモーション戦略についても説明します。同時に、この記事では、Meituan のビジネス需要シナリオに対するいくつかの特別なサポートも紹介しています。この記事がクラウド ネイティブ分野に興味のある学生の役に立ち、刺激を与えることができれば幸いです。

  • 導入
  • クラスタスケジューリングシステムの概要
  • 大規模クラスターの管理の課題
  • 大規模クラスターの運用における課題
  • クラスタスケジューリングシステムを設計する際のトレードオフ
  • 美団のクラスターディスパッチシステムの進化
  • 複数のクラスタの統合スケジューリング: データセンターのリソース利用率の向上
  • スケジューリングエンジンサービス:PaaSサービスのクラウドネイティブ実装を実現
  • 将来の展望: クラウドネイティブ オペレーティング システムの構築

導入

クラスター スケジューリング システムは、エンタープライズ データ センターで重要な役割を果たします。クラスターのサイズとアプリケーションの数が急増するにつれて、開発者のビジネス上の問題の複雑さが大幅に増加しました。大規模クラスター管理の問題を解決し、安定性を確保し、コストを削減し、効率を向上させる優れた合理的なクラスター スケジューリング システムを設計するにはどうすればよいでしょうか。この記事では、これらの質問に一つずつ答えていきます。 | ※この記事は「新人プログラマー003」のクラウドネイティブ時代の開発者コラムに初掲載されました。

クラスタスケジューリングシステムの概要

クラスター スケジューリング システムは、データ センター リソース スケジューリング システムとも呼ばれ、データ センターのリソース管理とタスク スケジューリングの問題を解決するためによく使用されます。データセンターのリソースを有効活用し、リソースの使用率を向上させるとともに、ビジネス関係者に自動化された運用・保守機能を提供して、サービスの運用・保守管理コストを削減することを目標としています。業界でよく知られているクラスター スケジューリング システムには、オープン ソースの OpenStack、YARN、Mesos、Kubernetes のほか、Google の Borg、Microsoft の Apollo、Baidu の Matrix、Alibaba の Fuxi、ASI などの有名なインターネット企業のシステムもあります。さまざまなインターネット企業の中核となる IaaS インフラストラクチャとして、クラスター スケジューリング システムは過去 10 年間で複数のアーキテクチャ上の進化を遂げてきました。ビジネスがモノリシックアーキテクチャから SOA (サービス指向アーキテクチャ) やマイクロサービスの開発へと進化するにつれ、基盤となる IaaS 機能も物理マシンのベアメタル時代からコンテナ時代へと徐々に移行してきました。私たちが対処しなければならない中核的な問題は進化の過程で変化していませんが、クラスターのサイズとアプリケーションの数の急速な拡大により、問題の複雑さも指数関数的に増加しています。この記事では、大規模クラスタ管理の課題とクラスタ スケジューリング システムの設計思想について説明します。 Meituan のクラスター スケジューリング システムの実装を例に、複数のクラスターの統合スケジューリング サービスの作成、リソース使用率の継続的な改善、PaaS コンポーネントを強化する Kubernetes エンジン サービスの提供、ビジネス向けのより優れたコンピューティング サービス エクスペリエンスの提供など、一連のクラウド ネイティブ プラクティスについて説明します。

大規模クラスターの管理の課題

ご存知のとおり、ビジネスの急速な成長により、サーバーの規模とデータセンターの数が急増しました。開発者にとって、大規模クラスタ スケジューリング システムのビジネス シナリオでは、解決しなければならない問題が 2 つあります。

  1. 特にクロスデータセンターのシナリオにおいて、データセンターの大規模クラスターの展開とスケジューリングを管理する方法、リソースの弾力性とスケジューリング機能を実現する方法、アプリケーションサービスの品質を確保しながらリソースの使用率を最大化する方法、およびデータセンターのコストを完全に削減する方法。
  2. 基盤となるインフラストラクチャを変革し、ビジネス関係者向けのクラウドネイティブなオペレーティングシステムを作成し、コンピューティングサービスのエクスペリエンスを向上させ、自動化された災害復旧対応やアプリケーションの展開アップグレードなどを実現し、基盤となるリソース管理に関するビジネス関係者の精神的負担を軽減し、ビジネス関係者がビジネスそのものにさらに集中できるようにする方法。

大規模クラスターの運用における課題

上記 2 つの問題を実際の運用環境で解決するためには、さらに次の 4 つの大規模クラスターの運用および管理の課題に分類できます。

  1. ユーザーの多様なニーズをいかに解決し、迅速に対応するか。ビジネス スケジューリングの要件とシナリオは豊富で動的です。クラスタ スケジューリング システムのようなプラットフォーム サービスとしては、機能を迅速に提供し、ビジネス ニーズにタイムリーに対応できることが求められます。一方で、ビジネスの個別化されたニーズを、プラットフォーム上に実装して長期間にわたって反復できる一般的な機能に抽象化できるほど汎用性の高いプラットフォームを構築することも必要です。これは、プラットフォーム サービス チームの技術進化計画にとって大きなテストです。注意しないと、チームはビジネス機能の開発に終わりのないまま陥ってしまうからです。ビジネスニーズを満たしますが、チーム作業の低レベルの繰り返しが発生します。
  2. アプリケーション サービスの品質を確保しながら、オンライン アプリケーション データ センターのリソース使用率を向上させる方法。リソースのスケジューリングは、業界では常に認識されている問題です。クラウド コンピューティング市場の急速な発展に伴い、クラウド コンピューティング ベンダーはデータ センターへの投資を増やし続けています。データセンターのリソース使用率が非常に低いという事実によって、問題はさらに悪化します。ガートナーの調査によると、世界のデータセンター サーバーの CPU 使用率はわずか 6% ~ 12% です。 Amazon の Elastic Compute Cloud (EC2) プラットフォームでさえ、リソース使用率はわずか 7% ~ 17% であり、リソースの浪費がいかに深刻であるかがわかります。その理由は、オンライン アプリケーションはリソース使用率に非常に敏感であり、業界では重要なアプリケーションのサービス品質 (QoS) を確保するために追加のリソースを予約する必要があるからですクラスタ スケジューリング システムでは、複数のアプリケーションが混在して実行されている場合にアプリケーション間の干渉を排除し、異なるアプリケーション間のリソースの分離を実現する必要があります。
  3. アプリケーション、特にステートフル アプリケーションのインスタンスの例外の自動処理を提供し、データ センター間の違いを遮断し、基盤となるレイヤーに対するユーザーの認識を軽減する方法。サービス アプリケーションの規模が拡大し続け、クラウド コンピューティング市場が成熟するにつれて、分散アプリケーションは異なる地域のデータ センターに、または異なるクラウド環境に展開されることが多くなり、マルチクラウドまたはハイブリッド クラウドの展開が実現します。クラスター スケジューリング システムは、ビジネス パーティに統一されたインフラストラクチャを提供し、ハイブリッド マルチクラウド アーキテクチャを実装し、基盤となる異種環境を保護する必要があります。同時に、アプリケーションの運用と保守管理の複雑さが軽減され、アプリケーションの自動化の度合いが向上し、ビジネスに優れた運用と保守のエクスペリエンスが提供されます。
  4. 単一のクラスターが大きすぎるか、クラスターの数が多すぎるために発生するクラスター管理に関連するパフォーマンスと安定性のリスクをどのように解決しますか?クラスターのライフサイクル管理の複雑さは、クラスターのサイズと数に応じて増大します。 Meituan を例にとると、当社が採用した 2 サイトのマルチセンター マルチクラスター ソリューションは、クラスターの規模が大きすぎることによる潜在的な危険性をある程度回避し、ビジネスの孤立や地域的な遅延などの問題を解決しました。エッジ クラスター シナリオの出現と、データベースなどのクラウドベースの PaaS コンポーネントの需要により、小規模クラスターの数は明らかに増加傾向にあると予測されます。これにより、クラスター管理の複雑さ、監視構成コスト、運用および保守コストが大幅に増加します。現時点では、クラスタ スケジューリング システムは、より効果的な動作仕様を提供し、運用の安全性、アラームの自己修復、変更効率を確保する必要があります。

クラスタスケジューリングシステムを設計する際のトレードオフ

上記の課題に対処するには、優れたクラスター スケジューラが重要な役割を果たします。しかし、現実には完璧なシステムは存在しません。したがって、クラスター スケジューリング システムを設計するときは、実際のシナリオに基づいていくつかの矛盾の間でトレードオフを行う必要があります。

  1. クラスター スケジューリング システムのシステム スループットとスケジューリング品質。システム スループットは、システムの品質を評価するための重要な基準です。ただし、オンライン サービスのクラスター スケジューリング システムでは、スケジューリングの品質がより重要になります。各スケジュール結果の影響は長期的(数日、数週間、または数か月)であるため、異常でない状況では調整は行われません。したがって、スケジューリング結果が間違っていると、サービス遅延の増加に直接つながります。スケジューリング品質が高いほど、考慮する必要があるコンピューティング制約が多くなり、スケジューリング パフォーマンスが悪ければ、システム スループットは低くなります。
  2. クラスター スケジューリング システムのアーキテクチャの複雑さとスケーラビリティ。システムが上位レベルの PaaS ユーザーに公開する機能や構成が増えるほど、またユーザー エクスペリエンスを向上させるためにサポートされる機能が増えるほど (アプリケーション リソースのプリエンプションとリカバリ、アプリケーション インスタンスの自己修復のサポートなど)、システムは複雑になり、サブシステム間で競合が発生する可能性が高くなります。
  3. クラスター スケジューリング システムの信頼性と単一クラスターのスケール。単一のクラスターのサイズが大きいほど、スケジュール可能な範囲は広くなりますが、爆発半径が大きくなり、障害の影響が大きくなるため、クラスターの信頼性に対する課題も大きくなります。単一のクラスタが小さい場合、スケジューリングの同時実行性は向上しますが、スケジュール可能な範囲が狭くなり、スケジューリングが失敗する確率が高くなり、クラスタ管理の複雑さが増します。

現在、業界におけるクラスタ スケジューリング システムは、アーキテクチャによって、単一型スケジューラ、2 レベル スケジューラ、共有状態スケジューラ、分散スケジューラ、ハイブリッド スケジューラの 5 つの異なるアーキテクチャに分類できます (下の図 1 を参照)。各アーキテクチャは、各シナリオのニーズに基づいて異なる選択を行い、絶対的に良い、または悪いというものはありません。

図 1 クラスタ スケジューリング システム アーキテクチャの分類 (Malte Schwarzkopf - クラスタ スケジューラ アーキテクチャの進化より)

  • モノリシック スケジューラは、クラスターのグローバル情報と組み合わせた複雑なスケジューリング アルゴリズムを使用して高品質の配置ポイントを計算しますが、レイテンシは高くなります。 Google の Borg システムやオープンソースの Kubernetes システムなど。
  • 2 レベル スケジューラは、リソース スケジューリングとジョブ スケジューリングを分離することで、単一スケジューラの制限を解決します。 2 レベル スケジューラでは、異なるジョブ間でクラスター リソースを共有する機能を維持しながら、特定のアプリケーションに基づいて異なるジョブ スケジューリング ロジックを実行できますが、優先度の高いアプリケーションのプリエンプションを実現することはできません。代表的なシステムはApache MesosとHadoop YARNです。
  • 共有状態スケジューラは、2 レベル スケジューラの制限を半分散方式で解決します。共有状態の各スケジューラにはクラスター状態のコピーがあり、スケジューラはクラスター状態のコピーを個別に更新します。ローカル状態のコピーが変更されると、クラスター全体の状態情報が更新されますが、リソースの競合が継続するとスケジューラのパフォーマンスが低下します。代表的なシステムは、Google の Omega と Microsoft の Apollo です。
  • 分散スケジューラは、比較的単純なスケジューリング アルゴリズムを使用して、大規模な高スループット、低レイテンシの並列タスク配置を実現します。しかし、スケジューリング アルゴリズムが単純で、リソースの使用に関する全体的な視点が欠如しているため、高品質のジョブ配置を実現することは困難です。代表的なシステムとしては、カリフォルニア大学の Sparrow などがあります。
  • ハイブリッド スケジューラは、長時間実行されるタスクには複雑なアルゴリズムを使用し、短時間実行されるタスクには分散レイアウトを利用して、集中型コンポーネントと分散型コンポーネント全体にワークロードを分散します。 Microsoft Mercury はこのアプローチを採用しました。

したがって、スケジューリング システムの品質を評価する方法は、主に実際のスケジューリング シナリオによって異なります。業界で最も広く使用されているシステムである YARN と Kubernetes を例に挙げると、どちらのシステムも一般的なリソース スケジューラですが、実際には YARN は短いタスクを処理するオフライン バッチに重点を置いているのに対し、Kubernetes はオンラインで長時間実行されるサービスに重点を置いています。アーキテクチャ設計と機能の違い ( Kubernetes はモノリシック スケジューラですが、YARN は 2 レベル スケジューラです) に加えて、両者には設計哲学と視点も異なります。 YARN はよりタスクに重点を置き、リソースの再利用に注意を払い、リモート データの複数のコピーを回避します。その目標は、より低コストかつより高速にタスクを実行することです。 Kubernetes は、サービス品質の確保を目的として、サービス ステータス、ピーク シフト、サービス プロファイリング、リソースの分離に重点を置いています。

美団のクラスターディスパッチシステムの進化

コンテナ化の実装プロセスにおいて、Meituan はビジネス シナリオの要件に基づいて、クラスター スケジューリング システムのコア エンジンを OpenStack から Kubernetes に変換し、2019 年末までにオンライン ビジネスのコンテナ化カバレッジを 98% 超えるという目標を達成しました。ただし、リソース使用率が低い、運用および保守コストが高いなどの問題がまだ残っています。

  • クラスターの全体的なリソース使用率は高くありません。たとえば、CPU リソースの平均使用率は依然として業界平均レベルですが、他の一流インターネット企業と比較すると大きな差があります。
  • ステートフル サービスのコンテナ化率は、特にコンテナを使用しない MySQL や Elasticsearch などの製品では十分に高くありません。業務の運用・保守コストやリソースコストには、最適化の余地がまだ多くあります。
  • ビジネスニーズを考慮すると、VM 製品は今後も長く存在し続けるでしょう。 VM スケジューリングとコンテナ スケジューリングは 2 つの環境セットであり、チームの仮想化製品の運用および保守コストが高くなります。

そこで、クラスタースケジューリングシステムのクラウドネイティブ化を開始することにしました。マルチクラスター管理と自動化された運用および保守機能を備え、スケジューリング戦略の推奨とセルフサービス構成をサポートし、クラウドネイティブの基盤拡張機能を提供し、アプリケーション サービスの品質を確保しながらリソース使用率を向上させる、大規模で高可用性のスケジューリング システムを構築します。中核となる業務は、安定性の維持、コストの削減、効率性の向上という3つの主要な方向性を軸にディスパッチシステムを構築することです。

  • 安定性の確保:スケジューリング システムの堅牢性と観測可能性を向上します。システムモジュール間の結合を減らし、複雑さを軽減します。マルチクラスタ管理プラットフォームの自動運用・保守機能を向上させる。コアシステムコンポーネントのパフォーマンスを最適化します。大規模クラスターの可用性を確保します。
  • コストの削減:スケジューリング モデルを徹底的に最適化し、クラスター スケジューリングと単一マシン スケジューリング間のリンクを開きます。静的リソース スケジューリングから動的リソース スケジューリングに移行し、オフライン ビジネス コンテナーを導入して、自由競争と強力な制御の組み合わせを形成しました。これにより、リソースの使用率が向上し、IT コストが削減されると同時に、高品質なビジネス アプリケーション サービスの品質が確保されました。
  • 効率の向上:ユーザーが独自のスケジュール戦略を調整して個別のビジネス ニーズに対応できるようにサポートし、クラウド ネイティブ分野を積極的に採用し、オーケストレーション、スケジュール設定、クラスター間、高可用性などのコア機能を備えた PaaS コンポーネントを提供して、運用と保守の効率を向上させます。

図2 Meituanクラスタスケジューリングシステムアーキテクチャ

最後に、Meituan クラスター スケジューリング システム アーキテクチャは、分野に応じて、スケジューリング プラットフォーム レイヤー、スケジューリング ストラテジー レイヤー、およびスケジューリング エンジン レイヤーの 3 つのレイヤーに分かれています (上記の図 2 を参照)。

  • プラットフォーム層は、ビジネスアクセス、Meituan のインフラストラクチャの接続、ネイティブインターフェイスとロジックのカプセル化、コンテナ管理インターフェイス (拡張、更新、再起動、縮小) などの機能の提供を担当します。
  • ポリシー レイヤーは、複数のクラスターに統合されたスケジューリング機能を提供し、スケジューリング アルゴリズムとポリシーを継続的に最適化し、ビジネスのサービス レベルや機密リソースなどの情報に基づいたサービス分類を通じて CPU 使用率と割り当て率を向上させます。
  • エンジン層は、複数の PaaS コンポーネントのクラウドネイティブ クラスターの安定性を確保するための Kubernetes サービスを提供し、共通機能をオーケストレーション エンジンにシンクして、クラウドネイティブ ビジネス実装のアクセス コストを削減します。

運用の洗練と製品機能のブラッシュアップにより、Meituanの約100万のコンテナ/仮想マシンインスタンスの管理を一元化し、一方でリソース利用率を業界平均から一流レベルに向上させ、PaaSコンポーネントのコンテナ化とクラウドネイティブ実装もサポートしています。

複数のクラスタの統合スケジューリング: データセンターのリソース利用率の向上

クラスター スケジューリング システムの品質を評価する場合、リソース使用率は最も重要な指標の 1 つです。そのため、2019年にコンテナ化は完了しましたが、コンテナ化は目的ではなく、あくまで手段に過ぎません。私たちの目標は、VM テクノロジー スタックからコンテナ テクノロジー スタックに切り替えることで、ユーザーのコンピューティング コストを全面的に削減するなど、ユーザーにさらなるメリットをもたらすことです。リソース使用率の向上は、クラスター内の個々のホット ホストによって制限されます。容量が拡張されると、ビジネス コンテナーがホット ホストに拡張される可能性があり、TP95 時間などのビジネス パフォーマンス指標が変動します。その結果、業界の他の企業と同様に、サービス品質を確保するにはリソースの冗長性を高めるしかありません。その理由は、Kubernetes スケジューリング エンジンの割り当て方法が、単純に Request/Limit Quota (Kubernetes がコンテナに対してユーザーが適用するリソース クォータとして、コンテナに対するリクエスト値 Request と制約値 Limit を設定する) を考慮しており、静的なリソース割り当てとなっているためです。その結果、異なるホストに同じ量のリソースが割り当てられているにもかかわらず、ホストのリソース使用率はサービスの違いにより大きく異なります。学界と産業界では、リソース利用効率とアプリケーション サービス品質の矛盾を解決するために、一般的に 2 つの方法が使用されています。最初の方法は、効率的なタスク スケジューラを使用してグローバルな観点から解決することです。 2 番目の方法は、単一マシンのリソース管理を通じてアプリケーション間のリソース分離を強化することです。どちらの方法を使用する場合でも、クラスターの状態を完全に把握する必要があるため、次の 3 つのことを行いました。

  • クラスタ状態、ホスト状態、サービス状態間の関連性を体系的に確立し、スケジューリングシミュレーションプラットフォームと組み合わせることで、ピーク使用率と平均使用率を総合的に考慮し、ホストの履歴負荷とビジネスのリアルタイム負荷に基づいた予測とスケジューリングを実現します。
  • 自社開発の動的負荷調整システムとクラスタ間再スケジューリングシステムにより、クラスタスケジューリングと単一マシンスケジューリングのリンクが連携され、業務分類に応じて異なるリソースプールのサービス品質保証戦略が実装されます。
  • 3 回の反復を経て、独自のクラスター連合サービスを実現しました。これにより、リソースの事前占有と状態データの同期の問題が効果的に解決され、クラスター間のスケジューリングの同時実行性が向上し、コンピューティングの分離、クラスター マッピング、負荷分散、およびクラスター間のオーケストレーション制御が実現されました (下の図 3 を参照)。

図3 クラスタフェデレーションV3アーキテクチャ

クラスタ フェデレーション サービスの 3 番目のバージョンは、モジュールに応じてプロキシ レイヤーとワーカー レイヤーに分割され、独立して展開されます。

  • プロキシ層は、クラスターの状態の要因と重みに基づいて、スケジュールに適切なクラスターを選択し、リクエストを分散するために適切なワーカーを選択します。プロキシ モジュールは、サービス登録、リーダー選出、検出に etcd を使用します。リーダー ノードは、スケジュール中にタスクをプリエンプトする責任があり、すべてのノードがクエリ タスクを担当できます。
  • ワーカー層は、クラスターのクエリ要求の一部を処理します。クラスター タスクがブロックされた場合、対応するワーカー インスタンスをすばやく拡張して問題を軽減できます。単一のクラスターが大きい場合、複数の Worker インスタンスに対応します。プロキシは、スケジューリング要求を複数のワーカー インスタンスに分散して処理するため、スケジューリングの同時実行性が向上し、各ワーカーの負荷が軽減されます。

最終的には、複数のクラスターの統一されたスケジューリングを通じて、静的リソース スケジューリング モデルから動的リソース スケジューリング モデルへの移行を実現し、ホットスポット ホストの割合を減らし、リソースの断片化の割合を減らし、優先度の高いビジネス アプリケーションのサービス品質を確保し、オンライン ビジネス クラスターの平均サーバー CPU 使用率を 10 パーセント ポイント向上させました。クラスター リソースの平均使用率は、次のように計算されます: Sum(nodeA.cpu.現在使用されているコア数 + nodeB.cpu.現在使用されているコア数 + xxx) / Sum(nodeA.cpu.合計コア数 + nodeB.cpu.合計コア数 + xxx)。計算は 1 分ごとに 1 ポイントずつ行われ、その日のすべての値が平均化されます。

スケジューリングエンジンサービス:PaaSサービスのクラウドネイティブ実装を実現

クラスター スケジューリング システムは、リソース スケジューリングの問題を解決するだけでなく、コンピューティング リソースのサービス使用の問題も解決します。書籍「Google のソフトウェア エンジニアリング」で述べられているように、Compute as a Service の主要コンポーネントの 1 つであるクラスタ スケジューリング システムは、リソース スケジューリング (物理マシンの分解から CPU/Mem などのリソース ディメンションまで) とリソース競合 ( 「ノイジー ネイバー」の解決) だけでなく、アプリケーション管理 (自動インスタンス展開、環境監視、例外処理、サービス インスタンス数の確保、ビジネスに必要なリソース量の決定、さまざまな種類のサービスなど) も解決する必要があります。さらに、アプリケーション管理は、ビジネス開発と運用の効率、サービスの災害復旧効果に直接影響するため、ある程度、リソースのスケジュール設定よりも重要です。結局のところ、インターネットの人件費は機械費よりも高いのです。複雑なステートフル アプリケーションのコンテナ化は、業界では常に難しい問題となっています。これは、さまざまなシナリオの分散システムでは通常、独自のステート マシンが維持されるためです。アプリケーション システムを拡張、縮小、またはアップグレードする場合、既存のインスタンス サービスの可用性とそれらの間の接続性をどのように確保するかは、ステートレス アプリケーションよりもはるかに複雑で困難な問題です。すべてのステートレス サービスをコンテナ化しましたが、優れたクラスター スケジューリング システムの価値はまだ十分には実現されていません。コンピューティング リソースを適切に管理するには、サービスの状態を管理し、リソースとサービスを分離し、サービスの回復力を向上させる必要がありますが、これは Kubernetes エンジンが優れている点でもあります。 Meituan の最適化およびカスタマイズされた Kubernetes バージョンに基づいて、Meituan Kubernetes Engine Service MKE を作成しました。

  • クラスターの運用および保守機能を強化し、クラスターの自己修復、アラーム システム、イベント ログ分析などのクラスターの自動運用および保守機能を向上させて、クラスターの可観測性を継続的に向上させます。
  • 当社は主要なビジネス ベンチマークを設定し、いくつかの重要な PaaS コンポーネントと緊密に連携し、Sidecar アップグレード管理、Operator グレースケール反復、アラーム分離などのユーザーの問題点を迅速に最適化して、ユーザーの要求に応えました。
  • 当社は、製品エクスペリエンスの向上と Kubernetes エンジンの最適化を継続して行っています。ユーザーがカスタム オペレーターを使用できるようにサポートするだけでなく、一般的なスケジューリングおよびオーケストレーション フレームワーク (図 4 を参照) も提供し、ユーザーが低コストで MKE にアクセスし、技術的なメリットを得られるよう支援します。

図4 Meituan Kubernetes Engineのサービススケジューリングとオーケストレーションフレームワーク

クラウド ネイティブの実装を推進する中で、広く関心を集めている疑問は、「Kubernetes クラウド ネイティブ アプローチに基づいてステートフル アプリケーションを管理することと、管理プラットフォームを独自に構築することの違いは何か?」ということです。この問題については、問題の根本的な原因である保守性を考慮する必要があります。

  • Kubernetes をベースとするということは、システムが閉ループであることを意味し、2 つのシステム間で頻繁に発生するデータの不整合を心配する必要はありません。
  • 例外応答を数ミリ秒単位で実現できるため、システムの RTO (Recovery Time Objective、主に許容可能な最長時間のサービス停止を指し、災害発生から業務システムによるサービス機能の復旧までの最短時間) が短縮されます。
  • システムの運用・保守の複雑さも軽減され、災害復旧の自動化も実現しました。サービス自体に加えて、サービスが依存する構成と状態データも一緒に復元できます。
  • 従来のさまざまな PaaS コンポーネントの「煙突型」管理プラットフォームと比較して、一般的な機能をエンジン サービスに集約して、開発および保守コストを削減できます。エンジン サービスを利用することで、基盤となる異機種環境を保護し、データ センターやマルチクラウド環境にわたるサービス管理を実現できます。

将来の展望: クラウドネイティブ オペレーティング システムの構築

クラウドネイティブ時代のクラスタ管理は、これまでのハードウェアやリソースなどを管理する機能から、アプリケーション中心のクラウドネイティブオペレーティングシステムへと進化していくと考えています。この目標を達成するために、Meituan のクラスターディスパッチシステムは次の側面に取り組む必要があります。

  • アプリケーションリンク配信管理。ビジネスの規模とリンクの複雑さが増すにつれ、ビジネスが依存する PaaS コンポーネントと基盤インフラストラクチャの運用と保守の複雑さは、一般の認識をはるかに超えるものとなり、プロジェクトを引き継いだばかりの新人にとってはさらに困難になります。したがって、宣言的な構成を通じて企業がサービスを提供し、自己運用と保守を実現できるようにサポートし、企業に優れた運用と保守のエクスペリエンスを提供し、アプリケーションの可用性と観測性を向上させ、基盤となるリソース管理に対する企業の負担を軽減する必要があります。
  • エッジ コンピューティング ソリューション。 Meituan のビジネス シナリオが拡大し続けるにつれて、エッジ コンピューティング ノードの需要は予想よりもはるかに速いペースで増加しています。業界のベストプラクティスを参考にして、Meituan での実装に適したエッジソリューションを開発し、必要なサービスにエッジコンピューティングノード管理機能をできるだけ早く提供し、クラウドエッジエンドの連携を実現します。
  • オフライン コロケーション機能を構築します。オンラインビジネスクラスターのリソース利用率の向上には上限があります。 Googleが論文「Borg: the Next Generation」で公開した2019年のデータセンタークラスタデータによると、オフラインタスクを除くと、オンラインタスクのリソース使用率はわずか30%程度に過ぎない。これは、さらなる改善にはリスクがあり、投入産出比率が高くないことも示しています。その後、Meituan のクラスター スケジューリング システムは、オフライン コロケーションの検討を継続します。ただし、Meituan のオフライン データ センターは比較的独立しているため、実装パスは業界の一般的なソリューションとは異なります。まず、オンライン サービスとほぼリアルタイムのタスクの共存から始め、基盤となる機能の構築を完了し、次にオンライン タスクとオフライン タスクの共存を検討します。

要約する

Meituan のクラスター スケジューリング システムを設計する際、全体として適切性の原則に従いました。基本的なビジネスニーズを満たし、システムの安定性を確保した後、アーキテクチャを段階的に改善し、パフォーマンスを強化し、機能を充実させました。したがって、私たちは次のことを選択しました。

  • システム スループットとスケジューリング品質の観点から、システム スループットに対するビジネスの需要を満たすことを優先します。一度のスケジュールの品質を過度に追求するのではなく、再スケジュールすることで調整し、改善していきます。
  • アーキテクチャの複雑さとスケーラビリティの観点から、システム モジュール間の結合を減らし、システムの複雑さを軽減し、拡張機能はダウングレード可能であることを選択します。
  • 信頼性と単一クラスターのサイズの間で、システムの信頼性を確保し、爆発半径を縮小するために、複数のクラスターの統一されたスケジュール設定を通じて単一クラスターのサイズを制御することを選択しました。

今後も、同じロジックに基づいて Meituan のクラスター スケジューリング システムを最適化および反復し、アプリケーション中心のクラウド ネイティブ オペレーティング システムへと完全に変革していきます。

著者について

美団基礎研究開発プラットフォーム/基礎技術部の Tan Lin 氏。

<<:  Kubernetes での Nginx Ingress の理解

>>:  クラウド移行が成功した後の企業にとっての6つのメリット

推薦する

Qunar.comの声明: 3億5000万元の融資を受けたという報道は事実ではない

網易科技ニュース、4月15日。本日、「中国商務日報」は、Qunar.comがBaidu、Hillho...

推奨: weservit-512M メモリ KVM/SSD および SSDCACHE/オランダ高速 G ポート VPS

weservit は 2008 年にオランダで設立されました。自社設備をすべて備えた正式に登録された...

クラウドコンピューティングで最も人気のある6つの用語を一度に理解する

クラウド コンピューティングの概念は比較的抽象的かもしれません。一般的に言えば、クラウド コンピュー...

クラウド導入を成功させるためのベストプラクティス 10

ビジネスをクラウドに移行することは良いことですが、企業は慎重に進めなければなりません。組織が複数のワ...

リベート ウェブサイトは、一連のクラッシュを経験しています。開発のボトルネックを打破するには、テクノロジーとポジショニングが必要です。

エコノミック・ボイスによると、リベート・ウェブサイトはCPS電子商取引促進計画に基づくビジネスモデル...

iwstack-簡単な評価

iwstack は、KVM ベースの 384M メモリ、10G ハード ディスク、1T トラフィック...

#11.11# zji: 香港50G高防御サーバー、50%割引、香港アリババネットワーク(独立)サーバーは月額わずか480元

今から11月12日まで、zji(つまり、2011年に設立されたWeixiang Hostingですが...

実践的な共有: 新製品の発売時に無料トラフィックを増やす方法

タオバオを使い始めて5年が経ち、販売者として1年以上になります。徐々に、Taobao でビジネスを行...

ウェブマスターがお金を稼ぐための一般的な方法をいくつか紹介します

インターネットの誕生から、ナビゲーションサイト、検索エンジン、コミュニティ、ポータル、フォーラム、ニ...

Kubernetes ツアー: Kube-Scheduler

概要kube-scheduler とは何ですか? Kubernetes クラスターのコア コンポーネ...

分散キャップ定理と基底理論の簡単な分析!

[[346602]]導入理論計算機科学において、CAP 定理 (ブリューワーの定理とも呼ばれる) ...

これは「興味深い」挑戦です

クラウド ネイティブ開発では、アプリケーションをどこで実行するかではなく、どのように開発するかが重要...

SEOERによるBaiduシェアリングの長所と短所の独占分析

Baidu の製品は常に SEO 担当者から大きな注目を集めています。数か月前、Baidu は Ba...

ウェブサイトフレンドリーリンクの長期的なメカニズムについて話す

ウェブサイトの構築においては、フレンドリーなリンクは当然欠かせません。重要なリンクではありませんが、...