仮想マシン ホストを構築するときに考慮すべき要素は何ですか?

仮想マシン ホストを構築するときに考慮すべき要素は何ですか?

仮想マシンをホストするために使用するサーバーを構築したいと考えています。これらの仮想マシンは、次のようなさまざまな役割を果たします。

  • データベースサーバー
  • JBoss アプリケーション サーバー
  • Eclipse 開発インスタンス (Java EE、Scala など)

サーバーにアクセスするユーザーの数は、一度につき約 5 人です。オペレーティング システムは、Windows または Linux のどちらか、より使いやすいものを選択できます。ユーザーは、Eclipse 開発インスタンスへのグラフィカル/デスクトップ アクセスを必要とします。

  • 特定の数のユーザーと仮想マシンを適切にサポートするために必要なハードウェア仕様をどのように判断すればよいですか? ユーザーあたりの最小リソースなどに関するガイドラインはありますか?
  • 開発者が物理的にサーバーの近くにいると仮定すると、複数のディスプレイ/キーボード/マウス セットを備えたマルチシート ボックスをセットアップし、各ユーザーにゲスト、キーボード、マウス、ディスプレイ ヘッドを割り当てることは可能でしょうか。このセットアップのソフトウェアとハ​​ードウェアはどのように設計されるのでしょうか。

答え1

特定の数のユーザーと仮想マシンを適切にサポートするために必要なハードウェア仕様をどのように判断すればよいですか? ユーザーあたりの最小リソースなどに関するガイドラインはありますか?

実行したいソフトウェアのさまざまなケースを見てみましょう。

  • データベースサーバー

開発者全員で 1 つのデータベース サーバーを共有している場合は、多数の CPU コアと可能な限り多くの RAM にアクセスできる状態でデータベース サーバーを実行する必要があります。高速 (ただし、必ずしも大容量である必要はありません) ディスクが重要です。ディスク サイズは、開発用に完全な実稼働規模のデータを保存する予定なのか、数ギガバイトで済むのかによって異なります。データベースのボトルネックが発生することは好ましくありませんが、開発データベースのワークロードは実稼働データベースのワークロードとは大きく異なる可能性があることに留意してください。前者は規模が小さく、非効率的なクエリが多くなります (クエリはまだ開発中であり、データはアドホック クエリによって調査されています)。一方、実稼働データベースでは、最適化されたクエリが実行され、(うまくいけば) 大部分が RAM にキャッシュされている巨大なデータセットが操作される可能性があります。

  • JBoss アプリケーション サーバー

JBoss は主に CPU 時間 (サーブレットの実行中)、大量の RAM (Java であるため)、およびネットワーク帯域幅を使用します。データベースと同様に、高度なアプリケーション サーバーは複数のコアからメリットを得ることができます。割り当てる仮想コアの適切な数を判断する最良の方法は、さまざまなコア数でテストすることです。ただし、原則として、物理コアの数よりも多くの仮想コアを割り当てないでください。

  • Eclipse 開発デスクトップ環境

これは難しい問題です。Eclipse 自体は数百 MB の RAM を消費しますが、すべてのプラグインがロードされると、その数値はほぼ一定のままになります。したがって、実行するプラグインの数に基づいて、必要な RAM の量を確認することをお勧めします。最も単純な Eclipse RCP アプリケーションは、10 MB または 20 MB の RAM しか使用しませんが、GEF ツール、バージョン管理ツール、およびデータベース ツールを備えた本格的な JavaEE 環境では、1 GB を超えるメモリを消費する可能性があります。Java ソース ファイルのコンパイルは、ネイティブ コードほど CPU に依存しませんが、複数のコアから恩恵を受けることができます。ただし、一般的には、Eclipse インスタンスは、データベース インスタンスまたは JBoss インスタンスよりも比較的少ないリソース (CPU、RAM、ディスク) を使用する可能性があります。

全体的に、5 人のユーザーと、リソースを大量に消費することが知られているサーバー側アプリケーションがある場合は、ハイエンドのものを検討する必要があります。ブランド名は挙げませんが、クアッド コア、24 GB 以上の RAM、SSD または高速ハードウェア RAID アレイの HDD などです。

開発者が物理的にサーバーの近くにいると仮定すると、複数のディスプレイ/キーボード/マウス セットを備えたマルチシート ボックスをセットアップし、各ユーザーにゲスト、キーボード、マウス、ディスプレイ ヘッドを割り当てることは可能でしょうか。このセットアップのソフトウェアとハ​​ードウェアはどのように設計されるのでしょうか。

まず前書き:ここそしてここ

すぐにわかるのは選択肢はたくさんありますこの分野には強力なリーダーがいません。99.9% の人が使用する明白な方法は 1 つもありません。仮想化をまったく使用しない人もいます。Xorg の複数のインスタンスを使用する人もいます。Windows Multipoint Server を使用する人もいます。... 使用する人もいます。おわかりでしょう。これは間違いなく実現可能な構成です。特にユーザーが 5 人だけの場合はそうです... 利点は、各人にデスクトップ PC を用意する必要がなく、モニター、キーボード、マウスだけで済むことです。欠点は、すべてのユーザーをサポートするために強力な中央サーバーが必要になり、ソフトウェア構成がより複雑になることです。

マルチシート構成の場合、必要なすべてのモニターに十分なポートが確保できる十分なグラフィック カードが必要です。また、すべてのキーボードとマウス用の USB ハブも必要です。

マルチシート構成にコミットすると、グラフィック カード (およびマルチシート ソフトウェア) に投資することになります。これにより、開発者が物理的にサーバーに常駐することになります。そのため、後になって世界の別の場所で作業する別の開発者を参加させることに決めた場合、椅子を引いてキーボード、マウス、モニターを持ってくるだけで既存のセットアップに (簡単に) 参加することはできません。また、ビデオ カードのポート制限に達すると、セットアップを拡張して開発者を増やすのが難しくなることもあります。

関連情報