Node.js 无法与 Mongodb 通信

Node.js 无法与 Mongodb 通信

我继承了一台服务器,原来的管理团队已经不在了。我们有一台可以运行的实时服务器,但我正在尝试将其成功转换为 AMI 以进行 AWS 扩展。

除了聊天功能外,克隆版本均可用。它使用 Node.js 应用程序进行聊天通信。Mongodb 是聊天数据库。

我已经修改了应用程序的 config.json 以将 mongoDB 指向负载均衡器的正确 FQDN,并且 mongo 似乎启动正常。

然而,在运行中的(原始)服务器 Mongo 日志中...我看到了...

2016-07-25T18:11:15.393+0000 I NETWORK  [initandlisten] waiting for connections on port 27017
2016-07-25T18:11:30.272+0000 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:36001 #1 (1 connection now open)
2016-07-25T18:12:32.981+0000 I INDEX    [conn1] allocating new ns file /var/lib/mongodb/admin.ns, filling with zeroes...
2016-07-25T18:12:33.265+0000 I STORAGE  [FileAllocator] allocating new datafile /var/lib/mongodb/admin.0, filling with zeroes...
2016-07-25T18:12:33.268+0000 I STORAGE  [FileAllocator] done allocating datafile /var/lib/mongodb/admin.0, size: 64MB,  took 0.003 secs
2016-07-25T18:12:33.281+0000 I INDEX    [conn1] build index on: admin.system.users properties: { v: 1, unique: true, key: { user: 1, db: 1 }, name: "user_1_db_1", ns: "admin.system.users" }
2016-07-25T18:12:33.281+0000 I INDEX    [conn1]          building index using bulk method
2016-07-25T18:12:33.282+0000 I INDEX    [conn1] build index done.  scanned 0 total records. 0 secs
2016-07-25T18:12:33.282+0000 I COMMAND  [conn1] command admin.$cmd command: createUser { createUser: "admin", pwd: "xxx", roles: [ { role: "root", db: "admin" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } keyUpdates:0 writeConflicts:0 numYields:0 reslen:37 locks:{ Global: { acquireCount: { r: 4, w: 4 } }, MMAPV1Journal: { acquireCount: { w: 11 } }, Database: { acquireCount: { W: 4 } }, Collection: { acquireCount: { W: 1 } }, Metadata: { acquireCount: { W: 7 } } } 317ms
2016-07-25T18:16:25.538+0000 I NETWORK  [conn1] end connection 127.0.0.1:36001 (0 connections now open)
2016-07-26T09:35:55.261+0000 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:38409 #2 (1 connection now open)

但是,在克隆的服务器上,我看到......

2017-03-30T07:48:01.450+0000 I NETWORK  [initandlisten] waiting for connections on port 27017

...然后什么都没有。我真的不知道该去哪里找,或者如何确定应该从哪里连接。我正在做服务器解剖,试图弄清楚这一点。

有人能提供建议吗?具体来说,端口的连接127.0.0.1:36001来自哪里,我应该在哪里查找该端口的配置(顺便说一下,/etc/services 中没有任何内容)

答案1

简而言之:您所看到的是有人创建了第一个管理员用户,这在经过身份验证的数据库上是必需的。

端口号36001并不重要;这就是客户端随机分配的端口号

但是,IP 地址127.0.0.1很重要:这表明客户端是从同一台计算机连接的。这意味着它要么就在数据库服务器上运行,要么在其他地方运行但通过隧道连接。

日志条目很有趣:

  • 该连接的时间戳为服务器启动后几秒,即去年 8 月
  • 暂停一分钟
  • 然后会有一秒钟内发生的事情的记录
  • 对新文件的引用管理员管理员.0确认行政数据库正在被创建并且首次被写入。
  • 有创建用户的记录
  • 又停顿了几分钟
  • 会话已断开

对我来说,这看起来像是数据库管理员一直在新服务器上整理身份验证,如下所示:

  • 启动新的 mongod 服务器进程
  • 与服务器上的 mongo shell(命令行应用程序)连接
  • 创建了管理员用户
  • 再次断开连接

之所以在实时服务器的日志中有记录,而在克隆服务器的日志中却没有,是因为这不是一个自动过程 - 有人手动执行了这些步骤。您尚未在克隆服务器上执行此操作,因此尚无日志记录。

相关内容