MongoDB 커넥션 등록하기
Overview
MongoDB는 단일 호스트로 구성되는 경우 보다 Replica Set 또는 Sharded Cluster(Sharding)형태의 멀티 호스트 구조를 사용하는 경우가 많습니다. 이 경우 멀티 호스트 방식의 커넥션을 생성해야합니다.
MongoDB 커넥션 생성하기
1. MongoDB의 기본적인 Connection String 구조 이해하기
MongoDB의 connection string은 standard, +srv 두가지가 있습니다.
< Standard connection string의 구조 >
mongodb://[Hostname or IP]:[port],[Hostname or IP]:[port],[Hostname or IP]:[port]..../?[options]
mongodb:// : standard connection string scheme
Hostname or IP : mongodb 클러스터 멤버 호스트의 전체 도메인이름 또는 IP 주소
options : /? 뒤에 붙는 접속에 관련된 옵션. 여러개의 옵션을 사용할 경우 &로 붙여서 사용합니다.
ex. /?authSource=admin&replicaSet=rs0
replica set 을 사용하는 경우 /? 뒤에 replicaSet=[replica set 이름] 을 입력해야 합니다. ex. /?replicaSet=rs0
< +srv connection string의 구조 >
mongodb+srv://<FQDN>/?[options]
mongodb+srv:// : +srv connection string scheme
FQDN : Fully qualified domain name - DNS에 등록되어 있는 호스트네임과 도메인네임의 조합으로 이루어진 이름 ex. server1.example.com
options : /? 뒤에 붙는 접속에 관련된 옵션. 여러개의 옵션을 사용할 경우 &로 붙여서 사용합니다.
ex. /?authSource=admin&replicaSet=rs0
+srv 는 클러스터에 포함되어 있는 각각의 호스트의 주소가 동적으로 바뀔 수 있기 때문에 QueryPie에서 +srv를 직접 커넥션에 사용할 수는 없고 standard connection string으로 변환해서 사용하게 됩니다. 이런 변환과정으로 인해 현재 +srv 를 사용하여 접속하는 경우 하위 인스턴스에 직접 접속은 지원하지 않습니다. 그럼에도 불구하고 +srv 접속 환경의 하위 호스트에 대한 직접 접속이 필요한 경우, 사용자가 nslookup 명령을 사용하여 DNS 조회를 통해 각 호스트 정보를 확인 후 별도 standard connection string을 사용한 커넥션을 생성해서 접속을 해야합니다.
2. MongoDB 커넥션 생성하기

Settings > Database Settings > DB Connections > Create Connection > Select a data source
Database Settings 메뉴에서 DB Connections 메뉴로 이동합니다.
우측 상단의
Create Connection
버튼을 클릭합니다.데이터 소스 선택 단계에서 mongoDB를 선택합니다.
3. Replica Set 형태로 설정하기
< Standard Connection >

Allowed Zone에 알맞은 네트워크 zone 설정을 합니다.
Connection Name을 지정합니다.
Cluster
스위치를 를 켜서 클러스터 입력을 활성화한 후 다음의 정보들을 입력합니다.Type : 커넥션 정보에 노출되는 영역입니다. Primary 역할이 동적으로 바뀔 수 있으므로 기본값인
Primary
를 선택합니다.Expose : Connection 정보 화면 또는 agent의 접속대상 목록에 클러스터의 하위 노드(호스트 또는 인스턴스)를 펼쳐 볼수 있도록 하려면 “
Expandable
"을, 펼쳐 볼수 없도록 하려면 "Unexpandable
"을, 클러스터를 숨기고 하위 노드(호스트 또는 인스턴스)들만 표시하려면 "Hidden
"을 선택합니다.Connection String :
Scheme 선택항목에서
mongodb://
를 선택합니다.하위 호스트 이름과 포트를 쉼표로 구분하여 입력합니다.
Add Instance
버튼을 눌러 각 멤버 호스트를 인스턴스로 추가합니다.Instance Name : 각각의 호스트를 구별할 수 있는 이름을 입력합니다.
Connection String : 각 호스트를
호스트네임(도메인주소 또는 IP):[port]
형식으로 입력합니다.Expose 는 커넥션 정보에서의 개별 인스턴스의 노출 여부를 결정할 수 있는 옵션입니다.
멀티호스트 기능을 사용하기 위해서는 반드시 인스턴스가 expose 상태여야 하므로 반드시Expose
옵션을 활성화 시킵니다.

Authentication DB : Authentication DB(authSource)의 값을 입력합니다.
Other Options : Connection string에 사용하는 옵션 중 authSource를 제외한 나머지 값을 입력합니다.
예시 1) 단일 옵션만 사용하는 경우 형식 ( [Key]=[Value] ) : replicaSet=rs0
예시 2) 다중 옵션을 사용하는 경우 형식 ( [Key]=[Vaule]&[Key]=[Value] ) : replicaSet=rs0&tls=true
replica set 구성인 경우 replicaSet=[replicaset name] 옵션을 입력해야 합니다.Secret Store : 암호 및 키 관리를 3rd party를 사용할 경우를 위한 옵션입니다. 기본값 Querypie는 QueryPie 내부에서 관리하는 것을 의미합니다.
User Name & Password : 해당 데이터베이스의 사용자 이름과 비밀번호를 입력합니다.
Test Connection
버튼을 클릭하여, 입력한 접속 정보가 유효한지 확인할 수 있습니다.Next
버튼을 통해 마무리하고 저장합니다.
Cluster 모드에 대한 더 자세한 내용은 수동으로 커넥션 등록하기에서도 확인하실 수 있습니다.
< +srv Connection >

Allowed Zone에 알맞은 네트워크 zone 설정을 합니다.
Connection Name을 지정합니다.
Cluster
스위치를 를 켜서 클러스터 입력을 활성화한 후 다음의 정보들을 입력합니다.Type : 커넥션 정보에 노출되는 영역입니다. Primary 역할이 동적으로 바뀔 수 있으므로 기본값인
Primary
를 선택합니다.Expose : Connection 정보 화면 또는 agent의 접속대상 목록에 클러스터의 하위 노드(호스트 또는 인스턴스)를 펼쳐 볼수 있도록 하려면 “
Expandable
"을, 펼쳐 볼수 없도록 하려면 "Unexpandable
"을, 클러스터를 숨기고 하위 노드(호스트 또는 인스턴스)들만 표시하려면 "Hidden
"을 선택합니다.Connection String :
Scheme 선택항목에서
mongodb+srv://
를 선택합니다.도메인 형식의 호스트 이름(FQDN)을 입력합니다.
Lookup 버튼을 누릅니다. 정상적으로 DNS 조회가 되었다면 클러스터 포함된 노드가 인스턴스로 자동으로 추가 됩니다.
Authentication DB 및 Other Options
Authentication DB 값과 Other Options에도 DNS의 TXT레코드에서 조회된 값이 자동으로 입력됩니다.
+srv 스킴은 TLS 옵션이 자동으로 true이므로 standard string으로 변환하면 tls=true를 수동으로 입력해줘야 합니다. (TXT 레코드에 TLS 옵션이 없기 때문입니다.) 따라서 Other options 항목에 위 그림과 같이 &tls=true를 입력합니다.
Secret Store : 암호 및 키 관리를 3rd party를 사용할 경우를 위한 옵션입니다. 기본값 Querypie는 QueryPie 내부에서 관리하는 것을 의미합니다.
User Name & Password : 해당 데이터베이스의 사용자 이름과 비밀번호를 입력합니다.
Test Connection
버튼을 클릭하여, 입력한 접속 정보가 유효한지 확인할 수 있습니다.Next
버튼을 통해 마무리하고 저장합니다
4. Sharded Cluster(Sharding) 형태로 설정하기
Sharded Cluster는 Replica Set과 Connection String의 옵션만 다르고 설정 방법은 같습니다. Replica Set은 replicaSet=[replica set name] 옵션이 필요하지만 Sharded Cluster는 이 옵션이 필요 없습니다.

< Standard Connection >
Cluster
스위치를 를 켜서 클러스터 입력을 활성화한 후 다음의 정보들을 입력합니다.Type : 커넥션 정보에 노출되는 영역입니다. Primary 역할이 동적으로 바뀔 수 있으므로 Primary 값을 유지합니다.
Connection String :
Scheme 선택항목에서
mongodb://
를 선택합니다.각 mongos의 호스트 이름과 포트를 쉼표로 구분하여 입력합니다.
Add Instance
버튼을 눌러 각 mongos를 인스턴스로 추가합니다.mongodb://호스트네임(도메인주소 또는 IP):[port] 형식으로 입력 후 Instance Name을 알맞게 입력합니다.
Expose 는 커넥션 정보에서의 노출 여부를 결정할 수 있는 값입니다.
User Name & Password : 해당 커넥션 데이터베이스의 사용자 이름과 비밀번호를 입력합니다.
Authentication DB : Authentication DB(authSource)의 값을 입력합니다.
Other Options : Sharded cluster는 별도 추가 옵션이 필요하지 않을 수 있습니다.
Secret Store : 암호 및 키 관리를 3rd party를 사용할 경우를 위한 옵션입니다. 기본값 Querypie는 QueryPie 내부에서 관리하는 것을 의미합니다.
User Name & Password : 해당 데이터베이스의 사용자 이름과 비밀번호를 입력합니다.
Test Connection
버튼을 클릭하여, 입력한 접속 정보가 유효한지 확인할 수 있습니다.Next
버튼을 통해 마무리하고 저장합니다.
< +srv Connection >
standard string으로 변환된 뒤 tls=true 옵션만 Other options에 잘 넣어주면 됩니다. replica set 설정과 차이가 없습니다.
Cluster 모드에 대한 더 자세한 내용은 수동으로 커넥션 등록하기에서도 확인하실 수 있습니다.
관련 토픽