2017-03-03 14 views
1

私はアプリケーションサービスとしてAzureでnode.jsアプリケーションを実行しています。 mongoose + tunnel-sshを介してMongoDBに接続します。私は、複数のApp Servicesをさまざまな場所に配備しており、すべて正常に動作します。アプリケーションサービスとしてAzureで実行されているnode.jsアプリケーションのステージングスロットが私にEADDRINUSEを返します

私はステージングインスタンスのSSHトンネルからエラーを以下の取得、ステージングスロット(注:PRODスロットがまだ正常に動作します。):作成すると私には

{"code":"EADDRINUSE", "errno":"EADDRINUSE", "syscall":"listen", "address":"127.0.0.1", "port":27017} 

を、ステージングスロットが実行されているようです同じVMを使用し、本番と同じポートを使用しようとします。そのため、DBへの接続を確立できません。つまり、別のインスタンスが同じ問題を抱えているため、私はおそらくアプリケーションをスケールアウトすることができません。

これをステージングと他のインスタンス(スケーリング時)の両方でどのように解決できますか?

ステージングでは異なるポートを使用できますが、スケーリングされたインスタンスでも機能するように動的に設定する方法はありますか?

答えて

0

エラーメッセージによると、スロットWebアプリケーションアプリケーション用のMongoDBの接続文字列を構成するのを忘れているようです。

展開スロットは、実際に自分のホスト名とライブアプリケーションです:私たちはSet up staging environments in Azure App Serviceの命令で文を見つけることができたよう

。アプリコンテンツとコンフィグレーション要素は、プロダクションスロットを含む2つのデプロイメントスロット間で交換できます。

基本的に、スロットを個別のWebアプリケーションとして扱うことができます。だから、あなたのスロットアプリケーションでアプリケーションの設定をもう一度確認してください。

+0

私はもっと掘り下げました - 私は私のウェブアプリケーションを孤立させましたので、私以外の誰もそれにアクセスできませんでした。私はprodとstgの両方のスロットを再起動しました。同じ状況で終了しました.prodはSSH経由でDBに接続できました。私がプロダクトを止めたとき、stgは突然接続することができましたが、prodを有効にした後は、このスロットで問題全体が移動しました。これは私には1つのスロットだけがsshトンネル(ポートを使用)を作成して使用できるように思えます。 – Michal

+0

あなたはどのmongodbサービスを使用していますか?それが私を混乱させたので、どのエラーメッセージに「アドレス」が表示されました:「127.0.0.1」。現在、スロットのmongodbの別のポートを有効にし、回避策として、mongodb接続文字列の異なるスロットに異なるアプリケーション設定を設定することができます。 –

+0

AzureでホストされているBitnamiからの複製を持つMongoDBです。アドレスはlocalhostです。なぜなら、Mongoをホストしている私のVMのパブリックIPにトラフィックを転送するsshトンネルが作成されているからです。 1つのスロットで動作するので、構成は正常でなければなりません。問題は、2番目の接続が確立できないということです。 – Michal

関連する問題