SignalR集群采用Nginx进行负载均衡后连接失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SignalR集群采用Nginx进行负载均衡后连接失败相关的知识,希望对你有一定的参考价值。

参考技术A 笔者在近期使用signalr开发一个即时Web聊天应用,为了以后打基础,使用Redis做了一个简单的消息队列。但是当signalr服务器进行集群化的时候,由于使用了两个以及以上的集群, 在初步实验的时候,在JS连接客户端的时候出现了一下的客户端报错。由于在一开始的单例服务中, 使用反向代理是完全可行的。所以,排除掉了服务器端编写的错误。

    之后,笔者在服务器端查看了有关SignalR服务的日志。在对比日志后发现, 在用户的一次连接中, 两个服务端同时生成一个Connection Id 。并在握手失败后,又移除的Connection Id 。

    经过对比后,笔者进一步猜想,可能是由于负载均衡的时候将JS客户端的请求分发到多个signalr实例,所以造成了,虽然客户端的连接到服务端,由于消息包接受的并不完整而导致,握手流程的失败。

    而后,笔者将nginx的服务器中的负载均衡方式由默认配置,改为了 ip_hash ,而后一次通过了握手,连接建立成功。

以上是关于SignalR集群采用Nginx进行负载均衡后连接失败的主要内容,如果未能解决你的问题,请参考以下文章

Nginx七层负载均衡 #yyds干货盘点#

nginx负载均衡与日志配置

lvs+keepalived+nginx实现高性能负载均衡集群

lvs+keepalived+nginx实现高性能负载均衡集群(转)

Nginx实现tomcat集群进行负载均衡

lvs+keepalived+nginx实现高性能负载均衡集群