2 lihe55966 lihe55966 于 2016.09.14 13:36 提问

mongodb连接集群的疑问

情况描述如下:
1、用集群连接方式创建mongodb连接
List seeds = new ArrayList<>();
for(String h : host_list){
ServerAddress sa = new ServerAddress(h,port);
seeds.add(sa);
}

MongoOptions opt = new MongoOptions();
opt.connectionsPerHost = poolSize;
opt.threadsAllowedToBlockForConnectionMultiplier = blockSize;
mg = new Mongo(seeds, opt);

2、其中一个ip是虚假的,为了测试集群连接方式能够正常工作。
3、验证登录
db_con.authenticate(user, password.toCharArray());

问题所在:
如果用debug模式,手动跟踪代码,在有ip无效的情况下,验证能正常通过,能进行下面的mongodb操作。
但是如果正常执行,验证不通过,会提示mongodb所操作的集合需要认证。如下
com.mongodb.MongoException: Rare case where master=null, probably all servers are down
at com.mongodb.DBTCPConnector$MyPort.get(DBTCPConnector.java:438)
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:280)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:257)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:310)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:295)
at com.mongodb.DBCursor._check(DBCursor.java:368)
at com.mongodb.DBCursor._hasNext(DBCursor.java:459)
at com.mongodb.DBCursor.hasNext(DBCursor.java:484)
at com.hw.jgpt.mongo.SimpleTest.main(SimpleTest.java:98)

如果在 mg = new Mongo(seeds, opt); 这句话之后加上休眠语句,会报错:
com.mongodb.MongoException: not authorized for query on ************************
at com.mongodb.MongoException.parse(MongoException.java:82)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:314)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:295)
at com.mongodb.DBCursor._check(DBCursor.java:368)
at com.mongodb.DBCursor._hasNext(DBCursor.java:459)
at com.mongodb.DBCursor.hasNext(DBCursor.java:484)
at com.hw.jgpt.mongo.SimpleTest.main(SimpleTest.java:98)

1个回答

zqbnqsdsmd
zqbnqsdsmd   2016.10.08 00:29
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Mongodb集群JavaAPI插入数据
在完成了集群的搭建工作之后,需要做的就是建立一个数据库,建立表,设置分片主键来初始化数据了! (1)建立WLB数据库,设置分表wlb_orders (2)用Java代码完成数据初始化 (3)查看数据库分片信息db.printShardingStatus() (4)查看数据库的状态信息db.stats() (5)查看服务器状态信息db.serverStatus()
mongo-java-driver连接mongo集群
此处mongo-java-driver版本为2.13 import java.net.UnknownHostException; import java.util.Arrays; import com.mongodb.DB; import com.mongodb.MongoClient; import com.mongodb.ServerAddress; public
Python连接MongoDB分片集群
Python连接MongoDB分片集群 首先需要说明的是:首先mongDB的分片集群是我自己建的,没有使用认证,所以人人都能连接,其次使用pymongo来连接集群。 我们看一下官方的连接string: mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?optio...
Mongodb设置Replica Set集群 并使用PHP来连接
Mongodb之前一直是做主从模式,后来官方推荐用Replica Set(简称RS)来代替主从,主要是当primary节点出现故障后,会自动连接secondary节点,并且选为新的primary节点,这样应用程序就不需要关系什么时候连主,什么时候连从的问题。想要配置一个简单的RS,至少要两台机器
mongodb集群分片+副本模式操作+javaCode
mongodb集群分片+副本模式操作 本人规划的三个节点分别为192.168.46.133(mongo1) 192.168.46.134(mongo2) 192.168.46.135(mongo3) 下载mongodb3.4.3.tgz,并解压到指定目录下 首先修改主机名分别为mongo1 mongo2 mongo3 并
使用C++连接MongoDB集群
项目中用到了MongoDB,由于担心将来接口请求量过大后,单服务会出现宕机。所以研究了下mongo的集群,但发现了好多问题,在这里记录下。 我的编译环境:Centos 6.8、mongodb3.0+、mongodbC++ driver 2.6。
MONGODB 集群 配置及 客户端PHP 连接
mongodb 配置2数据节点+1仲裁节点的集群 1 建立相关目录:     mkdir /opt/mongodb/key     mkdir /opt/mongodb/config     mkdir /opt/mongodb/db1     mkdir /opt/mongodb/db2     mkdir /opt/mongodb/db3 2.建立key 文件
mongodb常见操作及集群搭建
mongodb常见操作及集群搭建。
搭建mongodb热备集群 和 c#驱动
http://www.cnblogs.com/huangxincheng/p/4870557.html  好久没过来吹牛了,前段时间一直赶项目,没有时间来更新博客,项目也终于赶完了,接下来就要面临双十一这场惊心动魄的处女秀考验, 我们项目中会有一个wcf集群,而集群地址则放在mongodb中,所以mongodb的核心地位可想而知,如果mongodb挂掉,整个项目也就陷入 瘫痪,想
c# 链接mongDB集群实战开发2
c# 链接mongDB集群 一  了解mongdb 一  学习部署 二 部署集群 三 C#链接mongdb 完成测试