大規模なサイトが、仕様の良い1台のサーバーではなく複数のサーバーを使用するのはなぜですか?


42

Stack Overflowは10台以上のサーバーを使用してStack Overflowサイトにサービスを提供していることを読みました。サーバーが異なれば、リバースプロキシ、データベースサーバー、HTTPサーバーなどの機能も異なります。

これらの仕様を持つ強力なスタンドアロンの単一サーバーを見てきました。

  • 2 x Xeon E5-2630v2 @ 2.60 GHz、合計12コア、24スレッド。30 MB
  • 64 GB ECC Reg。1600 MHzで最大768 GB DDR3
  • 4 x 120 GB Intel 520/530シリーズ(80kランダムIOPS、最大550 MB / s)
  • 専用のイーサネット管理ポートを備えたHP iLo4 Advanced。

768 GB RAM、20 TB + HDD、4 + x Xeonなどのより高い仕様の単一サーバーを使用してみませんか?多くのサーバーを使用する利点、または単一の高仕様サーバーを使用することの欠点は何ですか?


4
SEには10以上のサーバーがあるだけでなく、フェールオーバーのために別のデータセンターに重複したセットアップがあります。そして、FacebookやGoogleのすべてのトラフィックを処理できるサーバーはまだ発明されていません。
マイケルハンプトン14年

8
そのスーパーサーバーを再起動する必要がある場合はどうなりますか?
リース14年


1
並列処理...
モニカとの明るさの

1
@SSpoke:ポートごとに1つの接続に制限されません。重要なのは、(送信元アドレス、送信元ポート、送信先アドレス、送信先ポート)の組み合わせが一意であることだけです。
デビッド14年

回答:


58

これまでのところ、単一の強力なサーバーのみをアップグレードできます。最も強力なサーバーを使用できるようにすると、サイトをサーバー間で分割したり、より効率的にしたりせずにサイトを拡大することはできません。

コスト要因もあります。非常に強力な単一サーバーは、半分の強力な2台のサーバーの10倍のコストがかかる場合があります。最も安価な価格でハードウェアを購入し、それが機能する唯一の物であるため、より高い価格に縛られないようにしたいと考えています。

稼働時間と信頼性も関係します。2台以上のサーバーを使用すると、1台が故障したり、メンテナンスのためにオフラインになったり、サイトが稼働し続ける可能性があります。単一のサーバーでそれを行うことはできません。

ほとんどの大規模なWebサイトでは、ロードバランサーと複数のサーバーを使用しています。私はトリップアドバイザーで働いていました。トリップアドバイザーのアーキテクチャと、複数のサーバーで高いスケーラビリティを実現する方法に関する素晴らしい記事を公​​開しました。

単一のサーバーで高度なサービスを実行することが可能です。私が知っている1つの例は、Mailinatorです。著者はMailinatorのアーキテクチャに関する記事を発行しまし。彼は、新しいサーバーを購入するのではなく、コードをより効率的にすることに重点を置いています。これは結局、彼のサービスがどのように機能するかを決定する制限になります。単一のマシンがメールを削除するまで数時間しかメールを保持せず、さらに多くのスペースを確保します。

単一サーバーのアップグレードは、垂直スケーリングと呼ばれます。サーバーを追加することは、水平スケーリングと呼ばれます。このトピックの詳細については、2つを比較するいくつかの記事があります。


9
複数のサーバー(数台以上)があり、一部のCPUが停止した場合、すべてを実行し続けるために他のサーバーがあります。1台のサーバーがあり、それが壊れたら、完了です。
マルタイン

2
人々が忘れているもう1つの点は、サーバーを最大容量またはその近くで実行することは必ずしも良いことではないということです。私たちは、一般的なルールとして最大約半分の容量でグローバルテレコム(無名のまま)でサーバーを測定しました(その背後にある実際のロジックはありません-メトリックを監視するだけです)。サブシステム間のバランスがもちろんOSによって競合する可能性があるため、ハードウェアの容量に関係なく、ある時点で計算キュー、IOサブシステム、メモリのアドレス指定とスワッピングなどで問題が発生し始めます。より多くを可能にする堅牢なシステムがいくつかあります。
closetnoc 14年

@closetnocそれを記述する最良の方法は、ボトルネックを回避しようとしていることだと思います。適切にバランスの取れたシステムは、理論的には悪影響なしで100%の容量で実行できますが、システムが待機しなければならないもの(CPU時間、I / O、バス転送など)はパフォーマンスの問題を引き起こします。システムを最大容量の半分で実行することで、このようなボトルネックに陥らない適切な場所を見つけました。
Thebluefish 14年

@Thebluefishはい、いいえ。私は古いシステム内部の男です。ほとんどのシステムには、OSおよび内部ハードウェア内にボトルネックがありますが、高速のRAID、メモリ、CPUなどで補うことはできません。同様に、OS内にも制限があります。WindowsはVMSに基づいていたため、かなり優れていましたが、VMSのように調整できない制限がまだありました。Linuxは明らかに優れています。一部のサーバーは、使用しているHPなどのハードウェア制限がほとんどないように設計されています。ただし、それでも、割り込みとCPUスワップが増加するため、%100の容量で計算キューを実行することはお勧めできません。
closetnoc 14年

2
水平方向にスケーリングすることのもう1つの利点は、単一のサーバーに向けることができる電力、帯域幅、冷却などが非常に多いことです。Netflixには、無限の処理能力とメモリを備えたボックスがありますが、トラフィックを取り出すのに十分な太さのパイプがなければ、それらは役に立たないでしょう。
クリスヘイズ14年

32

グレース・ホッパー少将から:

より大きなコンピューターの構築について:「開拓時代には強引に牛を使っていました。1匹の雄牛が丸太を動かせなかったとき、彼らはより大きな雄牛を育てようとしませんでした。しかし、より多くのコンピューターのシステムのために。」

ソース


1
私は初期のキャリアでグレース・ホッパーに何度か会い、彼女と一緒に時間を過ごしました。彼女は本当に何かでした!かっこいい猫!私たちは皆彼女を愛していました。彼女は彼女の時間と恵みにとても親切で寛大でした(しゃれが意図されていました)。彼女を引用してくれてありがとう!帰り道のための1つのアップ投票。ありがとう!
closetnoc 14年

5
これは関連する引用ですが、質問には答えません。ここで一人の根拠のない意見は価値があるべきではありません。
TankorSmash 14年

7
@NoahSpurrierそれは実際に質問のどの部分にも答えていないからですか?根拠のない例えをするだけの引用であり、なぜより多くのサーバーを撮影する必要があるのを説明していません。
クリスヘイズ14年

2
私はそれが有用な答えであると言いますが、特定の理由を詳述しないので、答えとして受け入れられるべきではありません。ただし、負荷分散の原理のオーバーアーチの理由を明確に述べています。
イアンT.スモール14年

1
@Bobson私は彼女が重要なプレーヤーであると主張しているわけではありません。ただいい感じの文章や2つではなく、いくつかのコンテンツで答えを見たいと言っているだけです。
TankorSmash 14年

10

Stephenは、システムアーキテクチャを決定する際に考慮すべき主要な考慮事項、つまり垂直スケーリングと水平スケーリングのトレードオフについて説明します。他のいくつかの考慮事項を追加します。

  • 懸念の分離:リバースプロキシ、DB、コンテンツサーバーなど、根本的に異なる複数のシステムについて言及します。メンテナンスとセキュリティの観点から、これらの責任を異なるシステムに分散して、異なるOS(バージョン)を実行できることは明らかに有利です必要に応じて個別に更新でき、侵害されたときに他のサービスに影響を与えません。
  • コンテンツ配信:これはWebサーバーの最終的な目標であり、分散モデルに適しています。システムを複製して地理的に分散させることができるため、長距離接続の遅延が最小限に抑えられます。また、冗長性も考慮されています。大規模なWebサイトでは、ロードバランサー(まだ別のサーバーのセット!)を使用して、自動フェールオーバーを可能にし、常にサービスを維持します。

実際には、別のレベルに垂直スケーリングを行うサーバークラス全体があります。メインフレームです。これらにはさまざまな利点(速度、信頼性)と欠点(コスト)がありますが、通常、トランザクション処理(クレジットカードの購入、銀行取引など) 、選挙および国勢調査のデータ)。たとえば、銀行は、バックエンドがメインフレームを介してトランザクションを処理する一方で、垂直にスケーリングされたWebサーバーからサイトにサービスを提供します。

興味深いことに、PaypalやVisaなどの企業は、メインフレームから数千の水平にスケーリングされたシステムのクラスター化されたシステムに移行しています。急速に進化するデジタルの世界では、メインフレームでさえ水平スケーリングの上限に達しています。

「すべての可用性とパフォーマンスの要件があるため、メインフレームで支払いの処理を続けることができませんでした。

出典:ComputerWorldUKの Adam Banks


8
  • サイズ制限。複数のプロセッサ、メモリチップ、およびディスクを備えた単一のボックスが均一であるふりをするのが好きです。これは完全に真実ではありませんが、数値が大きくなりすぎないのであれば十分です。熱、エネルギー、近接性などには技術的な制限があります。つまり、1台のサーバーの大きさには常に実用的な制限があります。

  • スケーラビリティ-IPCに共有メモリを使用する単一サーバーシステムと、ネットワーキングまたはクラスタリングを使用するマルチサーバーシステムには大きな違いがあります。ただし、2台のサーバーと200台の違いはかなり小さくなります。スケーリングするシステムを構築した場合、問題が発生する前にそれを大幅にスケーリングすることができます。そもそも。

  • 復元力-1つのサーバーは、1人の管理者が「おっと」する場所です。または、その錫全体へのサービスが中断されることを意味する物理的な問題があります。(データセンターの水漏れ、誰かがラックに衝突して倒すなど)。複数のサーバーをデータセンター内に分散することも、地理的に分散させることもできます。また、すでにアプリを配布している場合、「中」サイズのマシンでのスケーリングは、少数の大型マシンでの同じ量のCPU /メモリ/ IOよりもほとんど常に安価です。

  • 更新-サーバーにパッチを適用すると、サービスが不安定になったり、再起動が必要になったり、ダウンタイムが必要になります。同じことを実行している4つのサーバーがある場合、これを行うためにしばらくの間、1つを停止することができます。また、パッチ適用/更新サイクルがうまくいかない場合は、サービスを停止します。


7

小規模で問題を取り上げましょう。メール、ActiveDirectory、ファイル共有、および会社のWebサイトを実行する1つのサーバーを備えた小さなオフィス。

ハッカーがヒットし、IISが台無しになっているため、再起動する必要があります。または、Exchangeは更新と再起動が必要です。または、Active Directoryが破損しました。

これらの分離された「1つのサービスがダウンしている」問題はサーバー全体に影響を与えるため、そのサーバーで共有しているものはすべて、再起動などの理由により影響を受けます。

実際のIT担当者がそのサーバーを見つけて見たら、それらを別々のサーバーに分割することをお勧めします(そしてバックアップドメインコントローラーサーバーを持つこと)。

「すべての卵を1つのバスケットに入れないでください」という古い格言です。

その哲学はウェブサーバーに適用されています。Webサーバーが1つしかなく、Webアプリ(新しいMyFaceLink.com)を公開し、それが非常に人気を博した場合、新たな問題が発生します。ユーザーがサイトにいる間、サイトをメンテナンスのためにダウンさせることはできません。クラッシュしたり、ユーザーが多すぎたりすると、うんざりします。世界最大の単一サーバーでさえ、10億のFB変換者がやってくることに圧倒されます。

したがって、同じ「バスケット内の卵」の理由で、負荷分散が作用します。サイトを3台のサーバーに分散し、1台がダウンした場合、残りの2台が容量を処理します。パッチを適用する必要がある場合は、一度に1つずつ行うだけで、誰も気づきません。

簡単に言えば、メガサーバーの価格や、本当に負荷を処理できるかどうかではありません(可能ですが)。単一障害点についてです。ビジネスが十分に忙しくなり、8〜5人で作業する5人のユーザーではなく24時間365日稼働すると、ダウンタイムは許容されません。スケジュールされた停止は、スケジュールするのが困難です。したがって、負荷を分散します。


単一障害点の問題に名前を付けるための+1 。
デビッドケーリー14年

1

1台のマシンに2つの作業を行わせようとすると、マシンの一部はより大きくする必要がありますが、同じ速度で実行されます。一部は同じサイズのままで、より高速に実行する必要があり、一部はより大きくする必要がありますそして速いです。小さいマシンの役割を大きいものに結合すること、または大きいマシンの役割を小さいものに分割することが理にかなっている程度は、マシンの最も高価な部分に適用されるスケーリングの種類に大きく依存します。あまりにも多くのマシンのワークロードが1つの巨大な巨像に結合される場合、コストは、大きくなり、増加したワークロードをより速く処理します。そのようなもののコストが速度とサイズに関して線形であったとしても、作業負荷を2倍にすると、処理するマシンのコストが2倍以上になります。速度が特定のポイントを超えて増加するという事実により、(はるかに)線形よりも大きなコスト増加が効果を拡大します。

実際には、実用性が労働の細分化を余儀なくする不動点はありません。実行する作業の種類に応じて、2つのワークロードを組み合わせたマシンは、2倍未満のメモリで処理できるか、2倍未満の速度で実行されます。一方、マシンに与えられるタスクが多いほど、メモリと速度の要件がワークロードに比例してスケーリングを開始する範囲が大きくなります。さらにそれを超えると、ワークロードが2倍になるたびに相対コストが増加します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.