私の最初の質問は、複数の専用サーバーを使用してWebサイトを実行し、ユーザーからのクエリを処理する人々についてよく読んでいます。しかし、彼らはどのようにしてこれを正確に行うのでしょうか?つまり、ドメイン名を入力すると、DNSはそれをIPアドレスにマップしますが、その後失われます。そこには、(潜在的に)数百の着信要求の負荷を分散するための何らかのマスター/スレーブアーキテクチャがあります。サーバー?
その場合、さまざまなサーバーがデータ(データベースなど)をどのように共有しますか?それらは同じハードディスクに接続されますか?
2 に答える
ultramonkeyは、多くのサーバー間で負荷分散する方法の適切な説明を提供するため、1つのIPアドレスが表示されますが、接続は多くのサーバーの1つにルーティングされます(フォールトトレランスが含まれます)。
同じストレージを使用しているWebサーバーがない場合(一般的なストレージは扱いにくい場合があります。GFSなどの「共有」ファイルシステムまたはデータベースでSANを使用する必要があります)、スティッキーセッションを有効にしてルーターに次のことを通知する必要があります。各クライアントは、最初に通信するサーバーを選択し、そのサーバーを維持します。これはフォールトトレラントではありませんが(ただし、Webでは、切断された接続を更新して最初からやり直す必要があります)、設計ははるかに簡単です(各Webサーバーは独立したままであるため高速です)。
真のフォールトトレラントな状況で必要となるもう1つの問題は、物理サーバーを互いに遠くに配置することです。これにより、ほとんどの共有設計でパフォーマンスの問題が発生します(つまり、サーバーがSANにある場合、すべてのサーバーをSANに配置することはできません。さまざまな国)、単一のDNS名を使用して複数のサーバーのアプローチを使用し、それらの間で定期的にデータを複製することです。DNS負荷分散は、複数のWebサーバーを単一のWebサイトとして使用する最も簡単な方法である可能性があります。
このような場合、DBは、すべてのサーバーが通信する単一のデータベースであるか、クラスタリングを使用して共有することができます。また、多くの場合、ログ配布を使用して、プライマリに障害が発生した場合にバックアップをオンラインにする準備ができていることを確認します。ログ配布は、遠くにあるバックアップサーバーよりも一般的です。
1)NLB(ネットワーク負荷分散)を使用できます-ファーム内のすべてのサーバーに同じIPを使用します http://en.wikipedia.org/wiki/Network_Load_Balancing_Services http://technet.microsoft.com/en-us /library/cc759510.aspx
2)DBのSQLクラスタリングと非リレーションデータの共通ファイルストア http://www.sql-server-performance.com/articles/clustering/clustering_intro_p1.aspx