[英]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
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.