1

私は、Nginx と組み合わせた Unicorn 構成で良い経験をしており、最適化と調整手順の後、非常にうまく機能します。しかし今、Unicorns を使用して複数のマシンに負荷を分散する最善の方法は何かという疑問があります。

問題は、3 台のマシン (Nginx ロード バランサー、Unicorns を備えた 2 台の APP サーバー) がある場合、静的アセットを提供することで Unicorns の負荷分散をどのように管理するかです。

TCP を介した Unicorn への接続に関する欠点 (タイムアウト、接続の喪失) はありますか? ネットワークを介してソケット接続をアップストリームする他の方法はありますか (おそらく SSH を介したポート転送)? ユニコーンはステートレスになるように設計されていますが、エッジ ケースをどのように管理していますか?

バランサーノードから静的にサービスを提供したくないので、各APPサーバーにNginxをセットアップし、それらの前にダムNginxバランサーをセットアップしてもよろしいですか?

PS私の現在の構成は十分にテストされており、 Githubで見つけることができますが、同じマシンでのNginx + Unicornのセットアップがすでにボトルネックになっています。

更新: 開発は、特定のサーバー構成に厳密に依存します。ボトルネックは、開発者の決定だけでなく、開発者が実行する環境によっても発生します。Stackoverlow には、特定の構成に関するわかりにくい詳細に関連する注目度の高い Q&A が満載です。以下で答えてくれたAlexさんはGithubで働いています。

4

1 に答える 1

1

TCP/ネットワーク経由でユニコーンにアクセスしないでください。

セットアップは問題ないようです。APPサーバーの前にロードバランサーを追加するだけですが、NginxではなくKeepalived(LVS ftw)をロードバランサーとして使用することをお勧めします。

ソケットを介してNginx+Unicornsを実行しているAPPサーバーへの接続のバランスをとることができます。

于 2013-01-01T22:52:13.863 に答える