簡體   English   中英

從另一個Azure VM連接到Azure VM上的mongodb

[英]Connect to mongodb on Azure VM from another Azure VM

我正在使用Azure VM進行部署的NodeJS項目。 當前,數據庫和服務器位於單個VM中。 通過此實現,我可以通過此mongoose.connect("mongodb://localhost")輕松訪問數據庫。

現在,我正在嘗試將數據庫移至另一個VM。 我已經為端口27017創建了一個端點,並配置了2個虛擬網絡之間的VNET到VNET連接。 但是在嘗試連接數據庫時,我仍然收到錯誤“ Connection refused ”。

是否有人在Azure VM上配置mongodb有經驗?

通過將一個VNET內的子網用於網絡分區,而不是使用單獨的VNET,將使您的生活更加輕松(並節省金錢)。

如果使用單獨的VNET,則要么必須配置Internet上的VPN連接,要么配置VNET對等(它們按傳輸的每GB的價格收費)。 除非您有非常特殊的要求(例如,您正在運行到內部部署網絡的專用ExpressRoute),否則您希望將所有內容都放在同一個VNET中。

快速入門模板通常每個創建一個VNET。 這是出於演示目的。 在生產環境中,如有必要,您將擁有一個帶有多個子網的單個VNET。 如果查看模板,則很容易看到在哪里指定對現有VNET的引用。

您可以嘗試在mongodb服務器VM中創建SSH隧道,並通過此隧道連接mongodb服務器。 您可以在https://azure.microsoft.com/zh-cn/blog/create-your-own-dedicated-mysql-server-for-your-azure-websites/上參考類似的場景。

在虛擬機中安裝mongodb之后,請嘗試執行以下命令,最后在我這一邊工作正常:

  • sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 27017 -j ACCEPT
  • sudo netstat -anltp|grep :27017
  • sudo ssh -fNg -L 27017:127.0.0.1:27018 azurevmuser@servername
  • 在Azure管理門戶中VM的儀表板中為端口27018創建端點

然后,您可以通過以下代碼連接到mongodb:

 var mongoose = require('mongoose');
    mongoose.connect('mongodb://<your_server_vm>.cloudapp.net:27018/test');
    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', function() {
     console.log("we're connected!")
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM