Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
mongodb-topology-manager
Advanced tools
The MongoDB Topology Management API is an API to allow to programatically spin up a MongoDB instance, Replicaset or Sharded cluster on your local machine.
It's very simple to create a single running MongoDB instance. All examples are using ES6.
var Server = require('mongodb-topology-manager').Server;
// Create new instance
var server = new Server('binary', {
dbpath: './db'
});
const init = async () => {
// Perform discovery
var result = await server.discover();
// Purge the directory
await server.purge();
// Start process
await server.start();
// Stop the process
await server.stop();
}
// start the server
init();
It's equally easy to create a new Replicaset instance.
var ReplSet = require('mongodb-topology-manager').ReplSet;
// Create new instance
var topology = new ReplSet('mongod', [{
// mongod process options
options: {
bind_ip: 'localhost', port: 31000, dbpath: './db-1'
}
}, {
// mongod process options
options: {
bind_ip: 'localhost', port: 31001, dbpath: './db-2'
}
}, {
// Type of node
arbiterOnly: true,
// mongod process options
options: {
bind_ip: 'localhost', port: 31002, dbpath: './db-3'
}
}], {
replSet: 'rs'
});
const init = async () => {
// Perform discovery
var result = await server.discover();
// Purge the directory
await server.purge();
// Start process
await server.start();
// Stop the process
await server.stop();
}
// start the replica set
init();
Each of the node objects can take the following options at the top level.
Field | Description |
---|---|
arbiter | node should become an arbiter. |
builIndexes | should build indexes on the node. |
hidden | node should be hidden. |
builIndexes | should build indexes on the node. |
priority | node should have the following priority. |
tags | tags for the node. |
slaveDelay | the node slaveDelay for replication. |
votes | additional votes for the specific node. |
The object contains the options that are used to start up the actual mongod
instance.
The Replicaset manager has the following methods
Method | Description |
---|---|
Replset.prototype.discover | Return the information from running mongod with --version flag. |
Replset.prototype.start | Start the Replicaset. |
Replset.prototype.primary | Return the current Primary server manager. |
Replset.prototype.shardUrl | Return a add shard url string. |
Replset.prototype.url | Return a connection url. |
Replset.prototype.arbiters | Return a list of arbiter managers. |
Replset.prototype.secondaries | Return a list of secondary managers. |
Replset.prototype.passives | Return a list of secondary passive managers. |
Replset.prototype.waitForPrimary | Wait for a new primary to be elected or for a specific timeout period. |
Replset.prototype.stepDownPrimary | Stepdown the primary. |
Replset.prototype.configuration | Return the replicaset configuration. |
Replset.prototype.reconfigure | Perform a reconfiguration of the replicaset. |
Replset.prototype.serverConfiguration | Get the initial node configuration for specific server manager. |
Replset.prototype.addMember | Add a new member to the set. |
Replset.prototype.removeMember | Remove a member to the set. |
Replset.prototype.maintenance | Put a node into maintenance mode. |
Replset.prototype.stop | Stop the replicaset. |
Replset.prototype.restart | Restart the replicaset. |
Replset.prototype.purge | Purge all the data directories for the replicaset. |
It's a little bit more complicated to set up a Sharded system but not much more.
var Sharded = require('mongodb-topology-manager').Sharded;
const init = async () => {
// Create new instance
var topology = new Sharded({
mongod: 'mongod', mongos: 'mongos'
});
// Add one shard
await topology.addShard([{
options: {
bind_ip: 'localhost', port: 31000, dbpath: './db-1', shardsvr: null
}
}, {
options: {
bind_ip: 'localhost', port: 31001, dbpath: './db-2', shardsvr: null
}, {
// Type of node
arbiter: true,
// mongod process options
options: {
bind_ip: 'localhost', port: 31002, dbpath: './db-3', shardsvr: null
}
}], {
replSet: 'rs1'
});
// Add one shard
await topology.addShard([{
options: {
bind_ip: 'localhost', port: 31010, dbpath: './db-4', shardsvr: null
}
}, {
options: {
bind_ip: 'localhost', port: 31011, dbpath: './db-5', shardsvr: null
}
}, {
// Type of node
arbiter: true,
// mongod process options
options: {
bind_ip: 'localhost', port: 31012, dbpath: './db-6', shardsvr: null
}
}], {
replSet: 'rs2'
});
// Add configuration servers
await topology.addConfigurationServers([{
options: {
bind_ip: 'localhost', port: 35000, dbpath: './db-7'
}
}, {
options: {
bind_ip: 'localhost', port: 35001, dbpath: './db-8'
}
}, {
options: {
bind_ip: 'localhost', port: 35002, dbpath: './db-9'
}
}], {
replSet: 'rs3'
});
// Add proxies
await topology.addProxies([{
bind_ip: 'localhost', port: 51000, configdb: 'localhost:35000,localhost:35001,localhost:35002'
}, {
bind_ip: 'localhost', port: 51001, configdb: 'localhost:35000,localhost:35001,localhost:35002'
}], {
binary: 'mongos'
});
// Start up topology
await topology.start();
// Shard db
await topology.enableSharding('test');
// Shard a collection
await topology.shardCollection('test', 'testcollection', {_id: 1});
// Stop the topology
await topology.stop();
}
// start the shards
init();
The Sharded manager has the following methods
Method | Description |
---|---|
Replset.prototype.discover | Return the information from running mongod with --version flag. |
Replset.prototype.start | Start the Sharded cluster. |
Replset.prototype.stop | Stop the replicaset. |
Replset.prototype.restart | Restart the replicaset. |
Replset.prototype.purge | Purge all the data directories for the replicaset. |
Replset.prototype.addShard | Add a new shard to the cluster. |
Replset.prototype.addConfigurationServers | Add a set of nodes to be configuration servers. |
ReplSet.prototype.addProxies | Add a set of mongo proxies to the cluster. |
ReplSet.prototype.enableSharding | Enable sharding on a specific db. |
ReplSet.prototype.shardCollection | Shard a collection. |
FAQs
Localhost MongoDB Topology Management API
The npm package mongodb-topology-manager receives a total of 0 weekly downloads. As such, mongodb-topology-manager popularity was classified as not popular.
We found that mongodb-topology-manager demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
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.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.