クラスターとは何ですか? クラスター アーキテクチャを使用する理由
1. クラスターとは何ですか?
簡単に言うと、クラスターとは、高速通信ネットワークを使用して大規模なコンピューター サービス システムを形成する独立したコンピューターのグループ (複数) を指します。各クラスター ノード (クラスター内の各コンピューター) は独自のサービスを実行します。独立したサーバー。これらのサーバーは相互に通信し、連携してユーザーにアプリケーション、システム リソース、データを提供し、それらを単一システム モードで管理できます。ユーザーがクラスター システムを要求すると、クラスターはユーザーに単一の独立したサーバーのような印象を与えますが、実際にはユーザーが要求するのはクラスター サーバーのグループです。
例えば:
Google や Baidu でページを開くと、とてもシンプルに見えます。同じような Web ページが数分で作成できると思うかもしれませんが、実際には、このページの背後には、数千のサーバー クラスターの共同作業の結果が存在します。 。
クラスターを一言で説明すると、多数のサーバーが連携して同じことを実行します。これらのマシンは統合された調整と管理が必要な場合があり、1 つのコンピューター ルームに分散することも、全国のさまざまな地域にある複数のコンピューター ルームに分散することもできます。
2. クラスターを使用する理由は何ですか?
2.1 高性能
一部の国の重要なコンピューティング集約型アプリケーション (天気予報、核実験シミュレーションなど) では、強力なコンピューティング処理能力を備えたコンピューターが必要です。現在の世界のテクノロジーでは、大型マシンであっても計算能力が限られているため、このタスクを単独で完了することは困難です。計算時間が非常に長くなり、場合によっては数日、場合によっては数年以上かかる場合があるためです。したがって、この種の複雑なコンピューティング ビジネスでは、計算のために数十、数百、さらには数千台のコンピューターを集中させるコンピューター クラスター技術が使用されます。
LNMP 環境を構成する場合、毎回10 10を提供するだけで済みます。同時リクエストが10 件ある場合、単一サーバーの方が複数サーバーのクラスターよりも確実に高速になります。サーバー クラスターは、同時リクエスト数または総リクエスト数が単一サーバーの能力を超えた場合にのみ利点を発揮します。
2.2 価格対効果
通常、システム クラスタ アーキテクチャに必要なのは、数台または数十台のサーバー ホストだけです。簡単に数百万ドルかかる専用のスーパーコンピューターよりもはるかに安価です。同じパフォーマンス要件の下では、同じ計算能力を持つ大型コンピューターを使用するよりも、コンピューター クラスター アーキテクチャを使用する方がコスト効率が高くなります。
初期の頃、タオバオやアリペイのデータベースなどの基幹システムでは、数百万ドル相当のミニコンピューター サーバーが使用されていました。その後、使用コストや保守コストが高すぎ、拡張機器のコストが倍増して拡張のボトルネックとなり、人員の維持も非常に困難になったため、最終的にはPCサーバークラスタに置き換えられました。データベース システムは、Oracle データベースと組み合わせた小型コンピュータから MySQL に移行し、オープンソース データベースと PC サーバーを組み合わせました。コストが削減されるだけでなく、拡張やメンテナンスも容易になります。
2.3 スケーラビリティ
サービスの負荷やプレッシャーが増大した場合、クラスタシステムを単純に拡張するだけで、サービス品質を低下させることなく需要に対応できます。
通常、ハードウェアデバイスの性能を拡張したい場合は、新しいCPUやメモリデバイスを追加する必要があり、追加できない場合は、より高性能なサーバーを購入する必要があります。追加できるデバイスは常に制限されています。クラスタ技術を利用すれば、既存のクラスタアーキテクチャに新たにサーバを1台追加するだけで済むため、訪問されるお客様から見ると、システムサービスの継続性、パフォーマンスともにほとんど変わりません。アップグレードが完了し、アクセス機能が向上し、拡張が容易になります。クラスター システム内のノードの数は数千、さらには数万にまで増加する可能性があり、その拡張性は単一のスーパーコンピューターの拡張性をはるかに上回ります。
2.4 高可用性
単一のコンピュータ システムは、CPU、メモリ、マザーボード、電源、ハードディスクなどの機器の損傷という問題に常に直面します。コンポーネントの 1 つが壊れている限り、コンピュータ システムはダウンし、通常のサービスを提供できなくなる可能性があります。 。クラスタ システムでは、一部のハードウェアとソフトウェアに障害が発生する可能性がありますが、システム全体のサービスは7 × 24 7 × 24に維持されます。7×24時間ご利用いただけます
クラスター アーキテクチャ テクノロジにより、複数のハードウェア デバイスに障害が発生した場合でもシステムが動作し続けることができるため、システムのダウンタイムが最小限に抑えられます。クラスタシステムによりシステムの信頼性が向上するだけでなく、システム障害によるビジネス損失も大幅に削減され、現在ではほぼ100%削減されています。インターネット Web サイトの100%は7×24 7×247×サービスは24時間ご利用いただけます。
2.5 透明性
複数の独立したコンピュータから構成される疎結合クラスタシステムは、仮想サーバーを形成します。ユーザーまたはクライアント プログラムがクラスター システムにアクセスするときは、高性能で高可用性のサーバーにアクセスしているようなもので、クラスター内の一部のサーバーのオンラインまたはオフライン操作によってシステム サービス全体が中断されることはなく、ユーザーにとっても透過的です。
2.6 管理性
システム全体は物理的に大きいかもしれませんが、実際には単一のイメージ システムと同じくらい簡単に管理できます。理想的な世界では、ソフトウェアおよびハードウェア モジュールの挿入がプラグ アンド プレイになるでしょう。
2.7 プログラム可能性
クラスタシステムでは、さまざまなアプリケーションの開発や変更が容易です。
3. クラスターの一般的な分類
コンピュータ クラスタのアーキテクチャは、機能と構造に応じて次のカテゴリに分類できます。
- ロード バランシング クラスター
LBC
(またはと呼ばれますLB
- 高可用性クラスター、略語
HAC
- ハイ パフォーマンス コンピューティング クラスター、と呼ばれる
HPC
- グリッドコンピューティングクラスター
ヒント:負荷分散クラスターと高可用性クラスターは、インターネット業界で一般的に使用されているクラスター アーキテクチャ モデルであり、これらは私たちの調査の焦点でもあります。
3.1 負荷分散クラスター
負荷分散クラスターは、企業に、より実用的でコスト効率の高いシステム アーキテクチャ ソリューションを提供します。負荷分散クラスターは、多くの顧客の集中したアクセス要求による負荷圧力をコンピューター クラスター間で可能な限り均等に分散できます。顧客のアクセス要求の負荷には、通常、アプリケーション処理負荷とネットワーク トラフィック負荷が含まれます。このようなシステムは、同じ一連のアプリケーションを使用して多数のユーザーにサービスを提供するのに非常に適しており、各ノードはアクセス要求による一定の負荷圧力に耐えることができ、アクセス要求をノード間で動的に分散して負荷分散を実現できます。
負荷分散クラスターが実行されている場合、通常、1 つ以上のフロントエンド ロード バランサーを介して顧客のアクセス要求がバックエンド サーバーのグループに分散され、それによってシステム全体の高いパフォーマンスと高可用性が実現されます。一般に、高可用性クラスターと負荷分散クラスターは同様のテクノロジーを使用するか、高可用性機能と負荷分散機能の両方を備えています。
負荷分散クラスターの機能は次のとおりです。
- ユーザーのアクセス要求とデータ トラフィックを償却します (負荷分散)。
- ビジネス継続性の維持、つまり7×24 7×247×24時間サービス (高可用性)。
- Web サーバーやデータベース サーバーなどのサービスに適用されます。
ロード バランシング クラスタ用の一般的なオープン ソース ソフトウェアにはLVS
、Nginx
、Haproxy
などが含まれます。以下に示すように:
ヒント: さまざまなサービスの切り替え時間は数秒かかり、DB サービスの切り替え時間は Web サービスの切り替え時間よりも明らかに長くなります。
3.2 高可用性クラスター
一般に、クラスター内のいずれかのノードに障害が発生すると、そのノード上のすべてのタスクが他の正常なノードに自動的に転送されます。このプロセスはクラスター全体の動作には影響しません。
クラスター内のノード システムに障害が発生すると、オペレーターのクラスター サービスが迅速に応答し、システムのサービスをクラスター内の他の稼働システムに割り当てます。コンピューターのハードウェアとソフトウェアのフォールト トレランスを考慮すると、高可用性クラスターの主な目的は、クラスターのサービス全体を可能な限り利用可能にすることです。高可用性クラスター内のプライマリ ノードに障害が発生した場合、この期間中にバックアップ ノードに置き換えられます。スタンバイ ノードは通常、プライマリ ノードのミラーです。マスター ノードを置き換えると、マスター ノードが提供するサービス (IP アドレスやその他のリソースを含む) を完全に引き継ぐことができるため、ユーザーにとってクラスター システム環境が一貫したものになります。つまり、ユーザー アクセスには影響しません。
高可用性クラスタリングにより、サーバー システムが可能な限り迅速に実行され、応答することが可能になります。多くの場合、複数のマシン上で実行されている冗長ノードとサーバーを利用して相互に追跡します。ノードに障害が発生した場合、その代替ノードが数秒以内にその役割を引き継ぎます。したがって、ユーザーにとって、クラスター内のいずれかのマシンがダウンしても、(理論上は) ビジネスに影響はありません。
高可用性クラスターの役割は次のとおりです。
- 1台のマシンがダウンすると、別のマシンがダウンしたマシンのIPリソースやサービスリソースを引き継いでサービスを提供します。
- これは、ロード バランサー、プライマリ データベース、プライマリ ストレージ ペア間など、ロード バランシングの実現が難しいアプリケーションでよく使用されます。
高可用性クラスターに一般的に使用されるオープンソース ソフトウェアにはKeepalived
、Heartbeat
などが含まれます。アーキテクチャ図を次の図に示します。
3.3 高性能計算クラスタ
ハイパフォーマンス コンピューティング クラスターは、並列コンピューティングとも呼ばれます。通常、高性能コンピューティング クラスターには、複雑な科学的問題 (天気予報、石油探査、核反応シミュレーションなど) を解決するためにクラスター用に開発された並列アプリケーションが含まれます。高性能コンピューティング クラスターは、外部からはスーパーコンピューターのように見えますが、このスーパーコンピューターの内部は数万から数万の独立したサーバーで構成され、共通のメッセージング層で通信してアプリケーションを並列実行します。本番環境では、実際にタスクを切り分けてクラスタノードに送信して計算し、計算後に結果を返し、新たなタスクを継続して計算する、ということを繰り返します。
3.4 グリッドコンピューティングクラスタ
ほとんど使用されないため、ここでは省略します。
4. 一般的に使用されるクラスタ ソフトウェアおよびハードウェアの導入と選択
4.1 企業における一般的なクラスタ ソフトウェアおよびハードウェア製品
-
インターネット企業で一般的に使用されているオープンソース クラスタ ソフトウェアには、、、、、、があり
Nginx
ます。LVS
Haproxy
Keepalived
heartbeat
-
インターネット企業で一般的に使用されている商用クラスタ ハードウェアには、、、、、などが含まれます。
F5
動作モードは、 の動作モードと同等です。Netscaler
Radware
A10
Haproxy
Taobao、Ganji.com、Sina などの企業はNetscaler
負荷分散製品を使用しています。クラスタハードウェアの製品図Netscaler
を以下に示します。
クラスタ ハードウェアF5
製品を次の図に示します。
4.2 クラスタソフトウェアおよびハードウェア製品の選択方法
F5
企業のビジネスは重要だが技術力が弱く、製品の購入やより良いサービスの提供にお金をかけたい場合、 、などのハードウェア負荷分散製品を選択できます。これらの企業のほとんどは伝統的な大規模企業ですNetscaler
。Radware
銀行、証券、金融業界、BMW、メルセデスベンツなどの非インターネット企業の規模拡大
ポータル Web サイトの場合、タオバオ、テンセント、新浪など、ほとんどのソフトウェア製品とハードウェア製品が単一製品のリスクを共有するために使用されます。資金を調達した企業は、Ganji.com などの Web サイトなどのハードウェア製品を購入します。
中小規模のインターネット企業は、初期段階では利益が見込めない、または利益が非常に低いため、オープンソースや無料のソリューションを使用して問題を解決したいと考えており、保守のために専門の運用保守担当者を雇用します。例: 51CTO など。
これに対し、市販の負荷分散製品は、コストが高く、性能が良く、安定性が高いものの、二度開発ができないという欠点があり、オープンソースの負荷分散ソフトウェアは、運用保守担当者のより高い能力が求められます。現在のインターネット業界では、オープンソースの負荷分散ソフトウェアの使用が好まれています。
4.3 オープンソースのクラスタソフトウェア製品の選び方
中小企業のインターネット企業の Web サイトへの同時訪問数と合計訪問数がそれほど多くない場合、負荷分散は構成が簡単で簡単であるため、負荷分散を最初の選択肢にすることをお勧めしますNginx
。Nginx
安全で安定して使用でき、コミュニティが活発で、ユーザー数が徐々に増加しており、これが人気の傾向となっています。負荷分散を実装する別の同様の製品は (L4 と L7 の負荷をサポートしており、同様に優れていますが、コミュニティHaproxy
はそれほどNginx
活発ではありません)。
Nginx
負荷分散の高可用性機能を検討する場合は、インストールKeepalived
と設定が簡単で、使いやすく、安全で安定しているため、このソフトウェアを第一選択とすることをお勧めします。Keepalived
サービスに似た可用性ソフトウェアHeartbeat
(使用方法はより複雑であり、初心者には推奨されません)
大規模なエンタープライズ インターネット企業の場合、負荷分散製品を使用してLVS + Keepalived
フロントエンドで4を行うことができます。レイヤ4転送 (通常はアクティブ/スタンバイまたはアクティブ/アクティブ。拡張する必要がある場合は、DNS を使用するか、フロントエンドで OSPF を使用できます)、バックエンドは7 7 をNginx
またはHaproxy
実行しますレイヤ7LVS + Heartbeat
転送 (100 ユニットまで拡張可能)、アプリケーション サーバーが続きます。データベースとストレージの負荷分散と高可用性を重視する場合は、これを選択することをお勧めします。TCP 転送をサポートし、DR モードは非常に効率的ですLVS
。Heartbeat
連携することができDRBD
、VIP だけでなく、スイッチングはブロック デバイス レベルのデータ同期 (Distributed Replicated Block Device
、DRBD
)、およびリソース サービス管理もサポートできます。