質問

比較的少数の物理ホストで比較的多数の仮想マシンを実行する必要があります。各仮想マシンはそれほど多くのことをしていません-基本的に1つの基本的なネットワークサービスを実行するだけで十分です-SMTPなどを考えてください。さらに、それぞれの負荷は非常に軽くなります。

残念ながら、数字は5つの物理ホスト上の100台の仮想マシンのようなものです。各ホストはまともです-2ギガバイトのRAMと1テラバイトのディスクを備えたコア2。ただし、ubuntuのvmwareイメージを取得し、そのマシンに投げるだけで100インスタンス近くになり、20に近いものになることはわかっています。

では、ホストとイメージの比率に希望はありますか?また、この目的に最適な仮想マシンの実装はどれですか。つまり、リソースの効率的な全体的な使用ですか。ここでは主にvmwareを使用しますが、Xenなどに切り替えることで大きなパフォーマンス上の利点が得られる場合は、それを検討するはずです。

洞察力を事前にありがとう:)

注:最終的にOpenVZを使用しましたが、かなりうまくいきました。 ubuntuテンプレートのデフォルトパラメータにより、マシンごとに約40インスタンスを実行できます。

役に立ちましたか?

解決

それらに合うように、3つの主要なフロントがあります:

  1. 低いオーバーヘッド。該当する場合、OpenVZ、Vserver、chrootが理想的です。各インスタンスが独自のカーネルを持つ実際のVMである必要がある場合は、VMWareの代わりにKVM / Xenを試してください。成熟度は低いかもしれませんが、柔軟性ははるかに高くなります。

  2. 小さいゲスト。 Ubuntu JeOSを試すか、busyboxで独自にロールバックしてください

  3. ゲスト間で可能な限り共有します。単一のR / OイメージをすべてのOSと共有して、各ゲストの小さなR / Wイメージを/ var、/ home、/ etcなどにマウントしてみてください

他のヒント

それに関するいくつかの問題...

  1. Vmwareサーバーでは、テスト専用でない限り、サーバーハードウェアが本当に必要です。
  2. Xen ServerやVMware ESX、ESXi(無料)、Hyper-Vなどのベアレベルの仮想化ソリューションを使用してください。
  3. 20-1では、より多くのRAMが必要になります。計算が足りません。最小限の機能を備えたマシンには、少なくとも256を備えた完全にストリップされたLinuxでない限り、512が必要です。20x256= 5gb + 5-10%のオーバーヘッド。これらの仕様では実際には起こりません。
  4. 20-1では、より多くのプロセッサが必要になります。各マシンにはvCPUがあります。コア2で共有されるということは、プロセッサあたり10-1を意味します。良くない。デュアルクアッドコアのDell 1950、16GB RAMでほぼ20を実行します。すばらしい。
  5. 選択するものは何でも、メモリをオーバーサブスクライブします。どれがあなたを許可するか正確にはわかりません。 Vmwareは動作しますが、警告が表示されます。
  6. 聞いたことはありますが、XenServerがパフォーマンス上の利点を提供するという証拠はありませんが、10-20%を超える主張はありません。

幸運

100個のフル機能のオペレーティングシステムが本当に必要ですか?

Webサーバーがすでに使用しているアプローチを採用しないのはなぜですか?仮想Webサーバー/ホストを意味します。

たとえば、単一の構成ファイルを使用して多くの仮想サーバーをホストする単一の物理サーバーにインストールされたApache HTTPDを使用します。さらに、異なるIPアドレスでDNSを構成するか、多数の仮想ネットワークインターフェイス(eth0:0、eth0:1、...、eth0:n)が必要になります。

これは、世界に公開されているいくつかのサービスだけが本当に必要で、負荷が高くない場合に機能するはずです。

もう1つの可能性は、ごく少量のメモリで実行できる軽量のLinuxディストリビューションを使用することです。 DamnSmallLinuxまたはDDWRTのバリエーションのようなもの。わずか16MBのメモリで実行できるため、1台のマシンで20以上を実行できます。

VMware ESX / ESXiはどちらも派手なメモリプーリング機能を備えているため、VMware ESX / ESXiを実行することをお勧めします。基本的には同一のメモリページを複数のゲスト間で使用するため、同一のゲストを多数実行している場合、ホスト上で他のVMよりも多くのメモリを使用できます。

「透明ページの共有」について少し確認してください。 このブログエントリ、およびそれに関するコメントこちら

ホストごとに20ゲスト、それぞれ2 GBのRAMでプッシュしていることは明らかですが、すべての余分なサービスとアプリを削除し、1つのゲストイメージをビルドしてインストールする前にクローンを作成する場合特に専用のアプリを使用すると、特にVMwareリンクが40ゲストを実行している4Gbホストを示しているので、ちょうど逃げることができます!

フルデスクトップと9つの仮想マシンを実行する1つのクアッドコアマシンがあります。これはテストマシンなので、あらゆる種類のゲストを使用します。 ramの使用で最も良いのはdebian-kfreebsdと小さなコアlinuxのようです。小さなコアLinuxは10MのRAMを使用して何もしません。いくつかのサービスを追加すると、32Mになる可能性があるため、1GBのRAM内で32のVMを実行できます。 2GBあるので、ハイパーバイザーとオーバーヘッド(私はkvmを使用しています)を含む48台のマシンを実行できます。したがって、5台のマシンでは最大240台のマシンになります:D

私はすぐにそれを試すつもりだと思います:D

ところで。 vmの負荷は軽いので、cpuloadやdiskloadには頼りませんでした。また、これらの数字には冗長性がまったくありません。

ゲストを十分にスリム化できるなら、おそらくそれを行うことができます。Xなし、最小限のサービスが開始されるなど。slackwareまたはubuntuサーバーを見てください。 XenはWebホスティング会社の間で人気があるようですので、一見の価値があります。

CPU使用率はアプリによって異なりますが、さらにRAMを購入する必要があるかもしれません!

各ネットワークサービスインスタンスを独自の仮想マシンに区分する必要があるのはなぜですか?ユーザーを相互に分離する必要はないが、プロセスとトラフィックを分離する必要がある場合は、5つのサーバーをそのまま使用し、インスタンスごとに個別のプロセスを起動することをお勧めします。各インスタンスは、個別の仮想インターフェイスにバインドされます。

たとえば、仮想インターフェイスを設定し、それにIPアドレスを割り当てます。作成するインスタンスのhttpd.confファイルまたはsendmail.cfファイルを作成します。構成ファイルで、デーモンを仮想インターフェース(およびそのインターフェースのみ)にバインドするように指定します。デーモンを起動します。

各インスタンスに対して繰り返します。多数のプロセス(数千ではないにしても数百)が実行され、それらの合計は数十のVMよりも少ないメモリを使用します。さらに、OSは未使用のものをディスクにスワップアウトできます。

計算を行うと、各マシンで平均100 MBのRAMが得られます。これは大したことではありません。 VMのオーバーヘッドは非常に大きく、各インスタンスで完全なOSを実行する必要があります。

いくつかの本当に小さなフットプリントのOSを使用していますか( http://www.damnsmalllinux.org/ ? )さらに時間をかけてそれをさらに削除するか、より大きなマシンを取得します。

マシンがそれほど安くないので、RAMをたくさん搭載した64ビットOSにアップグレードする傾向があります。

VMWareには、「プール」できるクールなオプションがあります。物理マシンのグループ。仮想マシンは、VMの動作を中断することなく、使用率の低いハードウェアに自動的に移動します。

むしろ広告リンク。

vmwareに制限されていますか? オペレーティングシステムレベルの仮想化を検討しましたかより少ないオーバーヘッドでより多くのVMを取得できます、各VMが同じカーネルを実行できる場合。

いくつかの考え...

1-他の人が指摘したように、メモリ演算は機能しません。RAMがさらに必要になります。

2-サービスによっては、事前に構成された仮想マシンを見つけることができる場合があります。たとえば、 Astaro には、無料のファイアウォールソフトウェア用のVMセットアップがあります。適応できる非常に小さなLinuxディストリビューションを見つけることもできます。

3-たぶん何かが足りないかもしれませんが、Ubuntuはすでにかなり近いように聞こえます... 5台のマシンで1台のマシンにつき20インスタンスが必要な100インスタンスを取得します。ただし、将来の成長のための余地はあまりありません...

お気をつけて、幸運を祈ります。

これが可能かどうかはわかりませんが、各サービスをchroot環境で実行するのはどうですか?おそらく、必要なライブラリファイルをハードリンクして各chrootファイルシステムを作成することにより、ディスク容量を節約できます。

各サービスを独自のVMで実行する場合のもう1つの問題は、すべてのサービスが独自のIPアドレスを必要とすることです。 100 IPは、内部ネットワーク(172/8または10/8セットアップなど)では問題にならない場合がありますが、それらがクラスAの一部である場合(多くのパブリックがあると仮定すると)、使い果たされます速い。

そして、他の人が尋ねたように、なぜ各サービスが独自のVMである必要があるのですか?それらの多くは、同じホスト上で簡単に実行できるはずです。

それがアプリケーションレベルで実行できるものであれば、仮想化は一切行いません。さまざまなポート番号でアプリの複数のインスタンスを実行できます。IPエイリアスを使用してさまざまなIPを簡単に作成することもできます。これにより、各ボックスで20を超えるコピーを簡単に実行できます。まあ、あなたはあなたのハードウェアの半分ですべてをすることができるかもしれません。

仮想化はすべてのソリューションではありません。 :)

My 2c。

Cloud Foundry。回答を提出した可能性のある他の人と比べて、VMについては何も知りませんが、ホスト、そのホスト上のVM、そのVM上のCloud Foundryがある場合、ベースセカンダリVMを簡単に作成でき、簡単に作成できますハードウェアの使用率を低く抑えながら、セカンダリVMセット内のすべてのサービスを複製および構成します。それが確実に機能するかどうかはわかりませんが、私が理解していることから、それはより最小のアプローチの1つであり、ホストマシンを損傷する可能性のあるリスクを減らす2ハルアプローチです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top