1

Google Compute EngineにデプロイされたBitnami mongodbインスタンスを使用しています。アプリがGoogleアプリケーションエンジンにデプロイされた後にmongodbに接続できない

MongoDBインスタンスの外部IPを使用して、私のパーソナルコンピュータからMongoDBクライアントを介してそのmongodbインスタンスに接続できます。

私のアプリはNode.jsバックエンドを持つAngular2アプリです。以下は、私はそれは問題もなく、クラウドとアクセスデータでインスタンスをMongoDBのために接続することができますローカルホスト上で自分のアプリケーションをホストする場合

mongoose.connect('mongodb://<username>:<password>@<External IP>:27017/<dbname>'); 

server.js

に使用する接続文字列形式です。

しかし、アプリがGoogleアプリケーションエンジンにデプロイされると、アプリはもうmongodbに接続しなくなります。 以下はエラーです。

MongoError: failed to connect to server [<External IP>:27017] on first connect 

誰かが根本的な原因を示唆できますか。

答えて

4

App Engineインスタンスは、Compute Engineインスタンスと同じプライベート内部ネットワークの一部です。 App Engineアプリケーションは、公共のインターネットを経由することなく、同じプロジェクト内のCompute Engineでホストされているサービスと通信できます。多くの場合、アプリケーションは外部のパブリックIPアドレスをデータベースに割り当てることなく、インスタンスの内部IPアドレスを使用してサービスに接続します。必要に応じて、パブリックIPアドレスを割り当てて、Google Cloud Platform以外からデータベースにアクセスできるようにすることができます。

また、データベースエンジンとファイアウォールが接続を受け入れるように正しく設定されている場合、App EngineアプリケーションはパブリックIP経由でデータベースに接続できます。 App Engineアプリケーションは、サービスのパブリックIPアドレスを使用してデータベースに接続します。

デフォルトでは、mongodbデーモンはTCPポート27017でリッスンしています。したがって、このポートとプロトコルに対しては、Compute Engineファイアウォールにファイアウォールルールを追加する必要があります。ファイアウォールルールを更新しました

gcloud compute firewall-rules create allow-mongodb --allow tcp:27017

+1

:これはGoogleクラウドコンソールを使用するか、gcloudコマンドツールを使用して行うことができます。しかし、同じエラーです。私はgcloudシェルからmongodbの外部IPにpingできます。 – lkman

+0

これはGoogleの内部構成に関連しているようです。あなたは内部IPへの要求をしてみましたか? –

+0

クラウドコンソールから内部IPにpingできません。私も接続文字列でそれを試してみました。失敗。 – lkman

関連する問題