MongoDb中的偶发(身份验证???)失败和过期

MongoDb中的偶发(身份验证???)失败和过期,mongodb,scala,docker,reactivemongo,akka-http,Mongodb,Scala,Docker,Reactivemongo,Akka Http,我在连接到MongoDB副本集时遇到一些问题。 我已经创建了一个mongodb管理员用户用于读写。我可以在终端上成功登录mongo shell,并且会话从未过期 在我的scala应用程序中,我使用reactivemongo 0.11.9和MongoDB 3.2.1运行akka http,并在Docker容器中设置mongo复制,这些容器位于3个单独的服务器上,并将永久存储到各自的主机。服务器启动时,我正在验证mongo连接 大约60%的时间是临时工作的(40%的时间是启动时无法进行身份验证),5

我在连接到MongoDB副本集时遇到一些问题。 我已经创建了一个mongodb管理员用户用于读写。我可以在终端上成功登录mongo shell,并且会话从未过期

在我的scala应用程序中,我使用reactivemongo 0.11.9和MongoDB 3.2.1运行akka http,并在Docker容器中设置mongo复制,这些容器位于3个单独的服务器上,并将永久存储到各自的主机。服务器启动时,我正在验证mongo连接

大约60%的时间是临时工作的(40%的时间是启动时无法进行身份验证),5-20分钟后,我的连接不再经过身份验证,或者连接已断开,无法重新连接。我还没有找到任何关于让身份验证保持更长时间开放的信息,也没有找到为什么连接会断开而不恢复的信息,也没有找到任何关于身份验证在连接级别的信息,只要连接存在,它就应该保持身份验证

这是我的mongo连接对象:

class MongodbDataStore(implicit exec: ExecutionContext) {

 var driver1 = new reactivemongo.api.MongoDriver
 var mongoOptions = new MongoConnectionOptions(nbChannelsPerNode = 5,
                                               connectTimeoutMS = 300000, 
                                               authMode = ScramSha1Authentication)
 var counter = 0
 val dbName = "admin"
 val userName = "name"
 val password = "password"
 val credentials = List(Authenticate(dbName, userName, password))
 var connection3 = Array(driver1.connection(List("X.X.X.X","X.X.X.X","X.X.X.X"), mongoOptions, authentications = credentials))

 def getdb: BSONCollection = {
   counter = counter + 1
   val database: reactivemongo.api.DB = connection3(0).db("database")
   database.collection[BSONCollection]("collection")
 }

}
身份验证过期后,我会收到以下错误:

reactivemongo.core.errors.GenericDriverException: MongoError['socket disconnected']
18:23:58.655 [reactivemongo-akka.actor.default-dispatcher-3] ERROR reactivemongo.core.actors.MongoDBSystem - The primary is unavailable, is there a network problem?
18:23:58.655 [reactivemongo-akka.actor.default-dispatcher-3] ERROR reactivemongo.core.actors.MongoDBSystem - The primary is unavailable, is there a network problem?
18:23:59.092 [ReactiveKafka-akka.actor.default-dispatcher-9] ERROR reactivemongo.api.Failover2 - Got an error, no more attempts to do. Completing with a failure...
reactivemongo.core.actors.Exceptions$PrimaryUnavailableException$: MongoError['No primary node is available!']
    at reactivemongo.core.actors.Exceptions$PrimaryUnavailableException$.<clinit>(actors.scala) ~[reactivemongo_2.11-0.11.9.jar:0.11.9]
    at reactivemongo.api.Failover2.reactivemongo$api$Failover2$$isRetryable(api.scala:139) ~[reactivemongo_2.11-0.11.9.jar:0.11.9]
    at reactivemongo.api.Failover2$$anonfun$reactivemongo$api$Failover2$$send$2.apply(api.scala:117) [reactivemongo_2.11-0.11.9.jar:0.11.9]
    at reactivemongo.api.Failover2$$anonfun$reactivemongo$api$Failover2$$send$2.apply(api.scala:116) [reactivemongo_2.11-0.11.9.jar:0.11.9]
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) [scala-library-2.11.7.jar:?]
    at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55) [akka-actor_2.11-2.4.1.jar:?]
    at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:91) [akka-actor_2.11-2.4.1.jar:?]
    at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91) [akka-actor_2.11-2.4.1.jar:?]
    at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91) [akka-actor_2.11-2.4.1.jar:?]
    at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72) [scala-library-2.11.7.jar:?]
    at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:90) [akka-actor_2.11-2.4.1.jar:?]
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:39) [akka-actor_2.11-2.4.1.jar:?]
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:399) [akka-actor_2.11-2.4.1.jar:?]
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.11.7.jar:?]
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.11.7.jar:?]
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.11.7.jar:?]
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.11.7.jar:?]
[ERROR] [02/17/2016 18:23:59.093] [ReactiveKafka-akka.actor.default-dispatcher-9] [akka.actor.ActorSystemImpl(ReactiveKafka)] Error during processing of request HttpRequest(HttpMethod(POST),http://127.0.0.1:9001/user_login,List(Host: 127.0.0.1:9001, Connection: keep-alive, Cache-Control: no-cache, Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop, User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36, Postman-Token:..., Accept: */*, Accept-Encoding: gzip, deflate, Accept-Language: en-US, en;q=0.8),HttpEntity.Strict(application/json,ByteString(32, 32, 32, 32, 32, 32, 32, 123, 34, 107, 101, 121, 34, 58, 34, 117, 83, 101, 68, 84, 111, 67, 97, 76, 108, 77, 69, 111, 78, 109, 89, 67, 69, 108, 108, 80, 104, 79, 110, 51, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 112, 104, 111, 110, 101, 78, 117, 109, 98, 101, 114, 34, 58, 34, 49, 55, 55, 50, 49, 50, 52, 56, 51, 52, 49, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 112, 97, 115, 115, 119, 111, 114, 100, 34, 58, 34)... and [16] more),HttpProtocol(HTTP/1.1))
reactivemongo.core.actors.Exceptions$PrimaryUnavailableException$: MongoError['No primary node is available!']
    at reactivemongo.core.actors.Exceptions$PrimaryUnavailableException$.<clinit>(actors.scala)
    at reactivemongo.api.Failover2.reactivemongo$api$Failover2$$isRetryable(api.scala:139)
    at reactivemongo.api.Failover2$$anonfun$reactivemongo$api$Failover2$$send$2.apply(api.scala:117)
    at reactivemongo.api.Failover2$$anonfun$reactivemongo$api$Failover2$$send$2.apply(api.scala:116)
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
    at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
    at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:91)
    at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)
    at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)
    at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)
    at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:90)
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:39)
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:399)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
reactivemongo.core.errors.GenericDriverException:MongoError['socket disconnected']
18:23:58.655[reactivemongo-akka.actor.default-dispatcher-3]错误reactivemongo.core.actors.MongoDBSystem-主服务器不可用,是否存在网络问题?
18:23:58.655[reactivemongo-akka.actor.default-dispatcher-3]错误reactivemongo.core.actors.MongoDBSystem-主服务器不可用,是否存在网络问题?
18:23:59.092[ReactiveKafka-akka.actor.default-dispatcher-9]错误reactivemongo.api.Failover2-出现错误,不再尝试执行。以失败告终。。。
reactivemongo.core.actors.Exceptions$PrimaryUnavailableException$:MongoError['没有可用的主节点!']
在reactivemongo.core.actors.Exceptions$PrimaryUnavailableException$(actors.scala)~[reactivemongo_2.11-0.11.9.jar:0.11.9]
在reactivemongo.api.Failover2.reactivemongo$api$Failover2$$isRetryable(api.scala:139)~[reactivemongo_2.11-0.11.9.jar:0.11.9]
在reactivemongo.api.Failover2$$anonfun$reactivemongo$api$Failover2$$send$2.apply(api.scala:117)[reactivemongo_2.11-0.11.9.jar:0.11.9]
在reactivemongo.api.Failover2$$anonfun$reactivemongo$api$Failover2$$send$2.apply(api.scala:116)[reactivemongo_2.11-0.11.9.jar:0.11.9]
在scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)[scala-library-2.11.7.jar:?]
在akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)[akka-actor_2.11-2.4.1.jar:?]
在akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:91)[akka-actor_2.11-2.4.1.jar:?]
在akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)[akka-actor_2.11-2.4.1.jar:?]
在akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)[akka-actor_2.11-2.4.1.jar:?]
位于scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)[scala-library-2.11.7.jar:?]
在akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:90)[akka-actor_2.11-2.4.1.jar:?]
在akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:39)[akka-actor_2.11-2.4.1.jar:?]
在akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:399)[akka-actor_2.11-2.4.1.jar:?]
在scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[scala-library-2.11.7.jar:?]
在scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[scala-library-2.11.7.jar:?]
在scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[scala-library-2.11.7.jar:?]
在scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[scala-library-2.11.7.jar:?]
[ERROR][02/17/2016 18:23:59.093][ReactiveKafka-akka.actor.default-dispatcher-9][akka.actor.actor-systemempl(ReactiveKafka)]处理请求过程中出错HttpRequest(HttpMethod(POST),http://127.0.0.1:9001/user_login列表(主机:127.0.0.1:9001,连接:保持活动,缓存控制:无缓存,来源:chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop,用户代理:Mozilla/5.0(Macintosh;英特尔Mac OS X 10_10_5)AppleWebKit/537.36(KHTML,如Gecko)Chrome/47.0.2526.106 Safari/537.36,邮递员令牌:…,接受:*/*,接受编码:gzip,deflate,接受语言:en-US,en;q=0.8),HttpEntity.Strict(应用程序/json,ByteString(32, 32, 32, 32, 32, 32, 32, 123, 34, 107, 101, 121, 34, 58, 34, 117, 83, 101, 68, 84, 111, 67, 97, 76, 108, 77, 69, 111, 78, 109, 89, 67, 69, 108, 108, 80, 104, 79, 110, 51, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 112, 104, 111, 110, 101, 78, 117, 109, 98, 101, 114, 34, 58, 34, 49, 55, 55, 50, 49, 50, 52, 56, 51, 52, 49, 34, 44, 10, 32, 32,32,32,32,32,32,34,112,97,115,115,119,111,114,100,34,58,34…和[16]更多),HttpProtocol(HTTP/1.1))
reactivemongo.core.actors.Exceptions$PrimaryUnavailableException$:MongoError['没有可用的主节点!']
在reactivemongo.core.actors.Exceptions$PrimaryUnavailableException$(actors.scala)
在reactivemongo.api.Failover2.reactivemongo$api$Failover2$$isRetryable(api.scala:139)
在reactivemongo.api.Failover2$$anonfun$reactivemongo$api$Failover2$$send$2.apply(api.scala:117)
在reactivemongo.api.Failover2$$anonfun$reactivemongo$api$Failover2$$send$2.apply(api.scala:116)
在scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
在akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
在akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:91)
在akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)
在akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)
在斯卡拉。