Managing MongoDB cluster hosts
You can add and remove cluster hosts, resync the hosts, and manage MongoDB settings for individual clusters. To learn how to move your cluster hosts to a different availability zone, see this guide.
Getting a list of cluster hosts
- Go to the folder page
and select Managed Service for MongoDB. - Click the name of the Managed Service for MongoDB cluster.
- Select the Hosts tab.
If you do not have the Yandex Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
To get a list of Managed Service for MongoDB cluster hosts, run this command:
yc managed-mongodb host list \
--cluster-name <cluster_name>
Result:
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
| NAME | CLUSTER ID | TYPE | SHARD NAME | ROLE | HEALTH | ZONE ID | PUBLIC IP |
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
| rc1b...mdb.yandexcloud.net | c9qp71dk1q1w******** | MONGOD | rs01 | PRIMARY | ALIVE | ru-central1-b | false |
| rc1a...mdb.yandexcloud.net | c9qp71dk1q1w******** | MONGOD | rs01 | SECONDARY | ALIVE | ru-central1-a | false |
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
You can request the Managed Service for MongoDB cluster name with a list of clusters in the folder.
To get a list of Managed Service for MongoDB cluster hosts, use the listHosts REST API method for the Cluster resource or the ClusterService/ListHosts gRPC API call and provide the cluster ID in the clusterId
request parameter.
You can get the cluster ID with a list of clusters in the folder.
Adding a host
The number of hosts in Managed Service for MongoDB clusters is limited by the CPU and RAM quotas available to DB clusters in your cloud. To check the resources currently in use, open the Quotas
You can add different types of hosts to a Managed Service for MongoDB cluster. Their number depends on the sharding type:
Sharding type | MONGOD | MONGOINFRA | MONGOS | MONGOCFG |
---|---|---|---|---|
No sharding | ⩾ 1 | — | — | — |
Standard | ⩾ 1 | ⩾ 3 | — | — |
Advanced | ⩾ 1 | — | ⩾ 2 | ⩾ 3 |
To add a host to your Managed Service for MongoDB cluster:
- Go to the folder page
and select Managed Service for MongoDB. - Click the name of the Managed Service for MongoDB cluster you need and go to the Hosts tab.
- Click Create host.
- Specify the host parameters:
- Availability zone.
- Subnet (if the required subnet is not on the list, create it).
- Select Public access if the host must be accessible from outside Yandex Cloud. You cannot change this setting after you create a host.
- Host type and shard name, if sharding is enabled for the Managed Service for MongoDB cluster.
- Click Save.
If you do not have the Yandex Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
To add a host to your Managed Service for MongoDB cluster:
-
Request a list of Managed Service for MongoDB cluster subnets to select a subnet for the new host:
yc vpc subnet list
Result:
+----------------------+-----------+-----------------------+---------------+------------------+ | ID | NAME | NETWORK ID | ZONE | RANGE | +----------------------+-----------+-----------------------+---------------+------------------+ | b0cl69a2b4c6******** | default-d | enp6rq72rndgr******** | ru-central1-d | [172.16.0.0/20] | | e2lkj9qwe762******** | default-b | enp6rq72rndgr******** | ru-central1-b | [10.10.0.0/16] | | e9b0ph42bn96******** | a-2 | enp6rq72rndgr******** | ru-central1-a | [172.16.32.0/20] | | e9b9v22r88io******** | default-a | enp6rq72rndgr******** | ru-central1-a | [172.16.16.0/20] | +----------------------+-----------+-----------------------+---------------+------------------+
If the required subnet is not in the list, create it.
-
View a description of the CLI command for adding a host:
yc managed-mongodb host add --help
-
Run the add host command:
yc managed-mongodb host add \ --cluster-name <cluster_name> \ --host zone-id=<availability_zone>,` `subnet-id=<subnet_ID>,` `assign-public-ip=<public_access>
Where
assign-public-ip
is public access to the host,true
orfalse
.Managed Service for MongoDB will run the add host operation.
The subnet ID should be specified if the availability zone contains multiple subnets; otherwise, Managed Service for MongoDB automatically selects the sole subnet. You can request the Managed Service for MongoDB cluster name with a list of clusters in the folder.
To add a host to your Managed Service for MongoDB cluster:
-
Open the current Terraform configuration file with an infrastructure plan.
For more information about creating this file, see Creating clusters.
-
Add the following to the Managed Service for MongoDB cluster description:
- Resources corresponding to the sharding type, if you are adding a host to a sharded cluster:
resources_mongoinfra
for standard sharding.resources_mongos
andresources_mongocfg
for advanced sharding.
host
block.
resource "yandex_mdb_mongodb_cluster" "<cluster_name>" { ... resources_mongod { resource_preset_id = "<host_class>" disk_type_id = "<disk_type>" disk_size = <storage_size_in_GB> } resources_mongoinfra { # Add for standard sharding. resource_preset_id = "<host_class>" disk_type_id = "<disk_type>" disk_size = <storage_size_in_GB> } resources_mongos { # Add for advanced sharding. resource_preset_id = "<host_class>" disk_type_id = "<disk_type>" disk_size = <storage_size_in_GB> } resources_mongocfg { # Add for advanced sharding. resource_preset_id = "<host_class>" disk_type_id = "<disk_type>" disk_size = <storage_size_in_GB> } host { role = "<replica_type>" zone_id = "<availability_zone>" subnet_id = "<subnet_ID>" assign_public_ip = <public_access> shard_name = "<shard_name>" type = "<host_type>" ... } }
Where:
host
: Host parameters:role
: Replica type (PRIMARY
orSECONDARY
).zone_id
: Availability zone.subnet_id
: ID of a subnet in the selected availability zone.assign_public_ip
: Public access to the host,true
orfalse
.shard_name
: Shard name in a sharded cluster.type
: Host type in a sharded cluster,MONGOD
,MONGOINFRA
,MONGOS
, orMONGOCFG
.
- Resources corresponding to the sharding type, if you are adding a host to a sharded cluster:
-
Make sure the settings are correct.
-
Using the command line, navigate to the folder that contains the up-to-date Terraform configuration files with an infrastructure plan.
-
Run the command:
terraform validate
If there are errors in the configuration files, Terraform will point to them.
-
-
Confirm updating the resources.
-
Run the command to view planned changes:
terraform plan
If the resource configuration descriptions are correct, the terminal will display a list of the resources to modify and their parameters. This is a test step. No resources are updated.
-
If you are happy with the planned changes, apply them:
-
Run the command:
terraform apply
-
Confirm the update of resources.
-
Wait for the operation to complete.
-
-
For more information, see the Terraform provider documentation
Timeouts
The Terraform provider sets the following timeouts for Managed Service for MongoDB cluster operations:
- Creating a cluster, including by restoring one from a backup: 30 minutes.
- Editing a cluster: 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the timeouts
block to the cluster description, for example:
resource "yandex_mdb_mongodb_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # An hour and a half
update = "2h" # Two hours
}
}
To add a host to a cluster, use the addHosts REST API method for the Cluster resource or the ClusterService/AddHosts gRPC API call and provide the following in the request:
- Cluster ID in the
clusterId
parameter. To find out the cluster ID, get a list of clusters in the folder. - New host settings in one or more
hostSpecs
parameters.
Security groups are at the Preview stage. If they are not available on your network, all incoming and outgoing traffic for the resources will be allowed. No additional setup is required.
To enable security groups, request access to this feature from technical support
Warning
If you cannot connect to the host you added, check that the Managed Service for MongoDB cluster security group is configured correctly for the host's subnet.
Removing a host
You can remove a MONGOD
host from a Managed Service for MongoDB cluster if it is not the only host in it. To replace a single host, first create a new host and then remove the old one.
If the host is a primary one at the time of removal, Managed Service for MongoDB automatically selects a new primary replica.
From a sharded Managed Service for MongoDB cluster, you may remove the MONGOS
, MONGOCFG
, or MONGOINFRA
hosts that exceed the minimum number needed for sharding.
To remove a host from a Managed Service for MongoDB cluster:
- Go to the folder page
and select Managed Service for MongoDB. - Click the name of the Managed Service for MongoDB cluster you need and select the Hosts tab.
- Click
in the host row and select Delete. - In the window that opens, check Delete host and click Confirm.
If you do not have the Yandex Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
To remove a host from the Managed Service for MongoDB cluster, run:
yc managed-mongodb host delete <host_name>
--cluster-name <cluster_name>
You can request the host name with a list of Managed Service for MongoDB cluster hosts and the cluster name with a list of clusters in the folder.
To remove a host from a Managed Service for MongoDB cluster:
-
Open the current Terraform configuration file with an infrastructure plan.
For more information about creating this file, see Creating clusters.
-
Delete the corresponding
host
block from the Managed Service for MongoDB cluster description. -
Make sure the settings are correct.
-
Using the command line, navigate to the folder that contains the up-to-date Terraform configuration files with an infrastructure plan.
-
Run the command:
terraform validate
If there are errors in the configuration files, Terraform will point to them.
-
-
Type
yes
and press Enter.-
Run the command to view planned changes:
terraform plan
If the resource configuration descriptions are correct, the terminal will display a list of the resources to modify and their parameters. This is a test step. No resources are updated.
-
If you are happy with the planned changes, apply them:
-
Run the command:
terraform apply
-
Confirm the update of resources.
-
Wait for the operation to complete.
-
-
For more information, see the Terraform provider documentation
Timeouts
The Terraform provider sets the following timeouts for Managed Service for MongoDB cluster operations:
- Creating a cluster, including by restoring one from a backup: 30 minutes.
- Editing a cluster: 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the timeouts
block to the cluster description, for example:
resource "yandex_mdb_mongodb_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # An hour and a half
update = "2h" # Two hours
}
}
To delete a host, use the deleteHosts REST API method for the Cluster resource or the ClusterService/DeleteHosts gRPC API call and provide the following in the request:
- Cluster ID in the
clusterId
parameter. To find out the cluster ID, get a list of clusters in the folder. - Name or array of names of hosts to delete in the
hostNames
parameter.
Starting host resync
To resync a hostMONGOD
host at a time and only for Managed Service for MongoDB clusters with more than two replicas, regardless of the host class and type. Resync also lets you remove the collections and documents that were marked as deleted from the host's storage.
During this operation:
-
The host stops accepting write requests. If the host was a
PRIMARY
replica, Managed Service for MongoDB will try to make it aSECONDARY
replica . If the operation fails, it is aborted. -
The MongoDB instance on the host stops, and all data is deleted.
-
The MongoDB instance restarts and downloads data from replica hosts again.
-
Once the host has synced with other replicas in the Managed Service for MongoDB cluster, it becomes a secondary replica.
Note
- During syncing, the host can't fully respond to any request, because it has only part of the Managed Service for MongoDB cluster data.
- Estimated sync rate: 300 GB per day or more.
To forcibly resync a host:
- Go to the folder page
and select Managed Service for MongoDB. - Click the name of the Managed Service for MongoDB cluster you need and select the Hosts tab.
- Click
in the host row and select Resynchronize.
If you do not have the Yandex Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
To forcibly resync a host, run the following command:
yc managed-mongodb hosts resetup <host_name>
--cluster-name <cluster_name>
You can get the host name with a list of hosts in the folder. You can request the Managed Service for MongoDB cluster name with a list of clusters in the folder.
To resync a host, use the resetupHosts REST API method for the Cluster resource or the ClusterService/ResetupHosts gRPC API call and provide the following in the request:
- Cluster ID in the
clusterId
parameter. To find out the cluster ID, get a list of clusters in the folder. - Host name in the
hostNames
parameter. To find out the name, get a list of hosts in the cluster.
Restarting a host
You can manually restart Managed Service for MongoDB cluster hosts.
Restarting a host may make a Managed Service for MongoDB cluster or shard temporarily unavailable:
- If there is a single host in the cluster.
- If the host is the primary replica.
When the primary replica is restarted, there is no automatic switch-over. To make sure the Managed Service for MongoDB cluster remains available, switch the cluster's primary replica before it is restarted.
Note
You can only restart one host at a time.
To restart a host:
- Go to the folder page
and select Managed Service for MongoDB. - Click the name of the Managed Service for MongoDB cluster you need and select the Hosts tab.
- Click
in the host row and select Restart. - Confirm the host restart.
If you do not have the Yandex Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
To restart a host, run the command:
yc managed-mongodb hosts restart <host_name> \
--cluster-name <cluster_name>
To restart a host, use the restartHosts REST API method for the Cluster resource or the ClusterService/RestartHosts gRPC API call and provide the following in the request:
- Managed Service for MongoDB cluster ID in the
clusterId
parameter. To find out the cluster ID, get a list of clusters in the folder. - Host name in the
hostNames
parameter. To find out the name, get a list of hosts in the cluster.