외부에서 MongoDB 서버에 접근하기
공인 IP 설정과 ACG 구성을 이용해 네이버 클라우드 플랫폼 MongoDB에 접근하는 방법을 설명합니다.
공인 IP 설정
생성된 서버에 외부에서 접근하기 위해서는 공인 IP 설정이 필요합니다.
① 메뉴에서 Public IP를 클릭합니다.
② 공인 IP 신청을 클릭합니다.
③ 적용 서버 선택 드랍 다운에서 생성된 서버를 선택합니다.
Replica Set Cluster의 경우 Primary 서버와 Secondary 공인 IP를 할당 받아야 합니다.
Shard Cluster의 경우 Mongos 서버에 공인 IP를 할당 받아야 합니다.
④ [다음]을 클릭합니다.
⑤ 적용 서버 이름을 확인하고 [확인]을 클릭합니다.
⑥ 수분 후 IP 주소가 할당됩니다.
ACG 확인
① 서버를 선택합니다.
② ACG 오른쪽 팝업 메뉴를 클릭합니다. 현재 all-open 룰이 적용되어 있습니다.
③ 좌측 ACG 메뉴를 통해서도 확인이 가능합니다.
④ 적용된 룰을 확장합니다.
⑤ 적용된 서버를 확인합니다.
⑥ 규칙보기를 클릭해 해당 ACG의 상세 설정을 확인합니다. 연결하고자 하는 MongoDB의 Port가 허용 포트로 등록되어 있어야 합니다.
⑦ ACG 룰 변경이 필요하면, ACG 설정 버튼을 클릭합니다.
⑧ 개인 PC 혹은 웹서버가 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");
});
```