2012-01-18 112 views
0

最近我們做了mongodb分片概念,並在生產服務器上正常工作。但是我們配置了公共IP地址而不是內部IP。所以我們必須在mongodb db sharding中更改內部IP。MongoDB sharding IP更改

請說明是否有可能。如果可能的話,請分享您的意見。

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「,vote: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 ,主持人:「20.17.19.03:10003」,票數:3,arbiterOnly:true}]}

是否會起作用。請建議。

問候, 庫馬蘭

+0

你的公有知識產權有私人的,內部是公開的嗎? – 2012-01-18 14:00:55

+0

如果你問粘合相關的東西?是的意思是,我們沒有內部和公共IP之間的聯繫。我們有兩個IP的獨立接口。 – Kumaran 2012-01-18 15:07:52

回答

0

你說你想更新的分片系統的IP地址,但你作爲一個例子提供的配置文件看起來像一個副本集的配置。如果它實際上是要更新的副本集配置,則應該只能從副本集配置中刪除舊IP地址的條目,然後將該節點重新添加到新IP中。有關更多詳細信息,請參閱http://www.mongodb.org/display/DOCS/Replica+Set+Configurationhttp://www.mongodb.org/display/DOCS/Reconfiguring+when+Members+are+Up

如果它實際上是你想要更新的分片配置,它會更復雜一點。

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) 

從那裏,你會想重新添加你的分片與新指定的主機。

-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地址。