Articles of 负载平衡

负载平衡与节点和Heroku

我有一个Web应用程序接受来自ios应用程序的API请求。 我的networking应用程序使用Heroku免费的dyno托pipe在Heroku上,每个请求可以处理512 MB的数据。 由于节点是单线程应用程序,一旦我们开始从ios端到Web服务器获得更高级别的stream量,这将是一个问题。 我也不是世界上最富有的人,所以我想知道是否会聪明地创build另一个免费的Heroku应用程序,并使用循环赛方法来平衡从iOS应用程序接收到的负载? 我只需要指出正确的方向。 垂直缩放在经济上不是一个真正的select。

Node.js集群vs多个Docker容器

据我所知,Docker容器使用多个线程,Node.js应用程序只使用一个线程。 通过运行类似于处理Node.js集群的pm2 ,我可以利用Docker容器可用的所有内核。 这是否意味着我可以通过对Node.js进程进行集群来更好地利用每个Docker实例? 如果是这样,这是不是比每个容器简单运行一个单线程的Node.js实例更受欢迎? 一个担心的是,如果这有可能造成Docker容器扩大或缩小其运行的CPU数量的副作用。

我可以通过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连接请求将会分配给不同的进程/服务器,并且没有一个中央资源跟踪所有连接的客户端?