Mongodb Docker中的Mongo DB集群
我正在尝试创建一个Mongo复制,并查看它在通过应用程序访问时出现故障时如何工作 我正在使用Docker创建3个Mongo实例,并将它们添加到一个复制集中 我可以通过RoboMongo访问每个mongo。而且复制工作也很好 这是我试图在我的Ubuntu 16.04上运行的应用程序Mongodb Docker中的Mongo DB集群,mongodb,docker,networking,ubuntu-16.04,Mongodb,Docker,Networking,Ubuntu 16.04,我正在尝试创建一个Mongo复制,并查看它在通过应用程序访问时出现故障时如何工作 我正在使用Docker创建3个Mongo实例,并将它们添加到一个复制集中 我可以通过RoboMongo访问每个mongo。而且复制工作也很好 这是我试图在我的Ubuntu 16.04上运行的应用程序 public static void main(String[] args) { System.out.println("Started"); MongoClient client =
public static void main(String[] args) {
System.out.println("Started");
MongoClient client = new MongoClient(Arrays.asList(new ServerAddress(
"localhost", 30001), new ServerAddress("localhost", 30002),
new ServerAddress("localhost", 30003)));
MongoDatabase database = client.getDatabase("ecodedb");
System.out.println("Connected");
FindIterable<Document> mydatabaserecords = database.getCollection("test").find();
MongoCursor<Document> iterator = mydatabaserecords.iterator();
System.out.println("Fetching");
while (iterator.hasNext()) {
Document doc = iterator.next();
System.out.println(doc.getString("test"));
}
System.out.println("closing");
client.close();
}
当我看到日志时,它看起来像是应用程序能够检测出哪个是主要的,哪个是次要的,但不能查询 所以问题是Mongo驱动程序正在寻找主机名“Mongo22”及其与ip的映射。我在Mongo容器主机名文件中进行映射 相反,我必须在主机的主机名文件中(即Ubuntu中)执行此操作 所以我添加了这样的条目
mongo22 172.134.55.66
mongo11 172.44.55.34
之后,我的复制工作正常。ip地址是多少?容器的IP地址?是,Docker容器IP。您可以通过对默认网络(网桥)使用“docker inspect bridge”来发现这一点。
mongo22 172.134.55.66
mongo11 172.44.55.34