Articles of 负载均衡

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连接? 或者,客户端是否会自动绕过负载平衡器,并直接将数据发送到处理初始升级的服务器?