我正在使用Azure VM進行部署的NodeJS項目。目前,數據庫和服務器都在一個虛擬機中。有了這個實現,我可以很容易地訪問到這個數據庫,現在,我試圖將數據庫移動到另一個虛擬機。我爲端口27017創建了一個端點,並在兩個虛擬網絡之間配置了VNET到VNET的連接。但嘗試連接到數據庫時,仍然收到錯誤Connection refused
。從另一個Azure VM連接到Azure VM上的mongodb
有沒有人在Azure虛擬機上配置mongodb?
我正在使用Azure VM進行部署的NodeJS項目。目前,數據庫和服務器都在一個虛擬機中。有了這個實現,我可以很容易地訪問到這個數據庫,現在,我試圖將數據庫移動到另一個虛擬機。我爲端口27017創建了一個端點,並在兩個虛擬網絡之間配置了VNET到VNET的連接。但嘗試連接到數據庫時,仍然收到錯誤Connection refused
。從另一個Azure VM連接到Azure VM上的mongodb
有沒有人在Azure虛擬機上配置mongodb?
通過在一個VNET內部使用子網進行網絡分區而不是使用單獨的VNET,您將使您的生活變得更輕鬆(並且可以節省資金)。
如果您使用單獨的VNET,則必須通過Internet配置VPN連接,或配置VNET對等(它們按每GB傳輸的價格進行配置)。除非你有非常特殊的要求(比如你正在運行一個專用的ExpressRoute到內部網絡),否則你希望在同一個VNET中擁有一切。
quickstart-templates通常每個創建一個VNET;這是爲了演示的目的。在生產環境中,如果需要,您可以擁有一個帶有多個子網的單個VNET。如果您查看模板,可以很容易地看到您指定對現有VNET的引用。
我打算將數據庫保存在一個虛擬機中,並且會有其他幾個虛擬機連接到其他位置。 我已經按照本教程配置了2 VNET之間的VPN連接https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-configure-vnet-to-vnet-connection/ 但是我仍然無法連接到其他VM中的數據庫 – DucPham
您可以嘗試在您的mongodb服務器虛擬機中創建SSH隧道,並通過此隧道連接mongodb服務器。你可以參考他在https://azure.microsoft.com/en-us/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 [email protected]
27018
位於Azure管理門戶虛擬機的儀表板中然後你可以通過下面的代碼連接到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!")
});
您正在使用哪種類型的虛擬機,經典或手臂?你正在使用哪個平臺? Windows還是Linux? –
我正在使用Linux經典虛擬機 – DucPham
您是否配置了'mongodb.conf'以允許遠程MongoDB連接? –