Linux 用の安定した、最新の、無料の単一システム イメージ ソリューション

Linux 用の安定した、最新の、無料の単一システム イメージ ソリューション

私は、主に Web サービス、プロジェクト管理サービス (バージョン管理など)、およびそのような種類のアプリケーションを実行するための、負荷分散された仮想サーバーの作成を検討し始めました。そして、オープン ソース (Linux) ソリューションが必要です。

ウィキペディアにはこのエントリー一見非常に有望で安定したプロジェクトもありますが、ほとんどはとっくに終わっています。LVS のそしてケリヘド可能のように見えますが、確信はありません。投資する価値はありますか(時間的に)?

良い解決策は何でしょうか? (商用ソリューション (Linux など) を購入する余裕はありませんが、これらの代替案について学びたいので、そのためのコメントをいただければ幸いです)。

THX

答え1

間違ったレイヤーで問題を解決しようとしているようです。他の方法があるのに、シングルシステムイメージを使用してWebサーバーを実行しようとするようなまともなシステム管理者はいないと思います。リバースプロキシはるかにシンプルで、結果として信頼性も高くなります。

のような:

答え2

私が質問を本当に間違って読んでいるのでなければ、Web アプリケーションのホスティングに関しては、やり方が間違っていると思います。

複数のノード(仮想または物理)を用意し、それらの構成を管理することをお勧めします。傀儡

ノードは1Uサーバのラック全体、または3Uの強力なマルチプロセッササーバの束で実行できます。仮想化そして、仮想化ゲストとして任意の OS をインストールします。

4 台のサーバーがある場合は、次のように設定できます。

  • サーバー 1: ロード バランサ + HTTP ノード (Varnish と Apache を実行)
  • サーバー 2: ロード バランサ + HTTP ノード (Varnish と Apache を実行)
  • サーバー 3: HTTP ノード + DB マスター (Apache と MySQL を実行)
  • サーバー 4: HTTP ノード + DB スレーブ (Apache と MySQL を実行)

PXE ブート環境用の nagios、munin、tftpd、kickstart/preseed ファイル用の小さな HTTP サーバー、DHCPd、Rocketport 経由のシリアル コンソールなどのサービスを実行する 5 番目のサーバーがあると便利です。

単一のイメージを使用する代わりに Puppet を使用して独自のシステムを展開する大きな利点は、リソースが効果的に自己文書化されることです。サーバーにドロップするイメージだけを使用する場合よりも、はるかに明確で、ブラック ボックスが少なくなります。さらに、イメージの更新と変更がはるかに簡単になります。

答え3

実際に質問されている内容に答えているかどうかわかりませんが、VM を取得してミラーリングする方法を探している場合は、私が知っている無料の仮想化ツール (VMware Server、ESXi、kvm など) のいずれかを使用できます。

  • 必要なものをすべて備えたVMを作成する
  • VMをコピーする
  • コピーに変更を加える(IPアドレスとホスト名)
  • 両方のVMを起動する
  • ロードバランサーを挿入する(ハードウェアまたはソフトウェアは問いません)
  • .. 6 番目のステップは思いつきません :)

答え4

SSI は魅力的に聞こえますが、最適なパフォーマンスを発揮する可能性はほとんどありません。

主なターゲットは Web アプリなので、現在のベスト プラクティスを使用できます (使用すべきです)。通常、ベスト プラクティスは次のようになります。

  • フロントエンドとしてのキャッシュロードバランサ(squid、varnish、nginx)
  • Web アプリ用の複数の HTTP サーバー (通常は Apache、nginx+FastCGI など)
  • データベース

うまくいけば、最初のボトルネックはデータベースになります。この時点で、次のことを行う必要があります。

  • Web アプリにキャッシュを追加して、DB ヒットを最小限に抑えます。(最新のフレームワーク (RoR、Django) には、memcached の優れたサポートが含まれています)
  • DB からより専門的なアプリに何らかのジョブを移します。最初の候補はタスク キュー (rabbitMQ または類似のもの) とキー/値ストア (tokyo cabinet、resis、mongoDB など多数) です。
  • DB を分散します。読み取りが多く書き込みが少ない場合は、マスター/スレーブ レプリケーション (MySQL では簡単) を試してください。ただし、この場合、memcached がすでに負荷の大部分を吸収しているはずです。シャーディングも試してください。

もしこれが大きくなりすぎたら(FaceBook ですか?)、Google のように(ほとんどすべてのことを MapReduce で「オフライン」で実行している)構造全体を再考する必要があります。

関連情報