Didi の弾力性のあるクラウド ハイブリッド展開の実装に関する 10,000 語の説明

Didi の弾力性のあるクラウド ハイブリッド展開の実装に関する 10,000 語の説明

コロケーションとは、関連する特性に基づいて異なるビジネス サービスを同じ物理マシンまたは仮想マシンに展開し、主要なビジネス サービスの品質を確保しながらクラスター リソース全体の利用率を向上させ、総コストを削減することを意味します。コロケーションの種類によって、オンラインサービスのコロケーションとオフラインサービスのコロケーションに分けられます。オンライン コロケーションは、パブリック クラスター内のオンライン サービス間のコロケーションと、分離されたクラスター内のオンライン サービスとストレージ サービス間のコロケーションに分けられます。オフライン コロケーションには、主にオンライン サービスとオフライン サービスのコロケーションが含まれます。

コロケーションは業界で一般的なコスト削減方法ですが、多くの技術的な課題を伴います。要約すると、次のようになります。

  • サービスを合理的に分類し、さまざまなレベルのサービス QoS を定義する方法
  • クラスターがより合理的なスケジュールとパッケージングを実行し、リソースの競合の可能性を減らすように導くために、洗練されたビジネスポートレートを実施する方法
  • 高品質なサービスのためのサービス品質を確保するために、CPU、メモリ、IO、LLCキャッ​​シュ、ネットワークなどのリソースを含む単一のマシンに対してカーネルレベルのリソース分離戦略を実装する方法
  • 単一マシンのパフォーマンス干渉を検出し、単一マシンの排除とスケジュールの最適化をガイドする方法

Elastic Cloud Colocation の詳細な紹介

全体的なアーキテクチャ

Elastic Cloud ハイブリッドランディングプロセス

フェーズ 1: パブリック クラスターのオンライン コロケーション

時は2017年の初めに遡り、クラウドコンピューティング、コンテナ、Borg、Kubernetes、Mesosなど、さまざまな新しいテクノロジーや製品が急増し、注目を集めていました。 Didi は業界のトレンドに従い、クラウド コンピューティング軍に加わり、社内のビジネスのクラウド移行を推進してコストの削減と効率の向上に貢献しています。ビジネスをクラウドに移行したいので、まず「クラウド」とは何か、Didi の中に「クラウド」があるかどうかという問いに答えなければなりません。当時、すべてのビジネスは独自の物理マシン リソース上で実行されていました。 Didiにとって「クラウド」はその名前と同じくらい幻想的なものであり、同社の技術的基盤である基本プラットフォーム部門がDidiの「クラウドベース」の構築の責任を負った。

クラウドの場合、最も基本的な運搬エンティティはコンテナです。当時、Docker、コンテナ、cgroupなどのコンテナ技術は比較的成熟しており、大手企業で使用されていました。しかし、Kubernetes や Mesos など、これらの大規模コンテナ クラスターのスケジューリングおよびオーケストレーション戦略には多くのルートがありました。 Didi はまた、2 つの技術ルートを同時に進化させることを選択しました。時間が経つにつれて、Kubernetes 陣営に加わる企業はますます増えました。 Kubernetes は、コンテナのスケジューリングとオーケストレーションの事実上の標準になりました。 Didi はついに Kubernetes を採用することを選択しました。

ライドシェア、オンライン配車、エンジン、地図、ミドルオフィス、都市交通サービス、国際化などのビジネスがエラスティッククラウドに接続されるにつれて、エラスティッククラウドコロケーションの最初のプロトタイプ、つまりオンラインビジネスコロケーションが形成されます。エラスティック クラウドに接続するビジネスが増えるにつれて、エラスティック クラウドの展開密度はますます高くなり、スケジュール要件はますます多様化しています。これにより、Elastic Cloud 全体に大きな安定性の課題が生じます。以下では、コンテナ ランタイム環境とクラスター スケジューリングの 2 つの側面から紹介します。

Elastic Cloud を使用すると、複数の業務のコンテナが 1 台の物理マシンに同時にデプロイされます。誰もが「混合」環境にいます。リソース使用率を向上させるために、オーバーセリングなどのテクノロジーを通じてコン​​テナの展開密度が高められています。これは、同じ物理マシンに展開されるコンテナの数が増えることを意味し、リソースの競合がますます深刻化し、業務の遅延が増加し、不具合が頻繁に発生することになります。したがって、私たちが直面する最初の重要な問題は、リソース競合の問題を解決することです。客観的に言えば、総リソースが固定されている場合、コンテナの展開密度を高めると、必然的にリソースの競合が発生し、これは避けられません。したがって、解決すべき問題は、リソースの競合をなくすことではなく、リソースの競合を合理的に割り当て、主要サービスの動作品質を確保することです。これらの問題を解決する方法を見てみましょう。

弾力性のあるクラウド階層型セキュリティシステム

弾力性のあるクラウド階層型セキュリティシステム

現在の Elastic Cloud Online パブリック クラスターの全体的なリソースは過剰販売されており、ビジネスの平均レベルをはるかに超えているため、完全な階層保証システムを確立することが、良好なコロケーションの前提条件となります。現在の階層型システムの中核となる考え方は、クラスターと単一マシンという 2 つの次元からリソースの確実性を提供し、優先度の異なるサービスに対して異なるレベルのリソース保証を提供することです。簡単な要約は次のとおりです。

  • サービスは、その重要性と機密性に応じて合理的に等級分けされ、それに応じたリソースの過剰販売ルールが策定される必要があります。
  • 単一マシン レベルでのリソース (CPU、メモリ、ディスク IO、ネットワーク、キャッシュなど) の割り当てにより、高品質なサービスのニーズを確実に満たすことが優先されます。
  • クラスター レベルでは、クォータ管理と制御、および k8s 階層型スケジューリング機能など、さまざまなレベルのサービスに対してリソース保証が提供されます。

k8s スケジューリング機能のサポート

上の図は、k8s スケジューリングのフローチャートです。スケジューリングの中心的な作業は、新しく作成されたポッドを実行するために最も適したノードを選択することです。スケジューリング プロセス全体は、事前選択戦略 (述語) と優先順位戦略 (優先順位) の 2 つの段階に分かれています。プロセス中に、さまざまなアルゴリズム戦略が選択および最適化され、さまざまなカスタマイズされたスケジューリング戦略を追加できます。以下では、スケジューリング レイヤーが上記のコロケーション シナリオをどのようにサポートするかについて説明します。

1. 強化されたスケジュール事前選択戦略

  • リソース制限の強化
  • 大規模コンテナの単一マシンのスケジュール制限
  • IO に敏感なコンテナ スケジューリングの適応
  • 実際の使用スケジュール制限
  • ホストリソース競合スケジュール制限
  • クラスタトポロジの断片化の強化
  • 同じ sts での Tor 散乱戦略
  • 同じ sts の下のノード分散戦略
  • コンピュータルームにおけるノードスパースネス戦​​略
  • 指示されたスケジュール戦略

2. スケジュール最適化戦略

  • ActualBalancedResourceAllocation戦略: 実際のリソース使用量が可能な限りバランスのとれたホストにスケジュールする
  • BalancedResourceAllocation戦略: 可能な限りリソース使用のバランスが取れたホストにスケジュールする
  • ActualLeastResourceAllocation戦略: 実際のリソース使用量が可能な限り少ないホストにスケジュールする
  • LeastResourceAllocation戦略: 可能な限りリソース使用量が少ないホストにスケジュールする
  • InterPodAffinityPriority戦略: 指定されたトポロジキーを持つホストに可能な限りスケジュールする
  • NodeAffinityPriority戦略: 指定されたノードアフィニティを可能な限り満たすホストにスケジュールする
  • TaintTolerationPriority戦略: 可能な限りPodとコンテナにtaintsが設定されているホストにスケジュールする

最適な戦略の重み付け

3. スケジュールの変更

k8s クラスターのリソースは、クラスターの拡張と縮小、マシンの交換、ビジネス トラフィックやデプロイメント モデルの変更など、動的に変化するため、コンテナー使用率が過去最高に達するなど、リソースの使用状況も変化します。また、その後のリソース要件はスケジューリング時に予測できないため、スケジューラは、スケジューリング時のクラスター リソースと動作状況に基づいてのみスケジューリングの決定を行うことができます。さらに、スケジューリング戦略自体も変更される可能性があり、完了したスケジューリング決定にスケジューリング戦略の変更をどのように適用するかも検討する必要がある問題です。そのため、当社は、クラスターの定期的な検査を通じて上記のシナリオにおける不合理なスケジューリング決定を検出し、スケジューラによる再スケジュールをトリガーして、クラスターの全体的なシステム リソース割り当てをより合理的にする再スケジュール サービスを提供しています。

再スケジュール サービスの全体的なワークフローを下図に示します。再スケジュール サービスは、ホスト/ビジネス クラスターの状態を定期的に検査し、さまざまな再スケジュール戦略に従って再スケジュールする必要があるホストを選択し、特定の戦略に従ってドリフトするコンテナーを選択し、スケジューラに対してコンテナー IP 変更ドリフト要求を開始します。

写真

弾力性のあるクラウド階層保証システム、スケジューリングおよび再スケジューリング機能のサポートにより、パブリック クラスター内のオンライン サービス間のコロケーションは比較的成熟しました。ピーク時のクラスターの CPU 使用率は、約 50% の安全なレベルに維持されます。具体的な CPU 使用率は次の図に示されています。

コンピュータルームAのCPU使用率チャート

フェーズ2: オフラインコロケーションのパブリッククラスタ

オンライン クラスターのピーク CPU 使用率が 50% に達しました。さらにコストを削減したい場合、オンライン サービスの展開密度を高めることで CPU 使用率を高めることはできますか?技術的な解決策、業界の慣行、収益への影響の観点から、このアイデアは実現可能ではありません。次の点が示されています。

  • オンライン展開密度がさらに高まると、リソースをめぐる競争が激化します。ピーク時には、CPU 使用率が 50%、60%、さらには 70% を超える場合があり、安定性に大きなリスクが生じます。皆さんご存知のとおり、現在使用している物理マシンはすべてハイパースレッディング (HT) が有効になっています。同じコア内の 2 つのハイパースレッド論理コアは、実際には基盤となるハードウェア リソースを共有するため、理論上は 50% が制限となります。さらに増加すると、リソースの競合によるさまざまな問題が増加し、ビジネスのサービス品質に大きな影響を与えることになります。
  • コスト削減のため、Didiの現在のオンラインサービスの展開密度と過剰販売は比較的高くなっています。業界のオンライン サービスの過剰販売率は基本的に比較的低いレベルに制御されており、これはオンライン サービス自体の CPU 使用率がそれほど高くないことを意味します。
  • 展開密度をさらに高めても、CPU のピーク使用率が向上するだけです。 CPU が完全に使用されていない低ピーク時間が長く続くため、コスト削減のメリットは限られます。

上記の分析に基づくと、業界ではオンライン サービスとオフライン サービスを共存させることがより一般的な方法であり、これにより、オフライン タスクはオンラインのオフピーク期間中に CPU コンピューティング能力を最大限に活用でき、平均 CPU 使用率が向上し、全体的なコストが削減されます。次の図に示すように、網掛け部分の計算能力をどのように活用するかが、オフライン コロケーションで解決すべき中心的な課題になります。

写真

オフライン コロケーションは、実際には、複数の制約があるシナリオでグローバルな最適ソリューションを見つけることです。以下の目標を達成することを目指します。

  • オンラインクラスタの平均CPU使用率を上げる
  • オンラインサービス運用の品質がオフライン運用の影響を受けないようにする
  • オフライン操作の品質要件を考慮すると、オフラインタスクを無条件に抑制することはできない。

上記の目標を達成するには、オフライン コロケーションの中核となる以下の問題に対処する必要があります。

  • スタンドアロン容量:

コンテナQoS保証: 単一マシンのリソース分離を提供し、オンラインサービスの動作品質を保証します。

干渉検出機能: 干渉インジケーターの構築により、オフラインタスクがオンラインサービスに与える影響をリアルタイムで把握し、リソースの抑制や排除などの必要なアクションを実行できます。

  • コンテナ プロファイリング機能: ホストの実際の使用率に基づいて、完全なコロケーション シナリオにスケジュール プロファイリング機能が組み込まれ、さまざまな時点でホストが持つさまざまなディメンションのコロケーション リソースをガイドします。
  • K8s ハイブリッド スケジューリング機能: 静的潮汐スケジューリングと動的スケジューリングを含む。潮汐スケジューリングは時間帯に基づいており、動的スケジューリングはコロケーション プロファイルに基づいています。コロケーション タスクは適格なホストにスケジュールされ、安定性を確保しながらホストの使用率が向上します。

スタンドアロンのQoSおよび干渉チェック機能

単一マシン QoS 保護の主な目的は、CPU、メモリ、ディスク IO、ネットワーク、キャッシュなどの共有リソースをカーネル レベルで分離し、オフライン タスクがオンライン タスクに与える影響を軽減することです。ただし、すべてのオフライン タスクは共有環境で一緒に実行されるため、リソースの競合は弱められるだけで、完全に回避することはできません。そのため、さまざまなリソース レベルでインジケータ システムを確立して干渉の発生を感知し、単一マシンおよびクラスター スケジューリング レベルで何らかの処理を実行する必要があります。次の図は、リソース分離ソリューション、競合指標の構築、リソースの動的調整戦略などに関して、単一マシン レベルで実行される内容を示しています。

写真

上図では主にランタイム部分に焦点を当てており、メカニズムと戦略に分かれています。このメカニズムはカーネル レベルで提供される一般的な機能であり、さまざまなシナリオでユーザー モードでこれらの機能を使用する戦略です。この設計は、メカニズムと戦略の分離の原則にも準拠しています。リソース分離および干渉インジケーターには、さまざまなリソースとカーネル サブシステムが関係しており、コンテンツは膨大です。 CPU 分離戦略に焦点を当てます。

一般に、CPU 分離戦略は 2 つあります。cpuset (多くの場合、大規模フレーム コア バインディングと呼ばれます) と cpushare (CPU リソースをオフラインで共有し、洗練されたスケジュール設定によってオンラインを確保する) です。これら 2 つの分離戦略についての私の考えと、それらがどのような具体的なシナリオに適しているかについてお話ししたいと思います。

cpuset の利点は、この戦略により、CPU レベルで 2 つのエンティティ間の強力な分離を実現できることです (LLC キャッシュは引き続き共有されるため、他の手段で分離する必要があります)。これにより、オンライン サービスの動作品質をより適切に保証できます。しかし、欠点は、構成があまり柔軟ではなく、場合によってはオンライン サービスに適さないことです。したがって、この戦略は主にオフライン コロケーション シナリオや、Redis コロケーションなどのレイテンシに特に敏感な一部のシナリオで使用されます。現在、このソリューションはビッグデータのコロケーションと一部のオフラインタスクに使用しています。

cpushare の利点は、この戦略により、ユーザー モード エージェントがリソースを調整する必要なく、カーネル CPU スケジューリング レベルから優先度の高いサービスのリソースが保証されることです。カーネルのスケジューリング レベルでは、ミリ秒レベルの CPU プリエンプションを保証でき、オンライン サービスはすべての CPU を使用できます。これにより、上記で説明した一定期間内に生成される多数のスレッドの同時実行の問題も回避できます。 cpushare ソリューションは、リソースをより有効に活用し、CPU 使用率をさらに向上させることができます。ただし、欠点としては、カーネル開発が必要であり、ロジックが比較的複雑で、カーネルコアコードが関係し、安定性リスクが比較的高く、オンライン実装サイクル全体が比較的長いことが挙げられます。

K8s ハイブリッド展開スケジュール機能

静的潮汐調節

Elastic Cloud コロケーションは現在、オンライン サービスの全体的な潮汐現象に基づいて、潮汐期間を通じてコロケーションによって提供されるオフライン コンピューティング能力を制限しています。エラスティック クラウド コロケーションは、オフライン クラスターのピーク期間を設定し、エラスティック API を通じてビジネスにフィードバックを提供して、オフライン コンテナーが実行できるかどうかをビジネスに通知します。たとえば、hxy データセンターでのオフライン サービスのコロケーションを例にとると、コロケーションの期間は次のようになります。

  • オフピーク期間(2 つのオフライン コンテナを実行可能): 00:00-07:00 10:00-15:00 23:00:00-24:00:00
  • ミッドピーク期間(オフラインコンテナ1個実行可能): 15:00-17:00 20:00-23:00
  • ピーク時間帯(オフラインコンテナは0個まで実行可能): 07:00-10:00 17:00-20:00

次の図は、異なる期間に共存できるオフライン コンテナーを示しています。

グリーンライン 2023-07-02 (日曜日) / ブルーライン 2023-07-03 (月曜日)

潮汐スケジュール戦略はシンプルですが、いくつか問題があります。

  • 各ホストの使用率は期間ごとに異なるため、グローバル潮流戦略では、ホストの残りのリソースを十分に活用して、ビジネスにさらに多くのコンピューティング能力を提供することはできません。
  • 一方、静的スケジューリングでは、利用可能なコロケーション スペースに基づいて実行可能なオフライン コンテナーの数を調整するのではなく、オフライン コンテナーの数を固定します。これにより、オフライン コンテナーの CPU 使用率が実際のコロケーション スペースを超え、安定性に一定のリスクが生じる可能性があります。

初期の頃は、Tidal スケジューリングは主にオフライン コロケーション シナリオで使用されていました。現在、オンライン シナリオは動的スケジューリング ソリューションに切り替わっています。

動的スケジューリング

動的スケジューリングは静的スケジューリングと比較されます。各ホストのリソース使用率や変更に基づいて、各ホストでスケジュールできるオフライン リソースを動的に調整することを指します。既存の静的スケジューリングの制限と比較して、動的スケジューリングの利点は次のとおりです。

  • 各ホストの残りのリソースを最大限に活用して、オフライン コロケーションの価値を最大限に高めることができます。
  • ホスト内のホットスポットなどの安定性リスクは、ソリューション レベルで回避できます。

動的スケジューリングの目標は次のとおりです。

  • オフライン スケジューリングは、オンライン クォータやスケジューリングの品質に影響を与えることなく、ホスト リソースの使用率に基づいて実行されます。
  • オフラインの動的スケジューリングにより、コロケーション ホストの使用率が安定した範囲に維持され、リソースの使用率が向上します。

動的スケジューリングは、以下に説明するコンテナ プロファイルに依存します。このプロファイルでは、任意の期間に物理マシン上に共存できるコンピューティング能力のスペースを予測できます。実装の観点からは、オフライン水平スケーリングとオフライン垂直スケーリングの 2 つの方法があります。

  • 水平スケーリング: ホストのオンライン使用率とプロファイル データに基づいて、オフライン ポッドの動的なエラスティック スケーリングを通じて定期的にスケジューリングが実行されます (ホスト上のオフライン コンテナーの数をスケジュールします)。
  • 垂直スケーリング: 各ホストにオフライン ポッドがデプロイされます。ホストのオンライン使用率とプロファイル データに基づいて、オフライン ポッドの「仕様」が定期的に調整され、ホストの残りのリソースを最大限に活用します。

写真

実装の観点から、これら 2 つを比較します。

  • 垂直スケーリングに対する水平スケーリングの主な利点は、オフライン仕様と既存のユーザー エクスペリエンスの確実性を維持できることです。ただし、水平スケーリングの主な問題は、現在のオフライン ポッドのライフサイクルがオフライン タスクのライフサイクルと一致していないため、頻繁なスケーリングによってキル率が高くなり、ビジネスの運用効率に影響を及ぼす可能性があることです。
  • リソース利用の観点から見ると、垂直スケーリングはコンテナ仕様によって制限されず、フラグメントの生成を回避するため、より効率的です。同時に、この方法では、ワークロードとオフライン コンテナーを調整する必要がないため、キル率も発生しません。

現在の水平スケーリング ソリューションは主にオフライン タスク コロケーション シナリオで使用され、垂直スケーリング ソリューションは主にビッグ データ コロケーション シナリオで使用されます。もちろん、オフライン サービスのさまざまなニーズに応じて調整することもできます。

コンテナプロファイリング機能

動的スケジューリング ソリューションでは、オフラインで使用可能なリソース = コロケーションのターゲット使用リソース量 - ホスト オンライン サービスによって使用されるリソースです。コロケーションの動的スケジューリング中、スケジューラは各ノード上のオフラインで利用可能なリソースに基づいてオフライン コンテナをスケジュールします。ホストのオンライン リソースの使用率は絶えず変化するため、オフラインで利用可能なリソースも絶えず変化します。オフライン タスクの観点からは、オフライン タスクの実行中に、オフラインで利用可能なリソースがリソース要件を満たすことができることを確認する必要があります。したがって、ポートレートでは将来的にオフラインで利用可能なリソースを提供する必要があります。

予測アルゴリズムは、今後 1 時間のホスト オンライン サービスの最大リソース使用率を予測するために使用されます。このようにして、目標コロケーション利用率を前提としてコロケーションできるリソースの量は、次の図に示すように得られます。

写真

予測アルゴリズムには、7 日間の前年比アルゴリズムと加重前年比アルゴリズムが含まれます。

7 日間の前年比アルゴリズムは、オンライン サービスの 7 日間の周期に基づいて、7 日前の前年比値を予測値として使用します。誤差が比較的大きいため、オンラインでは使用されなくなりました。

加重前年比アルゴリズムは、全体の利用率が増加または減少すると誤差が大きくなるため、7 日間前年比アルゴリズムに基づいて設計された改良アルゴリズムです。このアルゴリズムは、7日前、1日前、1時間前の履歴値を総合的に考慮し、予測の精度を大幅に向上させることができます。現在、すべてのオンライン コンピュータ ルームでは加重前年比アルゴリズムが使用されており、実際の誤差は 7 日間の前年比アルゴリズムと比較して大幅に減少しています。

オンラインコロケーションの現状

単一マシンの分離、干渉検出、コンテナのプロファイリング、動的スケジューリングなど、前述の機能は、オンライン コロケーション シナリオで広く使用されています。現在、ビッグデータコロケーションとオフラインタスクコロケーションは数年間安定して稼働しています。以下は、コロケーション後のリソース使用例です。黄色の線は、オフライン コロケーション後の CPU 使用率の増加を示しています。オフライン コロケーションは、CPU 使用率の谷を埋めるのに非常に効果的であることがわかります。

コロケーション クラスターの CPU 使用率グラフ

フェーズ 3: 分離されたクラスタのコロケーション

前のセクションでは、Elastic Cloud パブリック クラスターのオンプレミスとオフプレミスのデプロイメントについて説明しました。オンプレミス展開のこれら 2 つのシナリオにより、パブリック クラスターの CPU 使用率が大幅に向上し、コストが削減されます。ただし、パブリック クラスター リソースは、エラスティック クラウドの全体的なリソース プールの一部のみを占めます。分離されたクラスターも多数存在し、分離されたクラスターの利用率は一般的に非常に低いです。そのため、このエリアは共同配置と削減の焦点となっています。

まず、分離されたクラスターを紹介します。パブリッククラスターは、さまざまなビジネスが一緒に運営されるパブリックリソースプールです。ただし、ストレージ Redis、MQ、アクセス レイヤー サービスなどの一部のサービスは、レイテンシの影響を非常に受けやすいです。パブリック クラスター環境はサービス品質要件を満たすことができません。そのため、特定のサービスが単独で使用できるようにリソース プールを特別に分離することで、サービスのサービス品質を保証できます。ただし、これらのサービスは個別に展開されるため、リソースの使用率が非常に低く、リソースとコストが無駄になります。分離されたクラスターの典型的な CPU 使用率を以下に示します。

写真

写真

写真

分離されたクラスターの CPU 使用率は非常に低いレベルにあり、コロケーションの余地が十分にあることがわかります。これを見て、コロケーションスペースがたくさんあるのに、なぜもっと早くやらないのかと疑問に思う学生もいるかもしれません。ここでは、分離されたクラスタービジネスオペレーションの特徴から始める必要があります。一般的に、孤立したクラスタービジネスは非常に繊細であり、高い安定性が求められます。たとえば、Redis サービスはレイテンシに非常に敏感で、干渉に対する許容度はほぼゼロです。さらに、業界では一般的に Redis サービスにコロケーションを使用せず、運用の品質と安定性を確保するためにいくらかのコストを犠牲にしています。 Redis リソースは、分離されたクラスター リソースの大部分を占めます。私たちはこの分野でコロケーションを検証し、実装しようとしていますが、常に慎重な姿勢を保っています。

今年はコスト削減と効率化のさらなる深化の段階に入りました。また、これまでの技術蓄積と検証を、分離されたクラスターのコロケーションで実装し始めました。分離されたクラスター サービスの特性により、分離されたクラスター コロケーションを複数の段階に分割します。

  • オンライン サービスとストレージ サービスの共存: パブリック クラスターの比較的優先度の低いオンライン サービスを、分離されたクラスターとストレージ物理マシン クラスターにスケジュールして、ピーク時の CPU 使用率がパブリック クラスターのレベルに達するようにします。
  • 完全なコロケーション: すでにコロケーションされている分離されたクラスターにオフライン タスクをさらにスケジュールし、平均 CPU 使用率をさらに改善して、最終的に無差別な完全なコロケーションを実現します。

現在は前段階です。この段階の主な目標は、分離されたクラスターのピーク CPU 使用率を向上させることです。次の図に示すように、赤いボックス内のリソースは、コロケーションを通じてオンライン サービスによって利用されます。

写真

技術的な観点から見ると、分離されたクラスターのコロケーションには、以下で紹介する k8s スケジューリング、単一マシン保護、安定性保護ソリューションも含まれます。

k8s スケジューリング サポート

分離されたクラスターのコロケーション シナリオでは、k8s スケジューリングの主な目標は次のとおりです。

  • コロケーション内のオンライン サービスを分離されたクラスターにスケジュールし、使用率が設定されたコロケーション ターゲットを超えないように、使用率に基づいてクラスター全体をスケジュールします。
  • コロケーション スケジューリングは、パッキング レートや元の分散戦略など、分離されたクラスターの元のサービスのスケジューリング容量と品質に影響を与えることはできません。
コアスケジューリング戦略
  • 真の利用スケジュール
  • コロケーション側は、コロケーションターゲットの使用率とプロファイルに基づいて各ノード上の「常駐コロケーション」リソースを計算し、カスタムリソースmix-mid-cpuを書き込みます。
  • 過去 7 日間の最大使用率の履歴に基づいて、ポッドが占有する可能性のあるリソースをポッドに注入します。
  • mix-mid-cpuなどのカスタムリソースによるスケジュール制限

写真

  • 単一マシンのコンテナ数量制限問題の解決
  • Redis などの一部の分離されたクラスターでは、マシンあたりのコンテナ数に上限があります。これらの制限は、コロケーション コンテナーの追加によって破られる可能性があります。スケジューリング側では、さまざまな状況に応じてコロケーション サービスの単一マシン コンテナ数制限をバイパスしたり、コロケーション コンテナの予測数に基づいて現在の単一マシン コンテナ数制限を調整したりできます。
  • ルールエンジンポリシーの挿入のスケジュール
  • スケジューリング ルールは普遍的であるため、通常の状況ではパブリック クラスター内のサービスを分離されたクラスターにスケジュールすることはできません。強制的なスケジューリングを実行しても、普遍的なボトルネックが多数発生します。これらのボトルネックは分離されたクラスターには適用されないため、何らかの適応が必要です。典型的なシナリオとしては、分離されたクラスターの汚れを許容し、これらのサービスのためにパブリック クラスターと分離されたクラスター間のチャネルを開くことなどが挙げられます。パブリック クラスターのいくつかのデフォルトのボトルネックをスキップします。物理マシンの実際の使用率プロファイルを占有しない。コロケーションに関するラベルの設定など
スケジュール変更

分離されたクラスター サービスは一般に優先度の高いサービスであるため、基本的なバックアップを提供するために、オンライン サービスとの共存後に再スケジュールする必要があります。再スケジュールするには、コロケーション内の分離されたクラスターに基本的なホットスポット処理機能を追加する必要があります。再スケジュールの要件は次のとおりです。

  • 分離されたクラスター サービスのネイティブの再スケジュール戦略を維持して、コロケーションが分離されたクラスターに対して透過的であることを保証します。
  • コロケーション サービスの場合、CPU、メモリ、ディスクの使用率しきい値 (構成可能) に基づいて再スケジュールする必要があり、必要なホットスポット ドリフトが実行されます。

単一機械サービス品質保証

スタンドアロン サービスの品質保証は、主にカーネル リソースの分離から実行されます。一般的に、単一マシンの分離は、基本的にコロケーションおよびオフサイトコロケーションのシステムにあります。現在の分離されたクラスター コロケーションはコロケーション オンライン サービスであるため、CPU はデフォルトで cpusare メカニズムを使用して、階層的な保証システムを通じてサービスの品質を確保します。ただし、Redis などの特に機密性の高いサービスについては、より保守的な CPU 大規模フレーム ソリューションも採用し、Redis インスタンスを過剰販売しないという全体的な原則を確保します。

同時に、コロケーションコンテナの使用率が急激に増加してマシン全体のCPU使用率がコロケーション目標を超え、分離クラスタの本来のサービスの動作品質に影響が出るのを防ぐため、単一マシンレベルでの単一マシン抑制機能も導入されています。コロケーション コンテナが原因で物理マシンの CPU 使用率が異常であることが検出された場合、全体的な制御性を確保するためにコロケーション コンテナが抑制されるか、または排除されます。

安定性の保証

Didi は初めてクラスターを分離し、機密性の高いビジネスを同じ場所に配置しようとしていたため、多くのソリューションが段階的に進化しており、安定性を保証するソリューションが特に重要でした。ここでは、安定性保証ソリューションであるハイブリッド コンテナ削除ロジックに焦点を当てます。全体的な立ち退きプロセスを次の図に示します。

写真

主に以下の部分が含まれます。

  • 立ち退きのきっかけ
  • ビジネス指標: 分離されたクラスターのネイティブ ビジネスのビジネス指標が異常である場合、それは重要なシグナルです。もちろん、ビジネス指標の問題がコロケーションによって引き起こされるというわけではありません。ここでは、判断を支援するためのリソース レベルのインジケーターも多数あります。
  • コロケーション水位: リソース使用率が事前に設定されたコロケーション水位を超えた場合、コンテナを削除する必要があります。
  • 干渉検出: コロケーション コンテナーによって発生する明らかな干渉を検出するためにカスタム干渉インジケーターが使用されている場合、対応するコンテナーを削除する必要があります。
  • 手動による強制トリガー: 一部のシナリオでは強制的な削除が必要であり、そのようなシナリオのサポートも必要です。
  • 立ち退きコアロジック管理
  • 地元の立ち退き:この場合、ノード上のすべてのポッドを立ち退かせる必要はありません。代わりに、最も適切な立ち退きターゲットを正確に見つける必要があります。一般に、次の要因が考慮されます:ポッドの優先順位、ポッド利用、ポッド干渉指数など。
  • Node Veviction:物理マシンで深刻な問題が発生し、ノード上のすべての共同配置コンテナライブラリをすばやく追い出す必要があります。
  • サービスの立ち退き:たとえば、コロケーションサービスに問題がある場合、このサービスのすべてのインスタンスをIDCまたはパブリッククラウドに追放する必要があります。
  • 国外追放の目的地
  • コロケーションクラスター:この場合、コロケーション容器が追い出された後、コロケーションクラスター内の他のノードにスケジュールされます。
  • 自己構築されたIDCパブリッククラスター:この場合、コロケーションコンテナは、追い出された後、IDCパブリッククラスターにスケジュールされます。
  • パブリッククラウド:この場合、コロケーションコンテナは追い出された後、パブリッククラウドにスケジュールされます。

将来の自己構築されたIDCパブリッククラスターの能力は限られており、パブリッククラウドはコストを増やすリソースを追加購入する必要があるため、立ち退き先の全体的な優先順位は次のとおりです。それがグローバルな問題でない場合は、できるだけ早くコロケーションクラスター内でそれを追い出す方が良いです。

弾性雲コロケーションの将来の展望

将来の定常状態の雲の移行計画の促進により、パブリッククラスターの規模は同じままであるか、適切に削減される可能性があります。将来的には、さまざまな孤立したクラスターがコロケーションの重要なコンピューティング電源になります。ここでは、上記の写真を使用して、弾性雲コロケーションの将来の見通しを説明しています。

写真

この図では、各コロケーションエンティティが独自の立場を見つけることができます。

  • 合計:物理マシンの総リソースを示します
  • 制限:コロケーションで利用可能なリソースの量を示します。制限と合計の間のバッファーは、予約された安定性バッファーです。
  • MID:この部分は、ハイブリッド展開でオンラインサービスで使用されます。それらは主にピークCPU使用量を増やすために使用されます。
  • バッチ:この部品はオフラインサービスに使用されます。それらは主に平均CPU使用を改善するために使用されます。
  • Prod:この赤い線は、分離されたクラスターサービス自体のCPU使用です。サービスの特性により、全体的な使用法は高くありません。

これは、完全なコロケーションという私たちの将来のアイデアです。より多くの種類のサービスが一緒に実行されるにつれて、それは技術的な能力に対してより大きな挑戦をもたらします。将来的には、クラスタースケジューリング、サービスプロファイリング、単一マシン分離、干渉検出、異常知覚およびその他の側面をさらに強化します。

<<:  Docker を使用した Spring Boot アプリケーションのコンテナ化

>>:  ワンストップのクラウドネイティブ FinOps プラットフォーム - KubeFin

推薦する

ベゾスを怖がらせろ!アリババの株価は急騰し、時価総額は5000億ドルに近づきました!

ちょうど今、アリババが2018年度第2四半期の財務報告書を発表し、国中が歓喜しました。ヨーロッパとア...

CCTVがDangdang.comが偽のカシオ腕時計を販売していることを暴露:小さな文字盤は24時間動きません

「オリジナル本物カウンター検査」 24時間サブダイヤルは動かない偽造時計鑑定レポート「消費者クレーム...

IDCの最新レポート:中国のビデオクラウド市場は58%以上成長し、アリババクラウドは3年連続で第1位に

2020年、疫病の影響により、ライブブロードキャスト経済やショートビデオなどが爆発的な成長を遂げ、そ...

DIV切り替え機能を不適切に設定すると、ホームページの権限がダウングレードされる可能性があるので注意してください。

多くの人がウェブサイトを最適化する際、コンテンツと外部リンクに重点を置いており、基本的にこの2つの側...

Baiduが毎日更新してより多くの情報を提供する方法

Baiduについてのみ話します - 他のトピックについては後で議論します最近、ゴミステーションをいく...

共同購入による突然の死の例:Jushou.com は立ち上げから 6 か月後に倒産

インベスター・デイリーの記者、何鳳丹2011年3月、劉磊さんが起業を決意したとき、春が来たと感じまし...

デルはITアップグレードを通じて企業の戦略的変革を推進

最近、IT Manager World が主催し、Dell が主導して参加した「Inspiring ...

Weibo マーケティングをより「マイクロ」かつ「ブログ」的にする方法

Weibo が人気になって以来、Weibo マーケティングは大手ウェブマスターや業界関係者の間で話題...

反省: SEO 技術だけに特化していると、将来のキャリア開発が制限されてしまいます。

今日、仕事中にグループ内の友人たちとチャットをしていました。友人の一人は、SEOの仕事に応募するため...

エキスパンドメタルの電子メールマーケティングのケーススタディ

みなさんこんにちは。私はSEO担当者のLiang Leiです。私はプロのマーケターではありません。今...

hosteons: 新製品のリソースプール、無制限のトラフィック、バックグラウンドで複数のVPSを分割できる、30%割引コードが付与される

Hosteons は、ロサンゼルス データ センターで新製品 VPS リソース プールを開始しました...

ElasticSearch が高速なのはなぜですか?その理由はご存知ですか?

ElasticSearchとは何か、なぜESを使うべきなのかオープンソースの分散検索および分析エンジ...

justhost 値下げ - 年間 33 ドル / cpanel / 無料ドメイン名 1 つ / ウェブサイト構築無制限

最近、EIG 傘下の justhost ブランドが価格を下げた (実際にはホリデー プロモーションで...

Baidu はオリジナルコンテンツについてどう考えていますか?

「Baiduオリジナルコンテンツ」は、ウェブマスターの間で常に話題になっています。Baiduのアルゴ...