Articles of 负载平衡

我可以通过authentication与HAProxy和socket.io进行粘性会话吗?

我有几个socket.io实例与HAProxy下运行身份validation,我需要强制authentication请求和套接字连接去同一个实例。 我已经根据这个答案build立了HAProxy 到一个SO问题,并进行了一些修改,如下所示: 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 86400000 default_backend www_backend acl is_websocket hdr(Upgrade) -i WebSocket acl is_websocket hdr_beg(Host) -i ws use_backend socket_backend if is_websocket backend www_backend balance url_param sessionId option forwardfor # This sets X-Forwarded-For timeout server […]

基于Cookie的WebSockets的负载平衡?

我的情况是,我们目前正在编写一个在线应用程序,它使用WebSocket侦听器在服务器端使用Node.js。 我们有两个不同的部分:一个服务页面,使用node.js和express + ejs,另一个是完全不同的应用程序,其中只包括用于websocket的socket.io库。 所以在这里我们来看看这个websockets部分的可伸缩性问题。 我们发现的一个解决scheme是使用redis和服务器之间共享套接字信息,但是由于架构,它将需要共享其他信息的负载,这将在服务器上造成巨大的开销。 在介绍之后,我的问题是 – 是否可以使用基于cookie的websocket负载平衡? 因此,可以说每个从用户与cookie服务器= server1连接将始终转发到server1和每个连接与cookie服务器= server2将fw到server2和连接没有这样的cookie将fw到最不繁忙的服务器。 更新:正如一个“答案”所说 – 是的,我知道这存在。 只是不记得那个名字是粘滞的会议。 但问题是 – 这是否适用于websockets? 有没有可能的并发症?

NodeJS水平缩放

我一直是ruby / php web应用程序开发人员,我已经习惯了服务器实例水平扩展的想法来处理更多的请求。 水平缩放 – 表示位于负载均衡器后面的应用程序的单独实例,它们不共享任何内容,也不知道对方。 我的主要问题是,因为Node.js和它的重点evented-io允许运行一个node.js服务器来处理“数以千计的”同时请求的单个框 – 负载平衡/水平缩放用于扩展nodejs应用程序? 缩放一个节点应用限于垂直缩放(抛出更多的RAM /处理能力的问题)? 我的第二个问题与node.js水平缩放和websocket有关。 我已经看到了很多使用websocket的Node.js“聊天”教程。 (最喜欢的: http : //martinsikora.com/nodejs-and-websocket-simple-chat-tutorial ) 由于websockets在浏览器和服务器之间有效地保持了开放的通信线路,所以PHP / Ruby世界中典型的水平缩放体系结构会导致类似链接中解释的聊天应用程序断开 – 因为新的websocket连接请求将会分配给不同的进程/服务器,并且没有一个中央资源跟踪所有连接的客户端?