2016-11-15 15 views
0

私は、異なるポートで動作している私のノードアプリケーションの複数インスタンス間の負荷分散にnginxを使いたいと思います。私が知りたいことは、異なるポートで動作している異なるインスタンスが互いに通信できることです。たとえば、1つのインスタンスでチャットをしていると、ロードバランスのために別のポートで実行されている別のインスタンスのアプリと通信できますか?もしそうなら、どのように?もしそうでなければ、どうすればその仕事をすることができますか? これについて私はあなたの助けに非常に感謝します。nginx nodejsロードバランス共有情報

+0

AWSなどのWebサービスを使用している場合は、できると思います。 –

+0

いくつかの形式のメッセージをサポートするインスタンス間で共有バックエンドを設定する必要があります。 redis pubsub。 – cejast

答えて

0

さて、あなたはここで解決策の二つのグループ(第二のアプローチでは何の情報共有が存在しないことがわかり、あなただけの「賢く」の方法で負荷を分散)持っている:アプリケーションレベルで

  1. を。コメントで述べた@cejastとして共有バックエンドにアクセスするには、アプリケーションまたはnode.jsを構成する必要があります(ノードが他のアプリケーションサーバーのノードをサポートしているかどうかはわかりません)。これを達成するにはいくつかのアプローチがありますが、すべての目的でアプリケーションのすべてのインスタンスがどこにあっても、すべてのユーザーのライブ情報にアクセスできることが目標です。
  2. ロードバランシング方式。 nginxはip_hashをサポートしています(ip_hasとその他のロードバランシングの方法については、hereを参照してください)。 ip_hashを使用すると、nginxは常に同じインスタンスに同じIP(/ 24サブネット)を送信します。インスタンスが知らないセッションを処理する必要があることを心配する必要はありません。

あなたの問題を解決するためにロードバランシングの方法に従う場合、私はあなたのニーズに合わない場合があるので、どのように動作するかを正確に知ることをお勧めします。

たとえば、前に述べたnginx ip_hashは、IPv4の最初の3オクテットからのスティッキースを使用するハッシュを作成します。つまり、アプリケーションが特定のクラスからトラフィックをほとんど取り込む場合です。それは良い。その場合は、remote_addr変数を使用する必要があります。

これはnginx load balancingのいいリファレンスです。

関連する問題