負荷分散システムをセットアップする必要があります。現在、Nginx 0.8.52、PHP-FPM(unixソケット上)、およびPHP Symfony1.4.11)に基づくアプリケーションを実行している2台のマシンがあります。
3番目のマシンでは、インストールするバランサーを選択する必要があります。
静的ファイルのキャッシュにVarnishをすでに使用しましたが、Varnishの負荷分散がSymfony PHPセッションを処理できるかどうかわかりません。別のオプションはip_hashを使用したNginx負荷分散です。
どれが最高ですか?
前もって感謝します
なぜ両方ではない? NginXを前面に配置してgzip圧縮とSSLを処理し、Varnishを背面に配置してキャッシュと負荷分散を処理します。 Kristapsが提案するように、バックエンドアプリケーションはDBまたはMemcacheでセッションを共有する必要があり、VarnishはCookieまたは認証で提供される動的コンテンツをキャッシュしませんが、残りはすべて問題ありません。
推奨される設定は、分離された静的ホスト名(static.example.com
など)を作成し、そこからすべての静的コンテンツを提供することです Cookieなし (Varnishは、 Cookie)、およびセッション処理にCookieを使用し、上記のようにすべてのバックエンドがセッション情報を共有する、NginXまたはVarnishによって負荷分散できる動的コンテンツ用にもう1つ。
私はsymfonyフレームワークの専門家ではありませんが、負荷分散の目的で、セッションをデフォルトのファイルベースのストレージから memcacheセッションハンドラー に移動して、アプリケーションスケールのセッション部分を単一のアプリケーションより上にできるようにすることをお勧めします。
スティッキーセッションは、VCLマジック(モジュラスなど、クライアントのIPアドレスの10進表現に対するいくつかの単純な算術演算)によってワニスでアーカイブできます。
設計によるワニスは、ロードバランサーではなく、キャッシュサーバーです。また、ワニスはSSLをサポートしていません。つまり、個別のSSLターミネーター(最も一般的には、sslモジュールを備えたnginx)が必要です。
キャッシュ用ではなく、haproxyやnginxなどの完全に動的なWebアプリパーツ用に設計されたロードバランサーを使用することをお勧めします。どちらもスティッキーセッションをサポートしています。
将来のノードのセッションデータを共有する方法を見つける方が良いと思います。 NASストレージまたはロードバランサーにphpセッションを共有させます。他のオプションは、アプリケーションを書き直して、セッションにmysqlデータベースを使用し、ノード間でそのデータを再び共有できるようにすることです。