コロケーションとは、関連する特性に基づいて異なるビジネス サービスを同じ物理マシンまたは仮想マシンに展開し、主要なビジネス サービスの品質を確保しながらクラスター リソース全体の利用率を向上させ、総コストを削減することを意味します。コロケーションの種類によって、オンラインサービスのコロケーションとオフラインサービスのコロケーションに分けられます。オンライン コロケーションは、パブリック クラスター内のオンライン サービス間のコロケーションと、分離されたクラスター内のオンライン サービスとストレージ サービス間のコロケーションに分けられます。オフライン コロケーションには、主にオンライン サービスとオフライン サービスのコロケーションが含まれます。 コロケーションは業界で一般的なコスト削減方法ですが、多くの技術的な課題を伴います。要約すると、次のようになります。
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 つの次元からリソースの確実性を提供し、優先度の異なるサービスに対して異なるレベルのリソース保証を提供することです。簡単な要約は次のとおりです。
k8s スケジューリング機能のサポート上の図は、k8s スケジューリングのフローチャートです。スケジューリングの中心的な作業は、新しく作成されたポッドを実行するために最も適したノードを選択することです。スケジューリング プロセス全体は、事前選択戦略 (述語) と優先順位戦略 (優先順位) の 2 つの段階に分かれています。プロセス中に、さまざまなアルゴリズム戦略が選択および最適化され、さまざまなカスタマイズされたスケジューリング戦略を追加できます。以下では、スケジューリング レイヤーが上記のコロケーション シナリオをどのようにサポートするかについて説明します。 1. 強化されたスケジュール事前選択戦略
2. スケジュール最適化戦略
最適な戦略の重み付け 3. スケジュールの変更k8s クラスターのリソースは、クラスターの拡張と縮小、マシンの交換、ビジネス トラフィックやデプロイメント モデルの変更など、動的に変化するため、コンテナー使用率が過去最高に達するなど、リソースの使用状況も変化します。また、その後のリソース要件はスケジューリング時に予測できないため、スケジューラは、スケジューリング時のクラスター リソースと動作状況に基づいてのみスケジューリングの決定を行うことができます。さらに、スケジューリング戦略自体も変更される可能性があり、完了したスケジューリング決定にスケジューリング戦略の変更をどのように適用するかも検討する必要がある問題です。そのため、当社は、クラスターの定期的な検査を通じて上記のシナリオにおける不合理なスケジューリング決定を検出し、スケジューラによる再スケジュールをトリガーして、クラスターの全体的なシステム リソース割り当てをより合理的にする再スケジュール サービスを提供しています。 再スケジュール サービスの全体的なワークフローを下図に示します。再スケジュール サービスは、ホスト/ビジネス クラスターの状態を定期的に検査し、さまざまな再スケジュール戦略に従って再スケジュールする必要があるホストを選択し、特定の戦略に従ってドリフトするコンテナーを選択し、スケジューラに対してコンテナー IP 変更ドリフト要求を開始します。 写真 弾力性のあるクラウド階層保証システム、スケジューリングおよび再スケジューリング機能のサポートにより、パブリック クラスター内のオンライン サービス間のコロケーションは比較的成熟しました。ピーク時のクラスターの CPU 使用率は、約 50% の安全なレベルに維持されます。具体的な CPU 使用率は次の図に示されています。 コンピュータルームAのCPU使用率チャート フェーズ2: オフラインコロケーションのパブリッククラスタオンライン クラスターのピーク CPU 使用率が 50% に達しました。さらにコストを削減したい場合、オンライン サービスの展開密度を高めることで CPU 使用率を高めることはできますか?技術的な解決策、業界の慣行、収益への影響の観点から、このアイデアは実現可能ではありません。次の点が示されています。
上記の分析に基づくと、業界ではオンライン サービスとオフライン サービスを共存させることがより一般的な方法であり、これにより、オフライン タスクはオンラインのオフピーク期間中に CPU コンピューティング能力を最大限に活用でき、平均 CPU 使用率が向上し、全体的なコストが削減されます。次の図に示すように、網掛け部分の計算能力をどのように活用するかが、オフライン コロケーションで解決すべき中心的な課題になります。 写真 オフライン コロケーションは、実際には、複数の制約があるシナリオでグローバルな最適ソリューションを見つけることです。以下の目標を達成することを目指します。
上記の目標を達成するには、オフライン コロケーションの中核となる以下の問題に対処する必要があります。
コンテナQoS保証: 単一マシンのリソース分離を提供し、オンラインサービスの動作品質を保証します。 干渉検出機能: 干渉インジケーターの構築により、オフラインタスクがオンラインサービスに与える影響をリアルタイムで把握し、リソースの抑制や排除などの必要なアクションを実行できます。
スタンドアロンの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 データセンターでのオフライン サービスのコロケーションを例にとると、コロケーションの期間は次のようになります。
次の図は、異なる期間に共存できるオフライン コンテナーを示しています。 グリーンライン 2023-07-02 (日曜日) / ブルーライン 2023-07-03 (月曜日) 潮汐スケジュール戦略はシンプルですが、いくつか問題があります。
初期の頃は、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 使用率を向上させることです。次の図に示すように、赤いボックス内のリソースは、コロケーションを通じてオンライン サービスによって利用されます。 写真 技術的な観点から見ると、分離されたクラスターのコロケーションには、以下で紹介する k8s スケジューリング、単一マシン保護、安定性保護ソリューションも含まれます。 k8s スケジューリング サポート分離されたクラスターのコロケーション シナリオでは、k8s スケジューリングの主な目標は次のとおりです。
コアスケジューリング戦略
写真
スケジュール変更分離されたクラスター サービスは一般に優先度の高いサービスであるため、基本的なバックアップを提供するために、オンライン サービスとの共存後に再スケジュールする必要があります。再スケジュールするには、コロケーション内の分離されたクラスターに基本的なホットスポット処理機能を追加する必要があります。再スケジュールの要件は次のとおりです。
単一機械サービス品質保証スタンドアロン サービスの品質保証は、主にカーネル リソースの分離から実行されます。一般的に、単一マシンの分離は、基本的にコロケーションおよびオフサイトコロケーションのシステムにあります。現在の分離されたクラスター コロケーションはコロケーション オンライン サービスであるため、CPU はデフォルトで cpusare メカニズムを使用して、階層的な保証システムを通じてサービスの品質を確保します。ただし、Redis などの特に機密性の高いサービスについては、より保守的な CPU 大規模フレーム ソリューションも採用し、Redis インスタンスを過剰販売しないという全体的な原則を確保します。 同時に、コロケーションコンテナの使用率が急激に増加してマシン全体のCPU使用率がコロケーション目標を超え、分離クラスタの本来のサービスの動作品質に影響が出るのを防ぐため、単一マシンレベルでの単一マシン抑制機能も導入されています。コロケーション コンテナが原因で物理マシンの CPU 使用率が異常であることが検出された場合、全体的な制御性を確保するためにコロケーション コンテナが抑制されるか、または排除されます。 安定性の保証Didi は初めてクラスターを分離し、機密性の高いビジネスを同じ場所に配置しようとしていたため、多くのソリューションが段階的に進化しており、安定性を保証するソリューションが特に重要でした。ここでは、安定性保証ソリューションであるハイブリッド コンテナ削除ロジックに焦点を当てます。全体的な立ち退きプロセスを次の図に示します。 写真 主に以下の部分が含まれます。
将来の自己構築されたIDCパブリッククラスターの能力は限られており、パブリッククラウドはコストを増やすリソースを追加購入する必要があるため、立ち退き先の全体的な優先順位は次のとおりです。それがグローバルな問題でない場合は、できるだけ早くコロケーションクラスター内でそれを追い出す方が良いです。 弾性雲コロケーションの将来の展望将来の定常状態の雲の移行計画の促進により、パブリッククラスターの規模は同じままであるか、適切に削減される可能性があります。将来的には、さまざまな孤立したクラスターがコロケーションの重要なコンピューティング電源になります。ここでは、上記の写真を使用して、弾性雲コロケーションの将来の見通しを説明しています。 写真 この図では、各コロケーションエンティティが独自の立場を見つけることができます。
これは、完全なコロケーションという私たちの将来のアイデアです。より多くの種類のサービスが一緒に実行されるにつれて、それは技術的な能力に対してより大きな挑戦をもたらします。将来的には、クラスタースケジューリング、サービスプロファイリング、単一マシン分離、干渉検出、異常知覚およびその他の側面をさらに強化します。 |
<<: Docker を使用した Spring Boot アプリケーションのコンテナ化
>>: ワンストップのクラウドネイティブ FinOps プラットフォーム - KubeFin
ちょうど今、アリババが2018年度第2四半期の財務報告書を発表し、国中が歓喜しました。ヨーロッパとア...
「オリジナル本物カウンター検査」 24時間サブダイヤルは動かない偽造時計鑑定レポート「消費者クレーム...
2020年、疫病の影響により、ライブブロードキャスト経済やショートビデオなどが爆発的な成長を遂げ、そ...
多くの人がウェブサイトを最適化する際、コンテンツと外部リンクに重点を置いており、基本的にこの2つの側...
2009 年に設立された Binghe Cloud は、草の根の起業家にサービスを提供する IDC ...
Baiduについてのみ話します - 他のトピックについては後で議論します最近、ゴミステーションをいく...
インベスター・デイリーの記者、何鳳丹2011年3月、劉磊さんが起業を決意したとき、春が来たと感じまし...
最近、IT Manager World が主催し、Dell が主導して参加した「Inspiring ...
Weibo が人気になって以来、Weibo マーケティングは大手ウェブマスターや業界関係者の間で話題...
今日、仕事中にグループ内の友人たちとチャットをしていました。友人の一人は、SEOの仕事に応募するため...
みなさんこんにちは。私はSEO担当者のLiang Leiです。私はプロのマーケターではありません。今...
Hosteons は、ロサンゼルス データ センターで新製品 VPS リソース プールを開始しました...
ElasticSearchとは何か、なぜESを使うべきなのかオープンソースの分散検索および分析エンジ...
最近、EIG 傘下の justhost ブランドが価格を下げた (実際にはホリデー プロモーションで...
「Baiduオリジナルコンテンツ」は、ウェブマスターの間で常に話題になっています。Baiduのアルゴ...