簡體   English   中英

在VPN Azure上將節點VM連接到SQL VM

[英]Connecting Node VM to SQL VM on VPN Azure

我在Azure上有兩個VM:機器A:是運行Node.js應用程序的服務器機器B:是運行mysql實例的VM

機器A和B在同一個VPN中,具有本地地址。 我使用ping測試了從機器A到B的連接,並且可以正常工作。

我的問題是關於來自nodejs應用程序和mysql實例的數據庫連接。

app.js

var express = require('express'),
  config = require('./config/config'),
  db = require('./app/models');

var app = express();

module.exports = require('./config/express')(app, config);

db.sequelize
  .sync()
  .then(function () {
    if (!module.parent) {
      app.listen(config.port, function () {
        console.log('Express server listening on port ' + config.port);
      });
    }
  }).catch(function (e) {
    throw new Error(e);
  });

config.js

var path = require('path'),
    rootPath = path.normalize(__dirname + '/..'),
    env = process.env.NODE_ENV || 'production';

var config = {
  development: {
    root: rootPath,
    app: {
      name: 'api-http-revo'
    },
    port: process.env.PORT || 3000,
    db: 'mysql://localhost/api-http-revo-development'
  },

  test: {
    root: rootPath,
    app: {
      name: 'api-http-revo'
    },
    port: process.env.PORT || 3000,
    db: 'mysql://localhost/api-http-revo-test'
  },

  production: {
    root: rootPath,
    app: {
      name: 'api-http-revo'
    },
    port: process.env.PORT || 3000,
    db: {
      host: '10.0.0.4', //Local Ip address on VPN
      user: 'myusername',
      password: 'mypassword',
      database: 'db-revo',
      port: 3306
    }
  }
};

module.exports = config[env];

“ npm start”上的錯誤:

未處理的拒絕錯誤:SequelizeConnectionRefusedError:在tryCatcher的/home/giovannimarino/api-http-revo/app.js:20:11處連接ECONNREFUSED 10.0.0.4:3306(/ home / giovannimarino / api-http-revo / node_modules / bluebird /在Promise._settlePromiseFromHandler(/home/giovannimarino/api-http-revo/node_modules/bluebird/js/release/promise.js:512:31)中的js / release / util.js:16:23)在Promise._settlePromise(/主頁/giovannimarino/api-http-revo/node_modules/bluebird/js/release/promise.js:569:18)在Promise._settlePromise0(/ home / giovannimarino / api-http-revo / node_modules / bluebird / js / release /在Promise._settlePromises(/home/giovannimarino/api-http-revo/node_modules/bluebird/js/release/promise.js:689:18)處的Promise._settlePromises在Async._drainQueue(/ home / giovannimarino /在Async._drainQueues(/home/giovannimarino/api-http-revo/node_modules/bluebird/js/release/async.js上的api-http-revo / node_modules / bluebird / js / release / async.js:133:16): 143:10)在Instant.Async.drainQueues [as _onImmediate](/ home / giovannimarino / a pi-http-revo / node_modules / bluebird / js / release / async.js:17:14)在processImmediate [as _immediateCallback](timers.js:383:17)

以下屏幕截圖是防火牆配置:

機器B: 在此處輸入圖片說明

機器A 在此處輸入圖片說明

這可能是由於防火牆阻止了數據庫連接。 要進行確認,請在端口3306上進行telnet驗證,如果發現該telnet被阻塞,則設置入站規則以允許兩個系統上的端口3306上的網絡流量通過。

有關如何設置網絡流量規則的更多信息,請參見此處。

暫無
暫無

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

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