MongoDB分片IP更改

时间:2012-01-18 13:13:46

标签: mongodb sharding

最近我们实现了mongodb分片概念及其在生产服务器中的良好工作。但我们配置了公共IP地址而不是内部IP。所以我们必须在mongodb db sharding中更改内部ip。

请澄清是否可能。如果可能的话,请分享您的意见。

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

内部ip示例 conf = {_id:" data1&#34 ;, members:[{_ id:0,host:" 20.17.18.01:10001",votes:2},{_ id:1,host:& #34; 20.17.19.02:10002",vote:1},{_ id:2,host:" 20.17.19.03:10003",votes:3,arbiterOnly:true}]}

是否可行。请建议。

此致 库马兰

4 个答案:

答案 0 :(得分:1)

您说您正在尝试更新分片系统中的IP,但您提供的配置文档就像副本集配置一样。如果它实际上是您想要更新的副本集配置,您应该只能从副本集配置中删除旧IP地址的条目,然后使用新IP重新添加节点。有关详细信息,请参阅http://www.mongodb.org/display/DOCS/Replica+Set+Configurationhttp://www.mongodb.org/display/DOCS/Reconfiguring+when+Members+are+Up

如果它实际上是您想要更新的分片配置,那么它会更复杂。

答案 1 :(得分:1)

投掷答案,即使对于可能会看到此问题的任何其他人来说,这是一个过时的问题。

我建议您在服务器上使用主机名/主机条目来处理本地和外部ips。但是,要更新案例中的主机,您必须更改副本集配置。

登录副本集中的主节点,然后执行以下操作:

> 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显然是一个零索引数组,您可以将其重用于每个复制副本的数量。

> rs.reconfig( cfg )

从那里,您可能希望使用新指定的主机重新添加分片。

答案 2 :(得分:0)

如果你想在 Shard 配置中做任何修改,那么你应该

使用配置

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

请确保在进行此更改后重新启动配置服务器和 mongos。

答案 3 :(得分:-1)

来自mongos。

只需使用以下命令更新分片服务器的IP:

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

示例:

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

172.31.1.1是专用网络中分片服务器的私有IP地址。 避免使用动态IP地址。