-
Notifications
You must be signed in to change notification settings - Fork 11
Sharded Clusters
- /sharded_clusters POST
- /sharded_clusters/{cluster-id} PUT GET DELETE
- /sharded_clusters/{cluster-id}/shards POST GET
- /sharded_clusters/{cluster-id}/shards/{shard-id} GET DELETE
- /sharded_clusters/{cluster-id}/configservers GET
- /sharded_clusters/{cluster-id}/routers GET POST
- /sharded_clusters/{cluster-id}/routers/{router-id} DELETE
Methods:
- POST - create and get up new Shard Cluster
Shard Cluster Configuration contains:
- id - cluster name (optional)
- auth_key - authentication key (optional)
- login - username for the admin collection (optional)
- password - password (optional)
- routers - list of routers configurations (required, default: [{}])
- configsvrs - list of config servers configurations (required, default: [{}])
- members - cluster's shards (required)
routers configuration is a server config with name=mongos configsvrs configuration is a server config with name=mongod and configsvr=true members configuration contains:
- id - shard name
- shardParams - server config if shard is a server , otherwise replicaset config. shardParams can contains option 'tags' as a list of shard tags.
Example:
{
"preset": "basic.json", // [optional] - configuration file on server, e.g., configurations/sh/basic.json
"id":"shard_cluster_1", // [optional]
"auth_key": "secret", // [optional] - authentication key
"login": "admin", // [optional] - username for the admin collection
"password":"adminpass", // [optional] - password
"sslParams": { "sslCAFile" : "~/ca.pem" }, // [optional] - SSL options http://docs.mongodb.org/manual/administration/ssl/
"routers": [{"port":2323}, {}], // list of routers
"configsvrs": [{"port": 2315}, {}, {}], // list of config servers
"members": [ // list of members
{"id": "sh01", "shardParams":{"tags": ["tag1", "tag2"]}}, // server
{"id": "sh02", "shardParams": {"procParams": {"port":2320}, "tags": ["otherTag"]}}, // server
{"id": "sh-rs-01", "shardParams": {"id": "rs1", "tags": ["replTag"], "members": [{}, {}]}}, // replicaset
{} // server with default options
]}
If preset
is specified, parameters are first loaded from the server-side configuration file,
e.g., configurations/sh/basic.json
,
and then updated with any other supplied parameters.
The update is a deep merge so that individual leaf values can be overridden by supplied parameters.
Minimal example:
{
"preset": "basic.json", // [optional] - configuration file on server, e.g., configurations/sh/basic.json
}
In this minimal example, all parameters are supplied from the server-side configuration file.
If id
is not specified in the configuration file, a uuid is generated for the id
.
available response representations:
- 200 - Returned if create shard cluster was successful
Example:
{"configsvrs": [{"hostname": "localhost:2315",
"id": "1429155e-0105-4726-8090-aa742a83a01f"},
{"hostname": "localhost:1025",
"id": "f0e9afa8-01c3-48b0-bb8c-27d5f8c31b58"},
{"hostname": "localhost:1026",
"id": "eee965a4-574e-4fe5-852a-7ed53e6e047c"}],
"id": "shard_cluster_1",
"members": [{"_id": "90cefef6-c091-4ae1-90f7-e03bb51a135a",
"id": "dd2ed2bc-1a8d-49b6-a7cd-414c919a3586",
"isServer": true,
"tags": []},
{"_id": "0d6901ea-1064-42ac-9311-0876d070bb9c",
"id": "sh01",
"isServer": true,
"tags": ["tag1", "tag2"]},
{"_id": "rs1",
"id": "sh-rs-01",
"isReplicaSet": true,
"tags": ["replTag"]},
{"_id": "34afd26e-3eef-4c55-ba63-7573cc7f3929",
"id": "sh02",
"isServer": true,
"tags": ["otherTag"]}],
"orchestration" : "sh",
"routers": [{"hostname": "localhost:2323",
"id": "e36d9885-d71b-4c16-ac58-f3b1d82a3c19"},
{"hostname": "localhost:1027",
"id": "7ed0eee0-ce7f-4ea7-ad1f-224ecbf0f082"}],
"uri": "localhost:2323,localhost:1027",
"mongodb_uri": "mongodb://localhost:2323,localhost:1027"}
- 500 - Returned if create shard cluster was fail
Parameters:
- sh id - string contains the shard cluster id
Methods:
-
PUT - Create a new Sharded Cluster with the given
cluster-id
.
This functions in much the same way as a POST
request to /sharded_clusters
except that the id
is given as part of the URI rather than the request body. The response from the server is identical to that of a POST
to /sharded_clusters
.
- GET - info about configuration
available response representations:
- 200 - application/json
Example:
{"configsvrs": [{"hostname": "localhost:2315",
"id": "1429155e-0105-4726-8090-aa742a83a01f"},
{"hostname": "localhost:1025",
"id": "f0e9afa8-01c3-48b0-bb8c-27d5f8c31b58"},
{"hostname": "localhost:1026",
"id": "eee965a4-574e-4fe5-852a-7ed53e6e047c"}],
"id": "shard_cluster_1",
"members": [{"_id": "90cefef6-c091-4ae1-90f7-e03bb51a135a",
"id": "dd2ed2bc-1a8d-49b6-a7cd-414c919a3586",
"isServer": true,
"tags": []},
{"_id": "0d6901ea-1064-42ac-9311-0876d070bb9c",
"id": "sh01",
"isServer": true,
"tags": ["tag1", "tag2"]},
{"_id": "rs1",
"id": "sh-rs-01",
"isReplicaSet": true,
"tags": ["replTag"]},
{"_id": "34afd26e-3eef-4c55-ba63-7573cc7f3929",
"id": "sh02",
"isServer": true,
"tags": ["otherTag"]}],
"routers": [{"hostname": "localhost:2323",
"id": "e36d9885-d71b-4c16-ac58-f3b1d82a3c19"},
{"hostname": "localhost:1027",
"id": "7ed0eee0-ce7f-4ea7-ad1f-224ecbf0f082"}]}
-
404 - Returned if the Shard Cluster doesn't exist
-
DELETE - remove Shard Cluster
available response representations:
- 204 - Returned if delete was successful
- 400 - Returned if delete was fail
Parameters:
- cluster-id - string contains the shard cluster id
Methods:
- POST - add member to shard cluster
Example:
{ "id": "sh03" } // is server
or
{ "id": "sh-rs", "shardParams": {"id": "rs7", "members": [{}, {}]}} // is replica set
available response representations:
- 200 - Returned info about new member
Example:
{"_id": "5bd0292c-485b-48c7-b67b-2b61f9137656",
"id": "sh03",
"isServer": true,
"tags": []}
or
{
"_id": "rs7",
"id": "sh-rs",
"isReplicaSet": true,
"tags": []
}
-
500 - Returned if create shard cluster was fail
-
GET - return list of Sharded Cluster's members
available response representations:
- 200 - application/json
Example:
[{"uri": "/servers/d9025f00-f3d1-4924-bb63-2d08c0a56b0f",
"shard_id": "b5de7c5d-a853-4328-b18f-25ad3233c38c",
"isServer": true,
"tags": []},
{"uri": "/replica_sets/rs1",
"shard_id": "sh-rs-01",
"isReplicaSet": true,
"tags": []},
{"uri": "/replica_sets/rs7", "shard_id": "sh-rs", "isReplicaSet": true, "tags": []},
{"uri": "/servers/0f5a8d24-5233-4652-8bf5-a0799ed3ba0c",
"shard_id": "sh01",
"isServer": true,
"tags": ["tag1", "tag2"]},
{"uri": "/servers/5bd0292c-485b-48c7-b67b-2b61f9137656",
"shard_id": "sh03",
"isServer": true,
"tags": []},
{"uri": "/servers/ed349746-3eb6-483c-821e-5a1dc0acbfd4",
"shard_id": "sh02",
"isServer": true,
"tags": ["otherTag"]}
]
- 404 - Returned if the Shard Cluster doesn't exist
Parameters:
- cluster-id - string contains the shard cluster id
- shard-id - string contains the shard id
Methods:
-
GET - info about member available response representations:
-
200 - application/json
Example:
{ "_id": "0f5a8d24-5233-4652-8bf5-a0799ed3ba0c",
"id": "sh01",
"isServer": true,
"tags": ["tag1", "tag2"]
}
-
404 - Returned if the member doesn't exist
-
DELETE - remove member from shard cluster
available response representations:
- 204 - application/json
Example:
{ "msg": "draining started successfully", // shard still exists
"ok": 1.0,
"shard": "sh01",
"state": "started"
}
or
{ "msg": "removeshard completed successfully", // shard has removed
"ok": 1.0,
"shard": "sh01",
"state": "completed"
}
- 400 - Returned if delete was fail
Parameters:
- cluster-id - string contains the shard cluster id
Methods:
- GET - return list of configservers
available response representations:
- 200 - application/json
Example:
[
{"hostname": "localhost:2315",
"id": "e5b737c3-ba74-455d-8d3f-968e31f66618"},
{"hostname": "localhost:1025",
"id": "9f1ff976-3693-4fac-ab27-d10e71c92422"},
{"hostname": "localhost:1026",
"id": "725dc748-a4df-4519-a9d4-05f0346da329"}
]
available response representations:
- 200 - if the primary stepdown successfully
- 500 - if an error occurred when stepdown primary server
Parameters:
- cluster-id - string contains the replica set id
Methods:
- GET - return list of all routers for a sharded cluster
available response representations:
- 200 - application/json
Example:
[
{"hostname": "localhost:2323",
"id": "c37d5b66-fa36-4fc4-9508-2f17df9497b2"},
{"hostname": "localhost:1027",
"id": "a5d69ccc-75ff-4200-9add-d1212c4e9a50"}
]
- POST - add new router to shard cluster
Example:
{"port": 2121}
available response representations:
- 200 - Returned info about new router
Example:
{ "hostname": "localhost:2121",
"id": "89b5c675-9cea-402b-a393-52dcd1353c75"
}
- 500 - Returned if create shard cluster was fail
Parameters:
- router-id - string contains the router id
Methods:
- DELETE - delete router from shard cluster
available response representations:
- 200 - Returned info about routers
Example:
{'ok': 1,
'routers': [u'e5858165-929b-48bc-ac0d-87cf31655ea8', u'302ed013-5ce7-45e0-b5ba-132e6d52caec']}
- 500 - Returned if delete router of shard cluster was fail