Articles of 负载均衡

节点JS现场报道(graphics)模块

我有一个使用HAProxy Load Balancer的Linux机器上的Node JS(HTTP Server)构build的生产Web服务,并希望使用某种graphics工具在服务器上进行实时报告。 我特别想看看请求/分钟,请求失败等等。 我需要一些非侵入性的B / C,我将每天处理20mil +请求。

如何使用http-proxy隐藏node.js服务器

我正在使用以下代码在node.js上实现反向代理。 它工作正常,但问题是,当我试图访问服务器127.0.0.1:9008/“这是相当可访问的,我希望它只能通过代理服务器访问,请帮助.. var http = require('http'), httpProxy = require('http-proxy'); // // Create a proxy server with latency // var proxy = httpProxy.createProxyServer(); // // Create your server that make an operation that take a while // and then proxy de request // http.createServer(function (req, res) { // This simulate an operation that take 500ms in […]

用于Node.js和AWS EB的弹性负载平衡configuration

我试图将一个Node.js快速服务器部署到AWS EB,但有一些问题来configuration代理。 如果我在扩展文件夹下没有elasticloadbalancing.config文件,那么我可以通过HTTP和端口3000访问服务器。但是,如果我想添加一个configuration来启用HTTPS并将侦听器端口433代理到实例端口3000,那么该网站无法加载。 这是我的configuration文件, option_settings: aws:elb:listener:443: ListenerProtocol: HTTPS: SSLCertificationeId: arn**** InstancePort: 3000 InstanceProtocol: HTTP 任何人都可以给我任何build议? 我不确定EB是否正确configuration,因为一旦我部署了configuration文件,Web层configuration中负载平衡的所有端口都closures了。 EB会自动使用负载平衡吗? 这是networking层configuration, 这里是听众 谢谢。

如何防止MongoDB副本集查询主要?

读操作只: 有没有办法有一个MongoDB的副本集,但为了在连接到的盒子上的MongoDB实例,是被查询的MongoDB? AWS负载平衡器后面有三个EC2实例。 在每个EC2实例上运行MongoDB,这是副本集的一部分。 我在nodeJS上有特定的端点,并按照如下方式连接到副本集 mongodb.MongoClient.connect('mongodb://1.1.1.1,2.2.2.2,3.3.3.3.', function (err, db) { if (err) { complete('{}'); } else { 我希望将查询的负载均匀地分布在我的MongoDB副本集的所有三个实例上,而不是默认地将所有查询路由到定义了我的主要MongoDB的EC2实例,因为这破坏了我的负载平衡器的点(这是平衡所有三个实例的查询负载)。 我的理解是,当连接到MongoDB副本集时,除非主实例closures,否则始终select主实例,因此每个辅助实例的目的只是作为备份。 在我的例子中,有些人会称之为HOT,COLD,COLD。 因为有两个实例永远不会被使用。 我希望有平均分配查询负载的原因,所以我的设置可以是WARM,WARM,WARM。 在将来当用户数量增加时,为了保持查询性能最佳,我可以在负载均衡器后面添加更多的EC2实例,以提高查询性能。 并且当数据增长的时候,这样一个单一的实例太慢了,不能及时返回数据,也就是当我将每个实例分割成其他的EC2实例的时候。 注意:我想每个EC2实例的源代码都是一样的。 我正在使用git,我想要轻松地将源代码推送到我的副本集中的每个实例。

node.js http-proxy负载平衡

在我的学习期间,我必须通过http-proxy(模块)创build一个包含2个nodejs webserver和1个nodejs负载均衡器的nod​​ejs webserver环境。 因此,我build立了2个节点js侦听端口8081和8082的实例。示例服务器A(localhost:8081) var args = process.argv.splice(2); var http = require('http'); function whoareU() { var n = 'A'; return n; } var server = http.createServer(function (req, res) { res.writeHead(200, {'Content-Type' : 'text/plain'}); res.end('Server: ' + whoareU()); }); server.listen(args[0] || 8081); … ServerB是类似的,只是改变了端口8082和标识符B. 另一方面,我通过http-proxy侦听端口8080构build了一个“loadbalace”实例 var http = require('http'), httpProxy = require('http-proxy'); var servers = [{host […]

在主进程和subprocess上的服务器上集群http服务器quandry

给定下面的nodejs代码。 当我对本地主机:8080运行ab(apache基准testing)时,我只看到服务请求的主进程。 但是,如果我从主进程删除服务器的句柄,那么我看到分叉进程交换进出。 有没有一个很好的理由,我不知道? var cluster = require('cluster'); var server = require('http').createServer(function(req,res){ res.writeHead(200); var served = process.env.NODE_WORKER_ID || "master"; console.log("hello world I was served by " + served); setTimeout(function () { res.end("hello world I was served by " + served); }, 1000); }); if(cluster.isMaster){ for(var i = 0; i < 2; i++){ cluster.fork(); } server.listen(8080); […]

Socket.io作为负载平衡器

我正在开发一个Twitter应用程序(在后端)消费推文做了一些相当激烈的处理,然后将数据存储在数据库中供客户端使用。 我所有的服务器都在运行node.js. 我将使用nTwitter为node.js连接到Twitter Streaming API的服务器。 然后,我想让这台服务器将Tweets传递给工作服务器,并根据Tweet ID(ID中的最后一位数字)分配负载。 现在,我使用的Socket.io (和Socket.io客户端 )似乎运行得很好。 Websocket协议似乎是理想的。 我想知道是否有任何理由不以这种方式使用Socket.io?

平衡服务器上的Hyproxy和100%负载上的100%CPU负载

2个应用程序服务器位于Haproxy服务器后面,使用负载平衡的最less连接方法。 然而,每10-15秒,应用程序服务器的CPU负载将会从非常小的到100%! 一个核心上Haproxy服务器的负载通常是90-100%。 问题 :由于Haproxy无法承受负载,所以2台应用程序服务器上的连续CPU峰值? 我们是否应该担心Haproxy只有60k连接的100%负载? Haproxy统计 pid = 4359 (process #1, nbproc = 1) uptime = 0d 17h39m45s system limits: memmax = unlimited; ulimit-n = 524319 maxsock = 524319; maxconn = 262144; maxpipes = 0 current conns = 63194; current pipes = 0/0 Running tasks: 139/63216 HAProxy的 应用服务器 HAProxy的 应用服务器

使用http代理的节点负载均衡器比原始服务器慢

我有一个在delphi中构build的web服务,我使用node-http-proxy模块构build了一个负载平衡器来扩展web服务。 当我收到很多请求时(使用100个线程的Jmeter ),我失去了性能。 如果向原始Web服务的端口发出请求,它的响应速度比当我对节点负载均衡器端口发出相同的请求时要快得多。 我试图设置maxSockets = 10000 var agent = new http.Agent(); agent.maxSockets = 10000; var proxy = httpProxy.createProxyServer({aget: agent}); 我也试过了 var agent = new http.Agent(); agent.maxSockets = 10000; proxy.web(req, res, { target: { host: server.host, port: server.port }, agent: agent }); 但问题依然存在 我以为使用节点群集,但使用Windows时有一个错误。 这一个 ,我找不到他们告诉编辑修复错误的文件。 有人有任何想法,我可以申请吗?

在使用nodejs DNS负载平衡+ socket.io + socket.io-redis时出现EAGAIN错误。 我该如何解决?

服务器定期打开一个文本文件来添加或更改内容。 一台服务器没有问题,但在负载平衡和使用redis连接服务器和两台服务器共享文件夹之后,会发生EAGAIN错误。 从服务器1连接多个客户端并引用相同的文本文件并更改内容没有任何问题。 服务器1的客户端和服务器2的客户端引用相同的文本文件时,这是一个不规则的错误。 我该如何解决? ++我们发现了这个问题。 与nfs共享文件夹时,如果共享文件夹的根目录是服务器1,则服务器1上的EAGAIN错误相反,如果共享文件夹的根目录是服务器2,则会在服务器2上发生错误EAGAIN。如果设置了另一台服务器上的共享文件夹进行testing,并将服务器1和服务器2连接到另一台服务器上的共享文件夹,则不会出现错误。 为什么? 服务器configuration DNS load balancing nodejs(socket.io,socket.io-redis) SERVER 1, 2 redis npm模块版本: express@4.13.4 socket.io@1.5.0 socket.io-redis@1.1.1 socket.io-adapter@0.5.0 fs@0.0.1 multer@0.1.8 js文件: var express = require('express'); var multer = require('multer'); var app = express(); var http = require('http').Server(app); var io = require('socket.io')(http); var mysql = require('mysql'); var fs = require('fs'); var request […]