`
城的灯
  • 浏览: 152448 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

WebSocket负载均衡方案

    博客分类:
  • 2014
 
阅读更多

 

原文地址:http://www.yangguo.info/2014/6/25/10.html

 

目标

根据指定的key对websocket连接进行负载均衡,达到一致性哈希的效果。

调度模式

Haproxy,负载均衡调度模式有如下几种:

  1. roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
  2. static-rr,表示根据权重;
  3. leastconn,表示最少连接者先处理;
  4. source,表示根据请求源IP;
  5. uri,表示根据请求的URI;
  6. url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name
  7. hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
  8. rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

方案及实现

模式:url_param

前端:通过带参的uri,来向server端(Haproxy/Socketserver)发起请求,如:

  • ws://localhost/ws?userid=111,来向server端发起请求。

Haproxy:通过acl来配置规则,如:

  • acl is_websocket hdr(Upgrade) -i WebSocket
  • acl is_websocket hdr_beg(Host) -i ws

反向代理负载均衡配置,如:

  • backend socket_backend_url_param
  • balance url_param userid
  • option forwardfor
  • timeout queue 5000
  • timeout server 5000
  • timeout connect 5000
  • server server1 test:8081
  • server server2 test:8082

整体配置

global
maxconn     4096 # Total Max Connections. This is dependent on ulimit
nbproc      2

defaults
    mode        http

frontend all 0.0.0.0:80
    timeout client 5000
    default_backend www_backend
    acl is_websocket hdr(Upgrade) -i WebSocket
    acl is_websocket hdr_beg(Host) -i ws

    use_backend socket_backend_url_param if is_websocket

backend www_backend
    balance roundrobin
    option forwardfor # This sets X-Forwarded-For
    timeout server 5000
    timeout connect 4000
    server server1 test:8081 weight 1 maxconn 1024 check
    server server2 test:8082 weight 1 maxconn 1024 check


backend socket_backend_url_param
    balance url_param userid
    option forwardfor
    timeout queue 5000
    timeout server 5000
    timeout connect 5000
    server server1 test:8081
    server server2 test:8082
0
0
分享到:
评论

相关推荐

    分布式websocket解决方案

    分布式WebSocket解决方案的目标是实现WebSocket连接在多台服务器间的无缝迁移,保证在服务器集群中,用户的WebSocket连接不会因为服务器故障或负载均衡而中断。这通常涉及到负载均衡、会话持久化、消息广播等多个...

    WebSocket消息实时提醒

    7. **负载均衡与集群**:对于大型实时应用,可能需要考虑WebSocket的负载均衡和集群部署,确保服务的稳定性和可扩展性。 8. **断线重连**:客户端需要有断线重连的策略,当检测到连接断开时,尝试重新建立连接。 9...

    用Rust实现仿nginx,力争实现一个可替代方案,http/https代理, socks5代理, 负载均衡, 反向代理, 静态文件服务器,四层TCP/UDP转发,websocket转发, 内网穿透N

    用Rust实现仿nginx,力争实现一个可替代方案,http/https代理, socks5代理, 负载均衡, 反向代理, 静态文件服务器,四层TCP/UDP转发,websocket转发, 内网穿透NAT

    C# VS MVC 下WebSocket简单应用

    在实际应用中,你还需要考虑安全性、错误处理、连接管理和负载均衡等问题。WebSocket连接可能会因为网络问题而断开,所以需要有重连机制。此外,由于WebSocket是持久连接,大量的并发连接可能会给服务器带来压力,...

    nginx+tomcat7+memcached集成 负载均衡初体验

    标题 "nginx+tomcat7+memcached集成 负载均衡初体验" 涉及的是一个常见的Web服务器和应用服务器的集成方案,用于提升网站性能和处理能力。在这个组合中,nginx作为前端反向代理服务器,负责负载均衡;Tomcat7是Java...

    Websocket代理

    3. **负载均衡**:在高并发环境下,代理可以实现负载均衡,将连接分发到多个后端服务器,提升系统整体性能。 4. **安全控制**:代理可以执行访问控制,如身份验证、授权,防止未授权的访问。 5. **故障隔离**:当...

    聊聊分布式下的WebSocket解决方案.docx

    最典型的问题之一是:当客户端通过WebSocket与服务端建立连接后,如果服务端采用负载均衡机制部署了多个实例,那么客户端只能与其中一个服务端实例建立连接。这样一来,如何确保来自不同客户端的数据能够被正确地...

    gateway+websocket.zip

    SpringCloud是基于Spring Boot构建微服务架构的一套框架,它提供了服务注册与发现、配置中心、熔断机制、API Gateway、负载均衡、分布式事务等全面的微服务解决方案。而WebSocket是一种在单个TCP连接上进行全双工...

    c++ websocket服务器和html客户端

    - **负载均衡**:对于大型应用,可能需要多个服务器来分担负载,避免单点故障。 - **协议兼容性**:WebSocket协议有多种帧类型和状态码,需要正确处理以保证兼容性。 - **资源管理**:长期保持的连接需要有效管理,...

    基于Netty的Java WebSocket集群框架。.zip

    这通常涉及到负载均衡,如使用Nginx反向代理或者DNS轮询,将客户端请求分发到多个WebSocket服务器节点上。服务器节点间可能还需要同步状态,保持会话的一致性。 4. **Java编程**:Java作为后端语言,提供了...

    WebSocket压力并发测试v1.1.2

    WebSocket是一种在客户端和服务器之间建立持久连接的网络协议,它为实时...同时,对于大型应用或服务提供商来说,合理规划和设计服务器架构,如使用负载均衡、分布式部署等策略,也是保证高并发环境下服务质量的关键。

    基于websocket 的网页公共聊天时的实现

    5. **可扩展性**:当用户数量增加时,服务器可能需要使用负载均衡和集群技术,以分发连接并处理更高的并发量。 6. **错误处理**:客户端和服务器都需要处理可能出现的网络错误,例如连接中断、数据解析错误等,并...

    Websocket通信工具开发

    6. **负载均衡与扩展**:在高并发场景下,可能需要考虑使用WebSocket代理服务器或负载均衡器来分发连接,确保系统的可扩展性。 在实际开发中,开发者还可能需要关注以下方面: - **跨域问题**:WebSocket同样受到...

    ssm+redis+nginx实现session共享和负载均衡

    Nginx则是一款强大的反向代理服务器,能够实现负载均衡。接下来我们将深入探讨如何利用这三者来实现session共享和负载均衡。 1. **SSM框架中的Session管理** 在SSM框架中,通常会将session存储在本地服务器的内存...

    webSocket 消息推送

    同时,对于大规模并发连接,需要考虑服务器性能和负载均衡。 通过这样的组合,你可以构建一个健壮的WebSocket消息推送系统,无论是在实时聊天应用、股票交易系统还是游戏服务器中,都能够提供流畅、低延迟的交互...

    websocket客户端和服务器端

    2. **负载均衡**:WebSocket连接的持久性可能导致传统的负载均衡策略失效,需要特别设计处理长连接的负载均衡方案。 3. **心跳检测**:为了检测连接是否中断,通常需要在客户端和服务器端实现心跳机制,定期发送空...

    websocket_for_linux.rar_educationcrz_linux WebSocket_websocket_w

    6. **负载均衡与可扩展性**:对于大型应用,可能需要考虑WebSocket连接的负载均衡和集群部署,以应对高并发。 7. **跨域问题**:WebSocket同样受到同源策略限制,需要设置适当的CORS策略来允许跨域连接。 在学习和...

    websocket的小demo

    WebSocket是一种在客户端和服务器之间建立长连接的协议,它为实时通信提供了低延迟、高效率的解决方案。...同时,这个实例也可以作为一个起点,进一步扩展到更复杂的应用场景,如负载均衡、安全性和性能优化等。

Global site tag (gtag.js) - Google Analytics