Ubuntu

Node.js 不與 Mongodb 對話

  • April 6, 2017

我繼承了一個伺服器,原來的管理團隊已經不在了。我們有一個正在執行的實時伺服器,但我正在嘗試將其成功轉換為 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 BTW 中沒有任何內容)

簡而言之:您可以看到有人創建了第一個管理員使用者,這在經過身份驗證的數據庫上是必需的。

埠號36001不重要;那是客戶端隨機分配的埠號

但是,IP 地址127.0.0.1很重要:這表明客戶端是從同一台電腦連接的。這意味著它要麼在數據庫伺服器上執行,要麼在其他地方執行但通過隧道連接。

日誌條目很有趣:

  • 連接在伺服器啟動後的幾秒鐘內加上時間戳,去年 8 月
  • 再停一分鐘
  • 然後在一秒鐘內記錄了發生的事情的日誌
  • 對新文件admin.nsadmin.0的引用確認admin數據庫正在創建並首次寫入。
  • 有創建使用者的記錄
  • 還有幾分鐘的停頓
  • 會話已斷開

對我來說,看起來數據庫管理員已經在新伺服器上整理了身份驗證,如下所示:

之所以在實時伺服器的日誌中記錄它,但在複製伺服器的日誌中沒有記錄,是因為它不是一個自動過程——有人手動執行了這些步驟。您(還)沒有在複製伺服器上這樣做,因此(還)沒有它的日誌跟踪。

引用自:https://serverfault.com/questions/841497