What is load balancer?
A load balancer is a process that takes in HTTP requests and forwards these HTTP requests to one of a collection of servers. Load balancers are usually used for performance purposes: if a server needs to do a lot of work for each request, one server might not be enough, but 2 servers alternating handling incoming requests might.
1. Using cluster module:
NodeJS has a built-in module called Cluster Module to take the advantage of a multi-core system. Using this module you can launch NodeJS instances to each core of your system. Master process listening on a port to accept client requests and distribute across the worker using some intelligent fashion. So, using this module you can utilize the working ability of your system.
2. Using PM2:
PM2 is a production process manager for Node.js applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without the downtime and to facilitate common system admin tasks.
$ pm2 start app.js -i max --name "Balancer"
This command will run the app.js file on the cluster mode to the total no of core available on your server.
3. Using Express module:
The below code basically creates two Express Servers to handle the request
const body = require('body-parser');
const express = require('express');
const app1 = express();
const app2 = express();
// Parse the request body as JSON
app1.use(body.json());
app2.use(body.json());
const handler = serverNum => (req, res) => {
console.log(`server ${serverNum}`, req.method, req.url, req.body);
res.send(`Hello from server ${serverNum}!`);
};
// Only handle GET and POST requests
app1.get('*', handler(1)).post('*', handler(1));
app2.get('*', handler(2)).post('*', handler(2));
app1.listen(3000);
app2.listen(3001);
4. Using nginx