2013-05-13 14 views
5

Uzak bir mongodb'a bağlanmaya çalışıyorum. Başvurumu yerel mongodb ile geliştirdim. Şimdi uygulamayı devreye devrettim ve dev mongodb'i yapılandırdım. Aşağıdaki istisna alıyorum.mongodb java sürücüsü - com.mongodb.MongoException: bir ana bulamıyor

Caused by: com.mongodb.MongoException: can't find a master 
    at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:509) 
    at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:266) 
    at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:289) 
    at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:274) 
    at com.mongodb.DBCursor._check(DBCursor.java:368) 
    at com.mongodb.DBCursor._hasNext(DBCursor.java:459) 
    at com.mongodb.DBCursor.hasNext(DBCursor.java:484) 

komik bir şey benim yerel uygulamadan çoğaltma kümesi sunucu adresleri ile dev MongoDB bağlanabilmek, ama uygulamaya sahip çalıştığınızda dev MongoDB bağlanmak (dev içine deplyed), Yukarıdaki hatayı görüyorum.

Aynı sorunu yaşayan ve çözen herhangi biri olup olmadığını merak ediyorum.

+0

MongoURI'da, çoğaltma kümesinin doğru birincil ana bilgisayarını mı geçiyorsunuz? –

+0

evet. bu. Belki de yapılandırma sorunu yerine bağlantı sorunuyla ilgilidir. Hata msg yanıltıcı görünüyor. – user826323

+0

bağlantı sorunu, uygulamayı çalıştıran ana bilgisayardan mongo kabuğu kullanarak uzak mongoDB'ye bağlanarak kolayca kontrol edebilirsiniz. –

cevap

1

Bu mongodbın şaşırtıcı yönü, voting policy numaralı telefonunda siyaset bilimi prensipleriyle çatışıyor.

İşte böyle olur.

  • Bir çoğaltma kümesi var; tek sayıda oylama düğümüne sahip olmalıdır.
  • Birincil düğüm başarısız çünkü sunucu/ağ aşağı iniyor veya aşağı iniyor. Diğer düğümler de başarısız olabilir ama en önemlisi ...
  • Bir çift düğüm, birincil olmayan kalır.
  • Kalan çift düğümler bir birincil yerleşime yerleşemez ve politik bir kilitlenme ile yakalanır (çoğunluğu olmayan bir hung parliament).
    • Yeniden seçim gerçekleşir, ancak birincil durum hala kapalıdır; başka bir kilitlenme. Dön buradan.

bir çözüm adaylar artık eşit şekilde oy ağırlık atayarak seçim sallanmaya etmektir. Mongo dünyasında, üyelere priority atanarak yapılır.

Öncelik Karşılaştırmaları Öncelik ayarı, seçimleri etkiler. Üyeler , en yüksek öncelikli üyelere oy vermeyi tercih edecektir.

bir birinci elemanı, 0 sonra başarısız elemanı 1, birincil olarak seçildi olan bu yapılandırmada, altında rs.conf

cfg = rs.conf() 
cfg.members[0].priority = 100 
cfg.members[1].priority = 99 
cfg.members[3].priority = 98 
rs.reconfig(cfg) 

(Admin üzerine) Mongo kabuğa giren ve güncelleme yapar. İşte

bazı iyi bağlantılar vardır: Sonunda

http://docs.mongodb.org/manual/core/replica-set-architecture-four-members/

http://docs.mongodb.org/manual/core/replica-set-elections/

, bu durum kullanılabilirlik setleri gibi tekniklerle bir bulut mimarisine çok yaygındır, bu aşağı yukarı ölçeklendirme - by zaman, işlemci, yük veya diğer metrikler tarafından - ve tüm varsayılan çoğaltma kümeleri için rastgele veya bir miktar adaletsiz ayrımcılık politikası tarafından ele alınmalıdır. Teknikler olmadan bile, varsayılan çoğaltma kümesinde birincil, bir noktada kilitlenerek, kullanılamaz duruma gelir. Benim düşüncemde önemli bir başarısızlık.

İlgili konular