[51CTO.com からのオリジナル記事] コンテナ クラスター管理システムとコンテナ クラウド プラットフォームの選択は非常に重要です。コンテナ管理システムが先進的でインテリジェントであるかどうか、またコンテナ クラウド管理プラットフォームが柔軟で使いやすく効率的であるかどうかは、企業の開発と運用の効率と速度、およびリソースの利用レベルに直接影響します。激しい競争と急激な変化の時代において、アプリケーションの開発効率、安定性、拡張性、セキュリティが企業の競争力と市場価値を決定します。 現在、K8sは、スケーラビリティ、管理、ビッグデータ分析、ネットワークシナリオ、互換性、負荷分散、グレースケールアップグレード、障害冗長性、災害復旧、DevOpsなどの利点があるため、一部の企業に好まれています。最近、51CTOが主催した「Tech Neo」をテーマにした第16回テクノロジーサロンイベントで、Momo TechnologyのSREチーム責任者であるWang Jingxue氏が、K8sコンテナでのMomoのアプリケーションプラクティスの一部を共有しました。 K8s を選ぶ理由k8s を使用する前、Momo はアプリケーションの公開と運用環境において次のような特定の問題に遭遇しました。
上記の問題に対応するため、アーキテクチャを変革し、次のような一連のアーキテクチャ改善目標を設定することにしました。
これらの問題と目標を考慮して、Momo は Kubernetes を使用して Docker クラスターを管理することを選択しました。 Kubernetes がニーズを満たせない場合は、デプロイメント プラットフォーム上で対応する機能を開発して、ログの表示、監視、アラームの開発ニーズを満たし、ホストとコンテナへのログインを回避することができます。 Momoのコンテナ管理プラットフォームのアーキテクチャの進化Momo は 2015 年後半に Docker の研究と実践を開始し、2016 年初頭に K8s の研究を開始し、自社開発のディストリビューション システムと K8s、OVS、Docker をベースにアーキテクチャの改善とコンテナ管理プラットフォームの構築に取り組んできました。開発者が独自のアプリケーションを簡単にデプロイできるように、Docker クラスターに基づくデプロイメント システムが実装されています。最終的な目標は、繰り返し可能なデプロイメント、迅速な拡張、およびロールバックを可能にする、クリーンかつ一貫性のあるデプロイメント環境を実現することです。 次の図は、コンテナ管理プラットフォームのアーキテクチャ図です。 コンテナ管理プラットフォームの主な機能には、クラスターの管理とステータス表示、グレースケールリリースとコードロールバック、コンポーネントテンプレート、アプリケーション管理、イメージリポジトリ、権限管理などがあります。フロントエンドとバックエンドを分離したアーキテクチャを採用しており、フロントエンドでは JS レンダリングを使用し、バックエンドでは Python を使用して API を提供します。これにより、開発者は操作を迅速にリリースおよびロールバックできます。 コンテナ管理プラットフォームは、アプリケーションのリリースプロセス、クラスターのスケジューリング戦略、k8s ノードのネットワーク アーキテクチャ、Alibaba Cloud のサポート、基本的な監視指標などの点で最適化および改善されています。 アプリケーションリリースプロセス Momo の以前のバージョンリリースシステムはシリアルであり、個別に置き換える必要がありました。次の図は、新しいアーキテクチャにおけるアプリケーションのリリース プロセスを示しています。 新しい公開システムでは、ユーザーがコードを送信した後、公開システムにデプロイするコミットを選択し、「ビルド」をクリックします。システムは自動的にコンパイルし、イメージにパッケージ化して、イメージ リポジトリにプッシュします。ビルドが成功した場合、ユーザーはクリックしてインスタンスの新しいバージョンをリリースし、グレースケール、フルバージョンに問題はなく、インスタンスの古いバージョンはオフラインになります。ロールバックする場合、コードをビルドする必要がなく、古いバージョンのインスタンスを直接リリースできます。一定期間、古いバージョンと新しいバージョンが同時に存在します。 クラスタースケジューリング戦略 Momo のクラスター スケジューリング戦略は、アプリケーションのデフォルトの場所 (クラスター タグ) を構成することです。オンライン アプリケーションの場合、アプリケーションは場所を申請し、正式なクラスター (コンピューター ルームの要件と十分なリソース) に展開される必要があります。ここでは、アプリケーションがクラスターを独占することはできず、ハイブリッド展開アプローチが採用されています。 同じクラスター内で異なるグループが分割され、グループ ラベルが定義されます。アプリケーションは排他的なマシンをサポートし、同じグループ内のアプリケーション インスタンスは自由にドリフトできます。 IDC ネットワーク ノード IDC ネットワークノード構築部分では、Momo はグローバル IP アドレスを使用し、コンテナとコンテナとホストが相互接続されます。この方法では、通信にカプセル化テクノロジを使用する必要がないため、比較的効率的で、既存のネットワークの変更にほとんど影響を与えません (トランクのみをカプセル化すればよく、他のプロトコルや MTU などは変更されません)。 次の図は、IDC ネットワーク ノード アーキテクチャ図です。 このようなアーキテクチャでは、各マシンの IP アドレス セグメントが事前に静的に構成されているため、ネットワークの展開と拡張は比較的簡単です。 ここで注目すべきは、サーバーがデュアルリンクされており、トランクが物理スイッチに接続されており、レイヤー 2 ループを合理的に回避する必要があることです。 この方法の欠点は、コンテナの数が多いと MAC アドレスの数が増え、物理スイッチの Mac アドレス テーブルに負担がかかることです。ブロードキャスト ドメインの拡張には、VLAN ロール関連情報の厳密な計画が必要です。 Alibaba Cloud サポート 現在、Momo K8s マスター クラスターの下のノードには、次の図に示すように、IDC、Alibaba Cloud、およびこれら 2 つの混合が含まれています。 Alibaba Cloud が採用しているネットワーク モードは Host-gw です。 MomoはIDCとAlibaba CloudのVPC間に専用回線を構築し、VPCの仮想ルーティングを静的に構成しました。 IDC ノードと Alibaba Cloud ノードの両方のアプリケーションは、動的な IP 変更に適応する必要があります。 基本的な監視指標 Momo の監視ソリューションのほとんどは、Kublet cadvisor メトリック インターフェースを使用したデータ集約に基づいています。当初、Momo は Python スクリプトを使用してインターフェースを呼び出し、CPU メモリ、ネットワーク、トラフィック データを取得し、それらを ES に保存し、分析後に表示していました。後続のアラーム システムは、Java アプリケーションを使用して Kublet cadvisor メトリック インターフェイスを呼び出してデータを収集します。 基本的な監視指標には、主にメモリ (合計、RSS、キャッシュ)、トラフィック (着信、発信)、ネットワーク パケット (ドロップ、エラー、合計) などが含まれます。 アプリケーションの移行アプリケーションの移行に関しては、Momo は多くの適応作業を行っており、アプリケーションをあまり変更せずにシームレスに移行できます。具体的な適応内容は以下のとおりです。
アプリケーションの移行プロセス中に、スワップ、CPU ソフト割り込みの最適化、リソース使用率、IP ホワイトリスト、イントラネットへの適用性などの問題もいくつか発生しました。 現在、Momo のコンテナ事業には約 400 台のサーバー、6,000 個のオンライン コンテナ、700 個以上のアプリケーションがあります。アプリケーションタイプはjava+php+node+python+tomcatです。 今後の展望運用保守では、アプリケーションのリクエスト量、スレッド数、トラフィックなどの指標を監視できることが期待されます。ベンチマーク値の部分は、単一のインスタンスが処理できるリクエストの量、スレッド数、およびトラフィックです。スケーリングの観点では、保持されるインスタンスの最小数と拡張されるインスタンスの最大数が達成されます。拡張および削減する必要があるインスタンスの数は、監視フィードバックとベンチマーク値に基づいて計算され、各クラスターのリソースマージンに比例してスケーリングされます。 【ゲストプロフィール】 Momo の Wang Jingxue が現在の SRE チーム リーダーです。彼は以前、運用および保守関連の仕事に携わっており、自動化、仮想化、Docker、K8s に精通しています。 テックネオテクノロジーサロン | 11月25日、Jiuzhou Cloud/ZStackはクラウド時代のネットワーク境界管理の実践について議論します。今すぐ登録するには画像をクリックしてください。 [51CTO オリジナル記事、パートナーサイトに転載する場合は、元の著者とソースを 51CTO.com として明記してください] |
<<: 今週の Github の人気プロジェクトの概要: 自然言語処理 Python ライブラリ spaCy が最もホットです!
>>: クラウド コンピューティング: ビジネスを破滅させる可能性のある 10 の間違い
外部リンク構築は、すべての SEO 担当者が注意を払う作業です。なぜなら、SEO プロセスでは、ほと...
現在、Taobao を宣伝する方法は無数にありますが、Taobao が使い古した方法は効果を発揮しに...
劉強東は8月15日、新浪微博の有名人影響力ランキングで1位になった。シナテクノロジー トレーシー20...
エッジ AI とクラウド AI は、現在企業が使用している最も重要なテクノロジーの一部であることがわ...
データ品質は、データ分析の結論の有効性と正確性の基礎であり、最も重要な前提と保証でもあります。データ...
vpsms は設立から 2 年未満の新しい会社であり、主に米国ロサンゼルスの Anchang データ...
CloudTech によると、パブリック クラウドの支出は 2019 年の 2,290 億ドルから ...
今日は、ウェブサイトの運営に関する一連の記事を公開し、個人的な運営経験や遭遇した困難を共有することを...
DoNews 4月18日ニュース 海外メディアの報道によると、フェイスブックの従業員を知る人物らが、...
あなたと私がまだ「頑張れ雅安」の悲しみに浸っている間にも、百度は世界を変えるペースを止めていません。...
張小龍が公開授業のスピーチで言及した5つの実験プロジェクトのほとんどは、WeChatバージョン8.0...
このガイドでは、継続的インテグレーション サーバーとして Jenkins を使用し、ビルド リポジト...
Spark Streaming は、マイクロバッチ処理に基づくストリーミング コンピューティング エ...
Raksmart の年末割引がさらにアップグレードされました。1Gbps の帯域幅と無制限のトラフィ...
ウェブサイトを最適化して検索エンジンから認知されるようにするには、まず検索エンジンにウェブサイトの存...