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

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


JS客户端连接失败图

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

signalr 5002服务端 


signalr 5001服务端 

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


解决方案之一 修改负载均衡方式为ip_hash

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


成功解决问题
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 四层负载均衡:仅仅建立一次 TCP 连接 七层负载均衡:负载均衡器与客户端及后端的服务器会分别建立一个 TCP 连...
    养码哥阅读 1,675评论 0 6
  • 一、什么是负载均衡? 互联网早期,业务流量比较小并且业务逻辑比较简单,单台服务器便可以满足基本的需求;但随着互联网...
    彬彬酱阅读 2,296评论 0 19
  • 一、什么是负载均衡 首先我们先介绍一下什么是负载均衡:负载平衡(Load balancing)是一种计算机网络技术...
    小流江海阅读 1,085评论 0 2
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 4,354评论 0 5
  • 雷电,暴雨,强风,被湿漉漉街道反射出的碎片化的霓虹。我知道,五月病又犯了。 我一心只想做个好姑娘,光芒万丈...
    尹阿姨阅读 171评论 0 0

友情链接更多精彩内容