Tag: 负载均衡

做一个实时的socket.io node.js应用程序中的多个Web dynos是否有意义?

我正在为heroku上的实时聊天应用程序开发一个node.js后端。 当我在研究dynos和扩展node.js后端的方法时,我可以看到dynos可以在http服务器上拥有的优势,因为每个dyno都可以独立于其他dynos(对于大多数情况来说是可以的)。 我的问题是:如何扩展和处理实时socket.io应用程序的负载平衡? 从我正在阅读的dynos是容器是'沙箱':每个dyno运行自己的过程,独立于其他dynos ..那么处理这个问题最好的办法是什么? 我正在考虑一个解决scheme,但它并不优雅或漂亮: 我可以有多个后台作业,其中包含crons可以检查连接在该实例上的用户的新消息..但我认为必须有一个更好的解决scheme。

每个网站应该是自己的`node.js`进程

我们主持约150个网站(可能缩放到300+),我们正在考虑迁移到node.js 大多数网站stream量相当低,每月浏览量不足1百万次。 每个网站应该是自己的node.js进程,还是应该使用相同的node.js进程(或一组小负载平衡进程)来为所有网站提供服务。 每台服务器的节点进程数是否有技术限制或合理的限制? 每个站点的进程:感觉效率低下,但我不知道它是否实际上效率低下。 将确保一个越野车网站不会影响其他网站。 每核心进程/一小组进程:可能更高的性能,但是当我需要更新站点代码库时会发生什么情况,是不是会占用其他站点? 另外,一个站点中的代码失败会影响其他站点。 理想情况下,我希望每个站点都有一个进程,以便我们可以托pipe每个工作服务器上的所有站点。 这样,当负载增加时,我们可以旋转另一个相同的工作服务器,并在两者之间进行负载平衡,而无需任意说SiteA去ServerA和SiteB去ServerB。 任何node.js大师可以提供一些智慧? 所有的静态文件请求将被Nginx或类似Varnish的东西处理。

节点的JS MySQL本地驱动程序 – 负载平衡拆分读/写查询

我们有一个现有的高stream量的PHP Web应用程序,它使用MySQL本地驱动程序的负载平衡设施拆分主和从数据库之间的读取和写入查询。 我正在将此应用程序的API部分迁移到NodeJS,目前我正在使用MySQL驱动程序。 我的问题:是否有办法在NodeJS的主和从数据库之间拆分读写查询? 我已经找了一个NodeJS版本的MySQL本地驱动程序,但一直没有运气。 预先感谢提供的任何帮助:)

HAproxy为redis奴隶

目前我们使用node_redis客户端来访问redis。 我需要在redis slave上使用HAProxy,在我的情况下是3个。 我安装了HAProxy,并将其configuration为负载均衡redis从服务器。 但是当我试图创build连接从node_redis客户端到HAProxy我无法创build连接,并得到一个错误 Error: Redis reply parser error: Error: Protocol error, got "H" as reply type byte at HiredisReplyParser.execute (/home/user1/doosra/node-exp/node_modules/redis/lib/parser/hiredis.js:32:31) at RedisClient.on_data (/home/user1/doosra/node-exp/node_modules/redis/index.js:440:27) at Socket.<anonymous> (/home/user1/doosra/node-exp/node_modules/redis/index.js:70:14) at Socket.emit (events.js:67:17) at TCP.onread (net.js:347:14)

Node.js支持多个服务器间的负载平衡?

我很好奇在node.js横向scalling可能负载平衡跨多个虚拟服务器,如rackspace云服务器? 我读了关于集群插件,但我认为这只是一个多核CPU的单个服务器。

如何扩展Node.js WebSocket Redis服务器?

我正在为Acani写一个聊天服务器,而且我还有一些关于使用负载均衡器可伸缩性来扩展 node.js和websockets的问题。 究竟是什么意思来负载均衡Node.js? 这是否意味着将有n个独立版本的服务器应用程序运行,每个版本都在一个单独的服务器上运行 为了允许一个客户端向所有其他客户端广播消息,我存储了一组在服务器上打开的所有webSocketConnections 。 但是,如果我有我的服务器应用程序运行n个独立版本,每个在一个单独的服务器上,那么我将有n套不同的webSocketConnections ? 如果1和2的答案是肯定的,那么如何存储通用的webSocketConnections (跨所有服务器)? 我想我可以做的一个方法是使用Redis Pub / Sub,并且每个webSocketConnection订阅Redis上的一个频道。 但是,那Redis服务器不会成为瓶颈吗? 那么我将如何扩展Redis? 这对Redis的规模意味着什么? 这是否意味着我有不同的服务器上运行Redis独立版本? 这甚至可能吗? 我听说Redis没有扩展。 为什么有人会这么说呢。 那是什么意思? 如果这是真的,有没有更好的解决scheme发布/分发和/或存储所有广播的消息列表? 注意:如果你的答案是Acani永远不会规模化,那么即使地球上70亿人(和成长中的每一个人)都要每秒钟向地球上的每个人传播一个信息,那么请给出一个有效的解释。

使用http-proxy与node.js进行负载平衡

我正在尝试使用node.js和http-proxy编码负载平衡。 我想要一个在两台服务器之间共享传入请求的loadBalancer。 var http = require('http'), httpProxy = require('http-proxy'); var servers = [{host :'127.0.0.1', port :3000}, {host : 'remote_adr',port :3000}]; httpProxy.createServer(function (req, res, proxy) { var target = servers.shift(); proxy.proxyRequest(req, res, target); servers.push(target); }).listen(8000); 我认为这样做,它会做一个loadBalancer交替发送请求到serv1和serv2。 但是,当我尝试出来,似乎要求2个服务器没有特定的顺序。 另外,大多数请求都发送到我的本地主机节点服务器(127.0.0.1:3000) 有人能解释这种行为吗?

当在AWS负载均衡器后面运行时,如何将node.js / express.js强制转换为HTTPS

我正在AWS上运行一个节点/快速服务,并在它之前部署了一个ELB。 当启用启用SSL的ELB实例时,它会在我点击的第一个页面上工作,然后在每个服务器访问之后切换到HTTP。 ELB上的路由规则终止SSL并转发到节点正在监听的端口8080。 SSLterminal解决scheme对于我的目的来说工作正常,但是如何保持HTTPS上的后续服务器调用?

使用TCP负载均衡器代理W​​ebSockets而不需要粘性会话

我想使用Amazon Elastic Load Balancer将WebSocket连接代理到多个node.js服务器。 由于Amazon ELB不提供实际的WebSocket支持,我需要使用它的香草TCP消息传递。 不过,我试图了解这将如何工作没有某种粘滞会话function。 据我所知,WebSockets的工作原理是首先从客户端发送HTTP升级请求,由服务器通过发送正确处理密钥authentication的响应来处理。 服务器发送该响应并被客户端批准后,该客户端与服务器之间就存在双向连接。 然而,假设客户端在批准服务器响应之后将数据发送到服务器。 如果将数据发送到负载平衡器,然后负载平衡器将该数据中继到不处理原始WebSocket升级请求的其他服务器,那么这个新的服务器将如何知道WebSocket连接? 或者,客户端是否会自动绕过负载平衡器,并直接将数据发送到处理初始升级的服务器?