【问题标题】:Sitecore/xDB/MongoDB arbiter instance receiving application account connection attemptsSitecore/xDB/MongoDB arbiter 实例接收应用程序帐户连接尝试
【发布时间】:2016-01-27 06:26:05
【问题描述】:

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

connectionString="mongodb://webapp:password@mongotest1:27018,mongotest2.local:27019/sc8-tracking-history?replicaSet=repSet1&authSource=admin

注意连接字符串中没有指定arbiter,这是正常的。

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 应用程序共享仲裁器连接,然后调用一些连接尝试。

【问题讨论】:

  • 首先,这个问题绝对不是 Sitecore 或 XDB 所特有的。 “仲裁器不应该从客户端接收任何连接尝试。” – 一般来说,这是不正确的。仲裁者仍然可以从想要将它们用作种子主机的客户端接收连接(即用于接收有关集群的信息)。在您的情况下,我将授予应用程序连接的权限,然后您将看到它在仲裁服务器上究竟尝试做什么。如果只是查询副本集元数据,那就没问题了。如果尝试读取 XDB 数据,则可能是 C# MongoDB 驱动程序存在缺陷
  • 根据@DmytroShevchenko 的cmets - 驱动程序确实 直接从Mongo 获取有关集群的信息。此外,尽管有您的连接字符串,它们仍将根据 rs.config() 中的服务器信息进行连接。 Sitecore 可以根据副本集中配置的名称访问所有不同的 Mongo,这一点很重要。

标签: mongodb sitecore sitecore8


【解决方案1】:

这是一个已知的 c-sharp 驱动程序问题,请参阅 https://jira.mongodb.org/browse/CSHARP-851

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

Sitecore 8 update 5 更新 Mongo 并包含修复。或者,可以通过upgrading the bundled MongoDB.Driver.dll to v1.9 实现最小修复并将程序集重定向添加到 web.config。

我在http://blog.paulgeorge.co.uk/2016/01/26/sitecore-mongo-arbiter-shows-failed-authentication-attempts/ 上写了这个答案的更详细版本

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 2020-03-06
    • 2011-11-08
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多