質問: マルチサーバー/クラスター環境で注意する必要がある潜在的な問題は何ですか? 私はしばらくの間、クライアントとウェブサイトに取り組んでおり、サイト自体の人気が非常に高まっています。現在、サイトをホストしている1台のマシンがリクエストを処理するのに苦労しており、サイト自体を可能な限り最適化しています(キャッシュなど)。現在、別のサーバーを追加して、私の質問につながる余分な負担を取る必要があります-webファームまたはクラスターホスティングに移動するときに、サイトを認識またはテストする必要がある潜在的な落とし穴と注意点環境?
回答: 考えられる警告がいくつかあります。セッションセッションがサーバー側に保存されている場合(つまりphp)、bothサーバーは共有セッションストレージパスにアクセスする必要があります。そうしないと、ロードバランサーが1つのサーバーから別のサーバーにリクエストを送信するか、場合によっては(gasp)1人のユーザーに2つの一意のセッションがあるため、セッションが失われます。これは、ajaxで特にイライラする可能性があります。ロードバランサーによっては、「スティッキー」セッションも可能です。一時ファイル実際にリクエストの処理中に何らかの一時ファイルを使用する場合、両方のサーバーが同じ/ tmpディレクトリを共有する必要があります。これは、ダウンロード用に圧縮された一時アーカイブ、何かを追跡するフラットファイルdbである可能性があります。sqliteロックsqlite3を使用している場合、特にnfsのようなものを使用してサーバー間でデータベースファイルを共有している場合は、これまでに表面化したことがないいくつかの癖に気付くことがあります。 nfsはこれが遅いため、他の何かを使用することをお勧めします。 lustreのような分散ファイルシステムはセットアップが簡単で、gfs/ocfs2を使用することもできます。sslおそらく、ロードバランサーにsslハンドシェイクを処理させ、古い自己署名証明書を使用してバックエンドサーバーに要求を送信することをお勧めします。一般的な注意事項: 前述のように、ディレクトリの共有には高性能のファイルシステムを使用します。すべての共有ファイルは、webサーバーの1つではなく、ネットワークストレージに存在する必要があります。それ以外の場合、一方がダウンすると、両方とも役に立たなくなり、一種の目的に反します。 サイトでrdbmsを使用する場合、2つのオプションがあります。両方のノードで実行して、マスターとマスターの同期を使用するか、dbサーバーを独自のホームに配置します。 2番目の方法をお勧めします。これにより、webサーバーの操作スペースが大幅に増えます。 ロードバランサーにも冗長性が必要です。 ほとんどの場合、実際のサイト/アプリケーション自体をほとんどまたはまったく変更せずに、単一のサーバーから負荷分散ファームに移動できますが、すべてのノードが同じファイルを読み書きできることを確認する必要があります。これには、アプリ自体をロックするためのロジックを追加する必要がある場合があります。