Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sitecore/xDB/MongoDB仲裁器实例接收应用程序帐户连接尝试_Mongodb_Sitecore_Sitecore8 - Fatal编程技术网

Sitecore/xDB/MongoDB仲裁器实例接收应用程序帐户连接尝试

Sitecore/xDB/MongoDB仲裁器实例接收应用程序帐户连接尝试,mongodb,sitecore,sitecore8,Mongodb,Sitecore,Sitecore8,我有一个Sitecore 8测试环境,其中有三个用于xDB的mongo 2.6.5实例。它们被配置为一个复制集,使用一个带有两个服务器“mongotest1”和“mongotest2”以及一个仲裁器“mongotest3”的密钥文件。已在mongo中为web应用程序创建了一个非管理员帐户,该帐户存储在管理员数据库中,在所有五个xDB数据库中都具有读写权限。我的sitecore连接字符串的格式为: connectionString="mongodb://webapp:password@mongot

我有一个Sitecore 8测试环境,其中有三个用于xDB的mongo 2.6.5实例。它们被配置为一个复制集,使用一个带有两个服务器“mongotest1”和“mongotest2”以及一个仲裁器“mongotest3”的密钥文件。已在mongo中为web应用程序创建了一个非管理员帐户,该帐户存储在管理员数据库中,在所有五个xDB数据库中都具有读写权限。我的sitecore连接字符串的格式为:

connectionString="mongodb://webapp:password@mongotest1:27018,mongotest2.local:27019/sc8-tracking-history?replicaSet=repSet1&authSource=admin
请注意,连接字符串中未指定仲裁器,这是正常的

rs.status()提供了以下内容,看起来是正确的:

"date" : ISODate("2015-07-23T16:47:08Z"),
"myState" : 2,
"syncingTo" : "mongotest1.local:27018",
"members" : [
        {
                "_id" : 0,
                "name" : "mongotest1.local:27018",
                "health" : 1,
                "state" : 1,
                "stateStr" : "PRIMARY",
                "uptime" : 93,
                "optime" : Timestamp(1437668096, 1),
                "optimeDate" : ISODate("2015-07-23T16:14:56Z"),
                "lastHeartbeat" : ISODate("2015-07-23T16:47:07Z"),
                "lastHeartbeatRecv" : ISODate("2015-07-23T16:47:08Z"),
                "pingMs" : 0,
                "electionTime" : Timestamp(1437669503, 1),
                "electionDate" : ISODate("2015-07-23T16:38:23Z")
        },
        {
                "_id" : 1,
                "name" : "mongotest2.local:27019",
                "health" : 1,
                "state" : 2,
                "stateStr" : "SECONDARY",
                "uptime" : 93,
                "optime" : Timestamp(1437668096, 1),
                "optimeDate" : ISODate("2015-07-23T16:14:56Z"),
                "infoMessage" : "syncing to: mongotest1.local:27018",
                "self" : true
        },
        {
                "_id" : 2,
                "name" : "mongotest3.local:27020",
                "health" : 1,
                "state" : 7,
                "stateStr" : "ARBITER",
                "uptime" : 91,
                "lastHeartbeat" : ISODate("2015-07-23T16:47:07Z"),
                "lastHeartbeatRecv" : ISODate("2015-07-23T16:47:07Z"),
                "pingMs" : 0
        }
],
"ok" : 1
启动三个mongo实例时,会观察到正常的日志输出。但是,在Sitecore web应用程序连接到mongo后,我看到尝试使用“webapp”帐户连接仲裁器服务失败,因为仲裁器未持有定义了任何用户帐户的管理数据库。如果关闭mongotest1和mongotest2实例,这种情况会增加。如果关闭Sitecore,连接将尝试停止

2015-07-23T18:02:42.741+0100 [conn699] end connection 127.0.0.1:62206 (2 connections now open)
2015-07-23T18:02:43.610+0100 [conn689] end connection 127.0.0.1:62193 (1 connection now open)
2015-07-23T18:02:43.611+0100 [initandlisten] connection accepted from 127.0.0.1:62207 #700 (3 connections now open)
2015-07-23T18:02:43.613+0100 [conn700]  authenticate db: local { authenticate: 1, nonce: "xxx", user: "__system", key: "xxx" }
2015-07-23T18:02:43.890+0100 [initandlisten] connection accepted from 127.0.0.1:62208 #701 (3 connections now open)
2015-07-23T18:02:43.891+0100 [conn701]  authenticate db: admin { authenticate: 1, user: "webapp", nonce: "xxx", key: "xxx" }
2015-07-23T18:02:43.891+0100 [conn701] Failed to authenticate webapp@admin with mechanism MONGODB-CR: AuthenticationFailed UserNotFound Could not find
 user webapp@admin

为什么会这样?仲裁器不应该从客户端接收任何连接尝试。就好像副本集正在共享到web应用程序的仲裁器连接,然后web应用程序调用一些连接尝试。

这是一个已知的c-sharp驱动程序问题,请参阅

这种情况的某些方面是特定于Sitecore版本的-捆绑驱动程序(v1.8.3.9)似乎比v2.6.5版本发布的驱动程序稍早,这意味着它比修复程序更早

Sitecore 8 update 5更新Mongo并包括修复程序。或者,可以通过将程序集重定向添加到web.config来实现最小修复


首先,这个问题肯定不是特定于Sitecore或XDB的。“仲裁人不应该从客户端接收任何连接尝试。”——通常情况下,这是不正确的。仲裁器仍然可以从希望将其用作种子主机的客户端接收连接(即,用于接收有关集群的信息)。在您的情况下,我将授予应用程序连接的权限,然后您将看到它在仲裁服务器上到底尝试做什么。如果只是查询副本集元数据,那也没关系。如果试图读取XDB数据,则C#MongoDB driverPer@DmytroShevchenko的注释中可能存在缺陷-驱动程序确实直接从Mongo获取有关集群的信息。此外,它们将基于rs.config()中的服务器信息建立连接,而不管您的连接字符串是什么。重要的是,Sitecore可以根据副本集中配置的名称访问所有不同的Mongos。