クラウド コンピューティング: インフラストラクチャの原則からベスト プラクティスまで: クラウド コンピューティングのフォールト トレランスと高可用性

著者: 禅とコンピュータープログラミングの芸術

1 はじめに

概要

インターネット業界では「クラウド」という言葉が話題になっています。「クラウド」は現時点では本当の意味でのクラウドコンピューティング技術ではありませんが、より便利で高速なサービスを人々にもたらします。クラウド コンピューティングは、多数の分散コンピューティング リソースを使用して、さまざまなビジネスの迅速な展開と自動化を実現し、さまざまな組織の作業効率を大幅に向上させます。ただし、クラウド プラットフォーム自体にも多くの隠れた危険性と制限があります。ハードウェア レベルでは、単一障害点によりプラットフォーム全体が利用できなくなる可能性があります。ソフトウェア レベルでは、クラウド環境で実行されているアプリケーションでさまざまなエラーや異常が発生することが多く、サービス障害が発生した場合のトラブルシューティングと回復が困難になります。クラウド コンピューティング プラットフォームの障害率と可用性をどのように減らすかが、現在注目の研究分野となっています。

これに基づいて、クラウド コンピューティングのフォールト トレランスと高可用性に関する最新の研究結果を読者に示すために、「クラウド コンピューティング: インフラストラクチャの原則からベスト プラクティスへ: クラウド コンピューティングのフォールト トレランスと高可用性」というタイトルの技術ブログ記事をまとめました。この記事では、クラウド コンピューティングの基本アーキテクチャ原理、フォールト トレランスと高可用性の定義、分散システムのフォールト トレランス原則と具体的なソリューションについて詳しく説明し、実際のケースを組み合わせてフォールト トレランスと高可用性の実際のアプリケーション シナリオを示します。この本が読者にインスピレーションを与え、クラウド コンピューティングのフォールト トレランスと高可用性の内容と原則をより包括的に理解するのに役立つことを願っています。

著者について

文/ヤンタオ

博士、クラウド コンピューティング センター長、リーダーの 1 人、マイクロソフト中国社長。かつては中国移動インターネット会社の AsiaInfo Technology に勤務しており、現在は Microsoft China の CEO を務めています。主な研究方向には、クラウド コンピューティング、ビッグ データ、機械学習、データ セキュリティ、ブロックチェーン テクノロジーが含まれます。彼は、分散システムのフォールト トレランスと高可用性に関する深い研究と実践経験があり、分散システムの設計と理論に熟達しており、Microsoft China (MSRA) の高可用性ストレージ システムと障害の設計に参加しています。 - Microsoft Azure クラウド プラットフォームの耐性メカニズム。彼は、国際的に有名な IT 書籍出版社である Publisher の責任著者でもあります。

1. クラウドコンピューティングの概要

クラウド コンピューティングは、ネットワーク、サーバー、およびソフトウェア リソースの共有を使用して、信頼性が高く、柔軟でスケーラブルなコンピューティング、ストレージ、およびデータベース サービスを従量課金制モデルで提供します。ユーザーは、高価な物理サーバーを購入したり保守したりすることなく、必要に応じて提供されたリソースを使用するだけで、基盤となるハードウェアの構成、インストール、導入、運用、保守などの面倒な側面を考慮することなく、ネットワークによってもたらされる利便性を享受できます。

クラウド コンピューティングの利点は主に次の側面に反映されます。

  • 従量課金制: ユーザーは、必要なサービスを取得するために実際に使用したリソースの料金のみを支払う必要があります。このアプローチにより、クラウド コンピューティング サービスに対する全体的な支出が大幅に削減されます。
  • 柔軟なスケーリング: クラウド コンピューティング サービスは柔軟性が高く、ユーザーはリソースの数を増減することでワークロードの規模を簡単に調整できます。
  • 従量課金制: ユーザーは、クラウド コンピューティング リソースを使用した時間に対してのみ料金を支払うため、高額な先行投資や長期的な運用コストを回避できます。

クラウド コンピューティングの普及に伴い、アプリケーションをクラウドに移行し、ハードウェアとソフトウェアのリソースをサードパーティ プロバイダーに引き渡す企業が増えており、クラウド サービス プロバイダーがプラットフォーム、サーバー、ネットワーク機器の保守を担当することになります。お客様がより高い価値を得ることができるよう、管理・運用保守業務を行います。したがって、クラウド コンピューティングは徐々に企業にとって必要なサービス モデルになってきました。

2. クラウドコンピューティングインフラストラクチャ

(1) クラウドコンピューティングインフラストラクチャアーキテクチャ

クラウド コンピューティングのインフラストラクチャ アーキテクチャは、次の 3 つの層に分かれています。

  • 最初の層: ネットワーク層。主にインターネットアクセス、負荷分散、DNS解決などの機能を提供します。
  • 2 番目の層: コンピューティング層。主にクラウドコンピューティングノード向けにCPU、メモリ、ディスクなどのハードウェアコンピューティングリソースを提供します。
  • 3 番目の層: ストレージ層。ネットワーク ファイル システム NFS や共有ファイル ストレージ SAN など、クラウド コンピューティング ノードにストレージ サービスを提供します。

(2) クラウドコンピューティングのネットワークアーキテクチャ

クラウド コンピューティングのネットワーク アーキテクチャは 2 つのレベルに分かれています。

  • データセンター内のクラウドネットワーク。ユーザーは、通常はパブリック ネットワーク接続を使用して、インターネット経由でクラウド コンピューティング サービスにアクセスします。
  • 地域をまたがるデータセンター間のクラウド ネットワーク。主に、ビジネスの継続性を向上させるために、遠隔地での複数の活動に使用されます。

(3) クラウドコンピューティングのソフトウェアアーキテクチャ

クラウド コンピューティング ソフトウェア アーキテクチャは 5 つの層に分かれています。

  • 最初の層: 基本的なソフトウェア層。これには主に、オペレーティング システム、仮想化ソフトウェア、ネットワーク プロトコル スタックなどのコア コンポーネントが含まれます。
  • 2 番目の層: クラウド サービス層。主にコンテナ、仮想マシン、データベースサービスなどのコアクラウドサービスを提供しています。
  • 3 番目の層: アプリケーション フレームワーク層。主に、Apache Hadoop、Apache Spark、Kubernetes などのオープンソース プロジェクトなどのアプリケーション開発フレームワークを提供します。
  • 4 番目の層: ツール層。主に Visual Studio Code、Postman、Nagios などのオープンソース プロジェクトなどの開発、デバッグ、監視ツールを提供します。
  • 5層目:ビジネス層。主にWebアプリケーション、モバイルアプリケーション、IoTアプリケーションなどの業務システムを提供しています。

3. クラウド コンピューティングの耐障害性と高可用性

(1) フォールトトレランスの定義

フォールトトレランス (Fault Tolerance) とは、障害を引き起こす特定の不可抗力要因または予期せぬイベントが発生した場合でも、システムが通常の動作を維持できる能力を指します。一般に、フォールト トレランスは次の 2 つのタイプに分類できます。

  • 耐災害性: 大規模な緊急事態が発生してもシステムは稼働し続け、崩壊せず、データの完全性も保証されます。
  • ビジネスフォールトトレランス: ビジネスに対応する際にシステムが正常に動作し、コンポーネントに障害が発生したりネットワークが混雑したりしても、サービスの品質に影響を与えずに顧客にサービスを提供し続けることができます。

クラウド コンピューティング環境におけるフォールト トレランスは、次のレベルに分類できます。

  • ハードウェア フォールト トレランス: つまり、システムのノードは障害後に自動的に切り替わり、システムの継続的な動作が保証されます。
  • ソフトウェア フォールト トレランス: システムのソフトウェア モジュールは、クラウド コンピューティング プラットフォーム ソフトウェアのバグなど、障害によって引き起こされるシステム麻痺を回避するために、障害後に自動的に回復できます。
  • データフォールトトレランス: システムに保存されたデータの冗長バックアップにより、データ損失を防ぎ、ビジネスデータのセキュリティを確保できます。

(2) 耐障害性の原則

1. ノードの耐障害性

ノードのフォールト トレランスは主に、ハードウェア リソースの冗長バックアップ、マルチホスト展開、および自動サービス切り替えに依存しています。以下に示すように:

ノードのフォールト トレランスの基本的な方法は次のとおりです。

  • 冗長ノードの提供: 冗長ノードは、複数のノードに同じハードウェア構成を提供し、問題が発生したときに自動的に切り替えることができます。
  • 自動サービス切り替え: 自動サービス切り替えは、単一ノードで問題が発生した場合に、別のノードにアクティブに切り替えることができます。
  • テスト フォールト トレランス: テスト フォールト トレランスでは、ソフトウェア レベルでノードの障害をシミュレートし、システムの信頼性を検証できます。
2. ソフトウェアの耐障害性

ソフトウェアのフォールト トレランスは、冗長バックアップとサービスの動的な再起動によって実現されます。以下に示すように:

ソフトウェア フォールト トレランスの基本的な方法は次のとおりです。

  • 冗長バックアップ: 同じソフトウェアを異なる物理マシンに展開し、対応するサービス インスタンスをそれぞれ展開することで、単一ホストで問題が発生した場合に別のホストに切り替えることができます。
  • サービスの動的な再起動: サービスの動的な再起動により、サービスの可用性が向上し、一部のサービス インスタンスに障害が発生した場合でもサービスを提供し続けることができます。
3. データフォールトトレランス

データのフォールト トレランスは、主にデータ レプリケーションとミラーリング テクノロジによって実現されます。以下に示すように:

データ フォールト トレランスの基本的な方法は次のとおりです。

  • データ レプリケーション: データを複数のコピーに保存します。コピーの 1 つに問題が発生した場合でも、自動的に切り替えてサービスを提供し続けることができます。
  • データ ミラーリング: ミラーリングを通じてリアルタイムでデータ コピーを生成することで、データが失われた場合にユーザーはデータを迅速に復元できます。

(3) フォールトトレランス実装プロセス

フォールト トレランスの実装プロセスは、フォールト トレランスの準備、フォールト トレランスの訓練、およびフォールト トレランスの実行の 3 つの段階に分けることができます。フォールト トレランスの準備フェーズでは、通常、次のタスクが完了します。

  • フォールト トレランス情報の収集: フォールト ログ、ノードのハードウェア構成、コンポーネント構成など、システムのすべての関連情報を収集します。
  • フォールト トレランス要件の分析: 時間要件、可用性要件、修復可能性要件など、フォールト トレランスのために満たす必要がある条件を分析します。
  • フォールト トレランス戦略を策定する: フォールト トレランス戦略を策定し、ニーズに応じてフォールト トレランスの目標、フォールト トレランス プロセスおよび対策を決定します。
  • フォールト トレランス対策を構成する: フォールト トレランス戦略に従って、監視ツール、アラーム ツール、フォールト トレランス スクリプトなどの自動化ツールを構成します。

フォールトトレランス訓練段階は、フォールトトレランス準備段階の後にあり、実際の状況に応じてフォールトトレランスのプロセスと対策を訓練します。含む:

  • フォールトトレランスの準備を実践する: 実際の環境でフォールトトレランスの準備を実践し、フォールトトレランス作業の有効性を評価します。
  • 訓練およびフォールト トレランス演習: 訓練および演習ラボでは、さまざまな障害シナリオをシミュレートし、フォールト トレランス戦略の有効性を検証します。
  • フォールト トレランス計画をドリルする: フォールト トレランス戦略をドリルし、フォールト トレランスの効果を観察し、実際の状況に応じて戦略を変更します。

フォールト トレラントの実行フェーズでは、次のようなフォールト トレラント戦略を運用環境に推進します。

  • フォールト トレランス計画を実行します。対応するシステム モジュールにフォールト トレランス戦略を設定し、記録を保持し、事前にフォールト トレランス時間を予約します。
  • フォールト トレランスのテスト: システム テストのテスターを支援し、障害があるかどうかを確認するテスターを紹介します。
  • 問題の処理: 問題を発見したら、問題の原因を分析し、対応する解決策を作成します。
  • フォールト トレランス対策の改善: 問題を改善および最適化し、フォールト トレランスのプロセスと対策を改善します。

(4) フォールトトレラントなアプリケーションのシナリオ

1. ノード障害

ノード障害には、ハードウェア障害とソフトウェア障害が含まれます。以下に示すように:

2. サービス障害

サービス障害には、サービスの停止、サービスの遅延、サービスの利用不能などが含まれます。以下に示すように:

3.ネットワーク障害

ネットワーク障害には、ルーティング エラー、トランスポート層エラーなどが含まれます。以下に示すように:

4. データ障害

データ障害には、保存されたデータの欠落、データの整合性の問題、データの破損などが含まれます。以下に示すように:

(5) クラウドコンピューティングの高可用性

クラウド コンピューティングの高可用性とは、主にシステムが正常に動作し、中断やダウンタイムを防ぐために必要な場合にサービスを迅速に復元する能力を指します。ここでは、クラウド コンピューティングの高可用性を説明するために、コンピューティング ノードの障害を例に挙げます。

クラウド コンピューティングの高可用性を実現するには、クラウド コンピューティング プラットフォームに次の機能を実装する必要があります。

  • 冗長ノード: クラウド コンピューティング プラットフォームは、同じハードウェア構成を持つ複数のコンピューティング ノード セットを提供できるため、自動切り替えを実現できます。
  • 高可用性ソフトウェア: クラウド コンピューティング プラットフォームで提供されるデータベース、メッセージ キュー、キャッシュなどのソフトウェアは、高可用性である必要があります。
  • 信頼性の高いネットワーク: クラウド コンピューティング プラットフォームのネットワークは、単一障害点を防ぐために冗長ネットワーク構造上に構築する必要があります。
  • 高可用性データ: クラウド コンピューティング プラットフォーム内のデータは、単一障害点を防ぐために冗長ストレージ構造上に構築する必要があります。
  • サービスの自己修復: クラウド コンピューティング プラットフォームは、障害が発生したノードを検出して自己修復し、サービスを迅速に復元できる必要があります。

クラウド コンピューティングの高可用性設計は、次の 3 つのレベルに分類できます。

  • データセンター層: ノード障害や自己修復など、データセンター内の高可用性を主に重視します。
  • データセンター間の同期: アクティブノードとスタンバイノードの切り替えなど、データセンター間の同期メカニズムに主に焦点を当てます。
  • アプリケーション層: サービスの呼び出しや応答など、クラウド コンピューティング プラットフォームの可用性に主に焦点を当てます。

おすすめ

転載: blog.csdn.net/universsky2015/article/details/133446727