web-dev-qa-db-ja.com

すべて同じハードウェア上で複数のVMを使用して負荷分散することには利点がありますか?

一部の同僚は、すべて同じハードウェアで実行されている異なる仮想マシン上の複数のWebサーバー(IIS7)を使用したWeb負荷分散スキーマを提案しています。

これは本当に有利な設定ですか?すべてのマシンは64ビットであるため、メモリアドレス指定は問題になりません。

5
srmark

私の見方は次のとおりです。仮想化を使用すると、処理リソースの一部をサンドボックス化できます。 Webサーバーを個別のユニットに分割します。別のサーバーを引き継いでサーバーをアップグレードしたり、問題が発生した場合にリクエストをリダイレクトしたりできます。

VMのスナップショットを作成して、本番環境の問題からロールバックできます。

VMを入手した場合は、別のハードウェアに簡単に移行できるため、ベアメタルセットアップを移行する(まったく新しいWebサーバーを構成する)代わりに、VMを新しいに移動するだけです)マシン、または「適切な」クラスターをセットアップした場合、VMは、最初から再構成するのではなく、本番環境にロールインするのに適した位置になります。

必要に応じて、NICに個別のVSwitchを設定して、トラフィックフローを制御できます。

VMホストがWebサイトを処理する)に複数のマシンを配置することで、将来的に柔軟性とオプションが向上すると思います。

一方、ホストが1つしかない場合は、障害点に関する問題が発生する可能性があります。少なくとも2つのNICがある場合、これはそれを軽減するのに役立ちます(たとえば、ニーズやセットアップに応じて、NICを特定のVM専用にすることができます)。ホストの構成によっては、いくつかの問題が発生します。たとえば、ディスクボリュームが最適でない場合、I/Oの競合が原因でパフォーマンスが低下し、当然、プロセッサはVM間でリソースを分割する必要があります。

これを仮想化する上での私にとっての強みは、将来の管理と移行のパスが簡単になることです。マシンからハードウェアを抽象化する方がはるかに簡単だと思います。より良い/より大きな/より速いものを購入すると、ダウンタイムと構成の手間を減らして、確立した作業セットアップをそのハードウェアに移行できます。または、ホスト間でマシンのバランスを取ることができます。そして私たちの場合、問題が発生した場合でも可能性があります絶対にそれをしなければなりませんでしたハイパーバイザーを使用してホストサーバーの修復部品が到着するまで、サーバーをワークステーション上のVMとして実行しますユーザーが実際に違いに気付くことのない一時的なセットアップ。

また、スナップショット(このユースケース)は、更新によってシステムが再起動時に文鎮にならないようにするのに最適です。すべてがうまくいけば、スナップショット、更新(または構成の変更)、再起動、テスト、およびスナップの削除を行います。

それで、それは理にかなっていますか? I/Oの競合が発生するため、サイトのトラフィックが多い場合はそうではないかもしれません。サイトの負荷が低く、将来別のホストを取得すると思われる場合は、それを強く検討します。仮想化からの抽象化により、マシンの追加や構成の変更が容易になると思いますが、パフォーマンスが低下している場合は、仮想化によって発生するオーバーヘッドが少し低下する可能性があります。

8

1つのインスタンスのみを実行するよりも多くのオーバーヘッドが発生します。唯一の利点は、1つのVMがダウンした場合、フェイルオーバーとして機能する準備ができていることです。もちろん、ハードウェアが多ければ信頼性は高くなります。

これの考えられる利点の1つは、後でVMを他のハードウェアに移動してより多くのリソースをサブスクライブできることですが、容量を追加するときに負荷分散にサーバーを追加するだけで同じ利点を得ることができます。

3
Falcon Momot

はいと言います。これにより、VMの1つを停止してメンテナンスを実行し、もう1つを起動してエンドユーザーにコンテンツを提供することもできます。

2
alexus

答えるのはそれほど簡単ではありません...それは何千ものことに依存しています;-)

すべてのIO(共有メモリ、ディスク、ネットワーク、CPU)のボトルネックを除外すると、最後の部分まで実際にスリム化されます。

Apacheの場合、「500接続で1インスタンス」よりも、「100接続で5インスタンス」を実行する方が効率的かもしれませんが、これは複数のApacheを開始するだけでアーカイブされる場合もあれば、Apacheを分類する、nginxなどを配置する方が適切な場合もあります前に(接続ポーリングがはるかに優れていますが、アプリの実行の背後にApacheがあります);-) .. ..

それとは別に、ホストノードに「1つの仮想サーバー」があると、クローン作成、バックアップ、フェイルオーバーがより簡単になります。

同じことを行う複数の仮想環境は、おそらくメリットがありません(または別の方法でより適切にアーカイブできるメリット)

1つの例外はフォールトトレランスです。そのため、同じハードウェア上に2つの仮想マシンがあると、SoftwareFails(1つのApacheでのみセグメンテーションフォールト)を防ぐことができますが、適切なセットアップが必要になります。

-

一般:

「活力化」はい!バックアップ、クローン、移動

「同じハードウェアで同じイメージを複数回実行する」いいえ(はい、それが理にかなっている場合もあります)

パフォーマンス:やるべきことがもっとある

FaultTolerance:softwareFailsのみ、私のmonintで実行できないことは何もありません

1
Tabakhase