2015-04-20 21 views
7

Ben mongodb çoğaltma kümesi dağıtmaya çalışıyorum. Benim mongodb örneğimi kopyalamanın birincil parçası olarak yaptım. Şimdi ben çoğaltma ikincil olarak, farklı IP adresinde barındırılan başka mongodb örneğini eklemek çalışıyorum, ama aşağıdaki hatayı alıyorum: YanlışBir mongodb çoğaltma kümesi ikincil örnek eklerken hata oluştu

rs0:PRIMARY> rs.add("<ip address>:27017") 
{ 
    "ok" : 0, 
    "errmsg" : "Either all host names in a replica set configuration must be localhost references, or none must be; found 1 out of 2", 
    "code" : 103 
} 

yapıyorum?

cevap

0

Yeni eklenen çoğaltma kümesi üyenizin IP adresi localhost'a gider mi? Veya, zaten mevcut üyeniz localhost'a çözüm mü yapıyor? Her iki şekilde de, bir çoğaltma kümesi karışık localhost/localhost olmayan konfigürasyona izin vermeyecektir.

Bu iletinin source code location numaralı sayfasına bakın. Ev sahibi addShard için argüman ya değeri olarak örneğin ana makine adı kısmına herhangi host kimlik olarak

“localhost” ya kullanıyorsanız veya 127.0.0.1:

Ayrıca Mongo guide on sharding bu diyor --configdb çalışma zamanı seçeneğine, o zaman kümedeki herhangi bir MongoDB örneğinin tüm ana bilgisayar ayarları için “localhost” veya 127.0.0.1 kullanmanız gerekir. Localhost adreslerini ve uzak anasistem adresini karıştırırsanız, MongoDB hata verecektir.

Aynısı, çoğaltma kümeleri için de geçerlidir.

+0

bir ssh tünel ile bir üye eklemek çalışırken bununla nasıl başa çıkılacağı konusunda herhangi bir fikir ip adresi hostname geçirin? –

+0

Üzgünüm, yarasayı söyleyemem. Ancak teoride tünel şeffaf olmalı ve bu nedenle bir fark yaratmamalıdır. Ama denemelisin. –

+0

Sorun, tünelin daha sonra "localhost: " olarak erişilebilir olması, ancak Docker'daki kapların ona erişmesi gerektiğinden, 127.0.0.1 ve 172.17.0.1'e bağlı birincil mongodb'a sahip olmam gerektiğidir. O zaman bu 172.17.0.1 sorun olur. İşte daha iyi bir açıklama https://dba.stackexchange.com/questions/173911/mongodb-replica-set-over-ssh-tunnels –

4

Aynı makinede iki mongod örneği çalıştırmayı denediğimde bu sorunla karşılaşıyorum. i 27027 ikinci port numarasını olan

rs.add("localhost:27027") 
    (or) 
    rs.add("127.0.0.1:27027") 

gibi temin zaman hata verir.

Çözüm:

yerine

rs.add("myhostname:27027") 
İlgili konular