Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

cluster-api-autoscaler

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cluster-api-autoscaler

An auto-scaler for the NodeJS Cluster API.

  • 0.1.2-beta
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
3
increased by200%
Maintainers
1
Weekly downloads
 
Created
Source

cluster-api-autoscaler

Build Status npm

NPM

This projecf is an experiment around the NodeJS Cluster API.

The goal is to bring a solution allowing a hybrid usage. you can either instantiate the autoscaler in your code or use it as a cli.

The motivation behind it is related to the usage of NodeJS and its Cluster API in Kubernetes. Instead of defining a static amount of workers, the module takes care of increasing or decreasing the amount of workers based on CPU usage and memory available for each of them.

Such as the Horizontal Pod Autoscaler of Kubernetes, the module aims to provide a support for custom metrics. The custom metrics could be, as an example, amount of incoming requests for an Express server.

Usage

The autoscaler supports two usage - CLI and programmatic usage.

CLI

2 commands are available.

  • start: run the program in a single run mode.
    • usage: as start <file> [options]
    • options:
      • --min: specify the minimum amount of workers. Default value: 2.
      • --max: specify the maximum amount of workers. Default value: 4.
      • -m, --metrics: specify the metrics to collect and to observe. Default value: "cpu:50,mem:50".
      • -c, --custom-metrics-path: specify the path for custom modules.
  • forever: run a program undefinitely or X times before dying.
    • usage: as forever <file> [options]
    • options:
      • --max-restart: specify a maximum amount of restart. If not defined, forever re-tries indefinitely.
      • --min: specify the minimum amount of workers. Default value: 2.
      • --max: specify the maximum amount of workers. Default value: 4.
      • -m, --metrics: specify the metrics to collect and to observe. Default value: "cpu:50,mem:50".
      • -c, --custom-metrics-path: specify the path for custom modules.

Programmatic approach

In your master module implement the following code:

'use strict';

const as = require('cluster-api-autoscaler').start;

as({
  workerScript: `${__dirname}/worker.js`,
  metrics: [
    {
      type: 'cpu',
      limit: 50,
    },
    {
      type: 'mem',
      limit: 50,
    },
  ],
  min: 1,
  max: 5,
}).catch(error => {
  console.error('something went wrong', error);
  process.exit(1);
});

Then run the following command in your terminal:

$> node master.js

ToDo

  • improve documentation
  • improve test coverage
  • implement graceful shutdown in example
  • provide example custom metrics
  • provide charts mono-process vs as (maybe Locust)

Keywords

FAQs

Package last updated on 08 Nov 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc