Kumaran
Kumaran

Reputation: 239

MongoDB sharding IP Changes

Recently we made live the mongodb sharding concept and its working fine in production server. But we have configured the public IP address instead of internal IP. So we have to change the internal ip in mongodb db sharding.

Please clarify whether its possible or not. If possible means, please share your input.

public ip example: conf = {_id : "data1",members : [{_id : 0, host : "10.17.18.01:10001", votes : 2},{_id : 1, host : "10.17.19.02:10002", votes : 1},{_id:2, host: "10.17.19.03:10003", votes : 3, arbiterOnly: true}]}

internal ip example conf = {_id : "data1",members : [{_id : 0, host : "20.17.18.01:10001", votes : 2},{_id : 1, host : "20.17.19.02:10002", votes : 1},{_id:2, host: "20.17.19.03:10003", votes : 3, arbiterOnly: true}]}

whether it will work. Pls suggest.

Regards, Kumaran

Upvotes: 0

Views: 2233

Answers (4)

Ari
Ari

Reputation: 341

If you want to do any modification in the Shard configuration then you should

use config

db.shards.update( { _id : } , { $set : { ... } } )

Please make sure that you restart your config server and mongos after making this change.

Upvotes: 0

doltiana
doltiana

Reputation: 59

from inside mongos.

simply use the following command to update the IPs of the shard servers:

db.shards.update({_id: <<"shard name">>} , {$set: {"host" : "newIP:27018"}})

Example:

db.shards.update({_id: "shard000"} , {$set: {"host" : "172.31.1.1:27018"}})

172.31.1.1 is the private ip address of your shard server in the private network. avoid using a dynamic ip address.

Upvotes: 0

kmfk
kmfk

Reputation: 3951

Throwing in an answer, even though this is a dated question for anyone else who might view this.

I would recommend using host names / host entries on your servers to handle local and external ips. However, to update the hosts in your case, you would have to change the replica set config.

Log into the Primary in the replica set then do the following:

> cfg = rs.conf()
> cfg.members[0].host = "[new host1]:[port]"
> cfg.members[1].host = "[new host2]:[port]"
> cfg.members[2].host = "[new host3]:[port]"

cfg.members is obviously a zero-index array, you can reuse that for how every many replicas you have.

> rs.reconfig( cfg )

From there, you would want to re-add your shards with the newly specified hosts.

Upvotes: 1

stbrody
stbrody

Reputation: 1846

You said you're trying to update the IPs in the sharding system, but the config documents you provided as an example look like a replica set configuration. If it's actually your replica set configuration you want to update, you should just be able to remove the entry for the old IP address from the replica set configuration, then add the node back in with the new IP. See http://www.mongodb.org/display/DOCS/Replica+Set+Configuration and http://www.mongodb.org/display/DOCS/Reconfiguring+when+Members+are+Up for more details.

If it's actually the sharding configuration you want to update, it will be a bit more complicated.

Upvotes: 1

Related Questions