2016-12-22 20 views
-1

高可用性(.NETコア)マイクロサービスインフラストラクチャにWebSocketsサーバーを設定する最善の方法を知りたい。高可用性Websocketsサーバー

私の現在の計画では、ロードバランサの背後にある2つのWebSocketsサーバのインスタンスをセッションアフィニティで使用し、接続がオープンされると、後続のメッセージが同じインスタンスに戻ります。インスタンスが失敗すると、クライアントは別のインスタンスに再接続します。

これを設定するのが最善の方法ですか、より良い方法がありますか?私の主な懸念事項は高可用性ですが、私は水平方向にも拡大したいと考えています。

また、メッセージをブラウザクライアントにブロードキャストする必要がある場合は、信頼できるメッセージキューを使用して、WebSocketsサーバのすべてのインスタンスがメッセージを知っていることを確認してください。クライアント?私がこれを考えていたのは、サーバーがどういうわけかステートレスで、接続情報がどこか他の場所に保存されている場合(Redis cluster?)、それらのどれもが接続を「所有していない」ため、すべてのインスタンスに通知する必要はないそのクライアント?それは可能ですか?任意の助け

感謝:)

クリス

答えて

1

あなたのデザインがいいですね。 haproxyを使用すると、WebSocketの大きな問題である特定のインスタンスへのクライアント接続の数を制限できます。私はステートレスなアプローチをとり、コードでエラーを処理します。クライアントが障害を検出すると、ただちにインスタンスに再接続します。すべての永続的なデータを何らかのグローバルストアに保存します。あなたが言及したように、ユースケースに応じて、Redisはうまくいくでしょう。

サイドノートとして、Websocketsは永続的な接続を開いたままにし、ボリュームに応じてハプロキシインスタンスのプールを必要とする可能性があります。可用性の出発点として少なくとも2つを推奨します。

+0

優れています。ありがとう – ChrisBellew

関連する問題