最近我们实现了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}]}
是否可行。请建议。
此致 库马兰
答案 0 :(得分:1)
您说您正在尝试更新分片系统中的IP,但您提供的配置文档就像副本集配置一样。如果它实际上是您想要更新的副本集配置,您应该只能从副本集配置中删除旧IP地址的条目,然后使用新IP重新添加节点。有关详细信息,请参阅http://www.mongodb.org/display/DOCS/Replica+Set+Configuration和http://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地址。