外部からMongoDBサーバーにアクセスする。
公認IP設定とACG構成を利用してNAVERクラウドプラットフォームMongoDBにアクセスする方法について説明します。
公認IPの設定
作成されたサーバーに外部からアクセスするためには、公認IPの設定が必要です。
① メニューからPublic IPをクリックします。
② 公認IPの申込をクリックします。
③ 適用サーバーの選択ドロップダウンから作成されたサーバーを選択します。
- Replica Set Clusterの場合、PrimaryサーバーとSecondary公認IPを割り当てなければなりません。
- Shard Clusterの場合、Mongosサーバーに公認IPを割り当てられなければなりません。
④ [次]をクリックします。
⑤ 適用サーバー名を確認し、[確認]をクリックします。
⑥ 数分後、IPアドレスが割り当てられます。
ACGの確認
① サーバーを選択します。
② ACG 右側のポップアップメニューをクリックします。 現在allopen2ルールが適用されています。
③ 左側のACGメニューからも確認が可能です。
④ 適用されたルールを拡張します。
⑤ 適用されたサーバーを確認します。
⑥ ルール表示をクリックして該当ACGの詳細設定を確認します。 接続したいMongoDBのポートが許可ポートとして登録されている必要があります。
⑦ ACGルール変更が必要であれば、ACG設定ボタンをクリックします。
⑧ 個人の PC または Web サーバーが DB に接続できるように ACG 設定を入力します。
- プロトコル: 許容するプロトコルを選択します。
アクセス: アクセスを試みる先のIPや帯域を記入します。 例えば単一IPの場合10.64.51.205だけ入力して、10.64.51.XXX帯域ですべてのアクセスが必要な場合、10.64.51.0/24を入力します。 内部Private IPがNAT方式を通じて外部に出る場合は、Public IPを入力しなければなりません。 全ての帯域をオープンした場合、0.0.0.0/0を入力します。 可能であれば、個人のPC、ウェブサーバーでのみアクセスできるように、単一IPに設定することをお勧めします。
許容ポート(サービス) : ポートを個別にオープンする場合、必要なポート番号を許容ポート(サービス)に入力し、追加ボタンを押します。 必要なポートが複数である場合、行を追加して入力します。 すべてのポートをオープンした場合、1-65535を入力します。 但し、この場合、サーバはセキュリティに脆弱になります。 例題では1-65535を入力しました。
⑨ 追加アイコンをクリックします。
⑩ [作成]をクリックします。
DB 接続
① node.jsを通じてMongoDBに接続する例です。
設定した公認IPから接続できます。
Connection Stringと使用するDB名は、以下のように入力します。
Single Node : mongodb://[アカウント名:アカウントパスワード]@[公認IP:PORT]/[DB名]
Mongos(Sharded Cluster) : mongodb://[アカウント名:アカウントパスワード]@[公認IP:PORT,公認IP:PORT(IP:PORTはメンバーの個数だけ登録)]/[DB名]
Replica Set : mongodb://[アカウント名:アカウントパスワード]@[公認IP:PORT,公認IP:PORT(IP:PORTはメンバーの個数だけ登録)]/[DB명]?replicaSet=[replicaSet名]
// Replica Set Connection String
// mongoose.connect('mongodb://username:password@106.10.32.232:27017,106.10.32.233,106.10.32.234:27017/testdb?replicaSet=test01'
// ,{ useNewUrlParser: true } )
// Mongos(Sharded Cluster) Connection String
// mongoose.connect('mongodb://username:password@106.10.32.232:27017,106.10.32.233,106.10.32.234:27017/testdb'
// ,{ useNewUrlParser: true } )
// Single Node Connection String
mongoose.connect('mongodb://username:password@106.10.32.232:27017/testdb'
,{ useNewUrlParser: true } )
var db = mongoose.connection;
db.on('error', function(err){
console.log("MongoDB Connection Fail", err);
});
db.once('open', function(){
console.log("MongoDB Connection Success");
});