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 커넥션 생성하기
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 모드에 대한 더 자세한 내용은 수동으로 커넥션 등록하기에서도 확인하실 수 있습니다.
관련 토픽