取り組むべきプロジェクトがあり、メッセージなどを送信できるクライアント サーバー アプリケーションを Java で構築する必要があります。プロジェクトの 1 つの目標は、フェイルオーバーに対処することです。クライアントがサーバーに接続しているときにサーバーが停止すると、自動的にバックアップ サーバーに接続します。私がやりたいことは必須ではありませんが、ロードバランサーを実装して、複数のクライアントが優先サーバーに接続できるようにしたいと考えています。
クライアントとサーバー間の接続は、TCP ソケットを使用する必要があります。
これは、ネットワーク アーキテクチャの概略図です。
クライアントはロードバランサーに接続します (udp または tcp、この状況に最適なものはわかりません)。
ロードバランサーは、そのクライアントが接続するサーバー (最も空のサーバー) を決定します
クライアントは、指定されたサーバーとの TCP 接続を作成します
私の質問は:
クライアントを特定のサーバーに接続するには、ロード バランサーはどのように機能する必要がありますか? サーバーの情報 (IP、ポート) をクライアントに送信すると、クライアントは新しい IP で別のソケットを作成しますか? (青線)。
または、クライアントに情報を送信することなく、ロード バランサーがこれら 2 つのエンド ポイント (サーバー #1 <-> クライアント #1) を接続する方法はありますか?
PS: 各クライアントがサーバーに接続するために 2 つのソケットを作成する必要がないように思われるため、お尋ねします (最初のソケットの黒い線、2 つ目のソケットの青い線)。