Node.js поддерживает множественный баланс нагрузки на серверах? - PullRequest
8 голосов
/ 05 июля 2011

Мне интересно узнать о горизонтальном вылете в node.js Можно ли распределить нагрузку между несколькими виртуальными серверами, такими как облачные серверы rackspace? Я читал о плагине кластера, но думаю, что это только для одного сервера с многоядерным процессором.

1 Ответ

10 голосов
/ 05 июля 2011

Попробуйте roundrobin.js для node-http-proxy :

var httpProxy = require('http-proxy');
//
// A simple round-robin load balancing strategy.
//
// First, list the servers you want to use in your rotation.
//
var addresses = [
  {
    host: 'ws1.0.0.0',
    port: 80
  },
  {
    host: 'ws2.0.0.0',
    port: 80
  }
];

httpProxy.createServer(function (req, res, proxy) {
  //
  // On each request, get the first location from the list...
  //
  var target = addresses.shift();

  //
  // ...then proxy to the server whose 'turn' it is...
  //
  proxy.proxyRequest(req, res, target);

  //
  // ...and then the server you just used becomes the last item in the list.
  //
  addresses.push(target);
});

// Rinse; repeat; enjoy.
...