참고
이 페이지는 Atlas Infinite와 Atlas Core 모두에 적용됩니다.
이 페이지의 섹션을 검토하여 일반적인 비공개 엔드포인트 연결 문제를 진단하고 해결합시오.
전용 클러스터
AWS PrivateLink 연결 상태를 확인합니다.
각 비공개 엔드포인트의 상태를 보려면 다음과 같이 하세요:
Atlas에서 프로젝트의 Database & Network Access 페이지로 이동합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.
아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.
사이드바에서 Security 제목 아래의 Database & Network Access를 클릭합니다.
The Database & Network Access page displays.
사이드바에서 Private Endpoint를 클릭합니다.
상태를 검토합니다.
Atlas Endpoint Service Status 및 Endpoint Status 필드에는 각 비공개 엔드포인트의 상태가 표시됩니다.
비공개 엔드포인트 연결의 상태 를 확인하려면 다음 상태를 참조하세요.
Atlas Endpoint Service Status
상태 | 설명 |
|---|---|
비공개 링크 만들기 | Atlas가 네트워크 로드 밸런서와 VPC 리소스를 생성하고 있습니다. |
실패하였습니다. | 시스템 장애가 발생했습니다. |
사용 가능 | Atlas 네트워크 로드 밸런서와 VPC 엔드포인트 서비스가 생성되었으며 연결 요청을 수신할 준비가 되었습니다. |
삭제 | Atlas 가 비공개 엔드포인트 서비스를 삭제하고 있습니다. |
Endpoint Status
상태 | 설명 | |||
|---|---|---|---|---|
구성되지 않음 | Atlas created the network load balancer and VPC endpoint service, but AWS hasn't yet created the interface endpoint. Click Edit and complete the wizard to create the interface endpoint. | |||
승인 보류 중 | AWS has received the connection request from your interface endpoint to the Atlas VPC endpoint service. | |||
보류 중 | Amazon Web Services 인터페이스 엔드포인트 와 Atlas VPC 엔드포인트 서비스 간의 연결을 설정하고 있습니다. | |||
실패/거부 | AWS failed to establish a connection between Atlas VPC resources and the interface endpoint in your VPC. This status may appear as Failed or Rejected depending on the failure reason. 일반적인 원인은 다음과 같습니다.
구성이 올바르다고 확인했는 경우 실패가 일시적인 Amazon Web Services 지연 때문일 수 있는 경우 Atlas UI의 Retry 버튼을 사용하여 연결을 다시 시도할 수 있습니다. 문제가 계속되면 엔드포인트 ID를 수정하려면 Edit를 클릭하거나, 엔드포인트의 리전이 허용된 엔드포인트 리전에 포함되어 있는지 확인합니다. To learn more about troubleshooting failed endpoints, see Troubleshoot Private Endpoint Connection Issues. 중요: 인터페이스 엔드포인트에 장애가 발생하면 다음 메시지가 표시될 수 있습니다. 이 메시지는 AWS PrivateLink 연결을 생성할 때 서브넷을 지정하지 않았음을 나타냅니다. 이 오류를 해결하려면 다음을 수행합니다.
| |||
사용 가능 | Atlas VPC resources are connected to the interface endpoint in your VPC. You can connect to Atlas clusters in this region using AWS PrivateLink. | |||
삭제 | Atlas 가 비공개 엔드포인트 서비스에서 인터페이스 엔드포인트 를 제거합니다. |
보안 그룹이 올바르게 구성되었는지 확인합니다.
For each resource that needs to connect to your Atlas clusters using AWS PrivateLink, the resource's security group must allow outbound traffic to the interface endpoint's private IP addresses on all ports (1024-65535).
자세한 사항은 보안 그룹에 규칙 추가하기 를 참조하십시오.
당신의 인터페이스 엔드포인트 보안 그룹은 AWS PrivateLink를 사용하여 Atlas 클러스터에 연결해야 하는 각 리소스의 모든 포트에서 인바운드 트래픽을 허용해야 합니다.
인스턴스 IP 주소 또는 보안 그룹을 액세스 하여 해당 인스턴스의 트래픽이 인터페이스 엔드포인트 보안 그룹 도달할 수 있도록 허용합니다.
리전 간 비공개 엔드포인트 문제
다음 섹션에서는 리전 간 비공개 엔드포인트 연결의 일반적인 문제와 해결 방법을 설명합니다.
엔드포인트 제출 실패(누락된 리전)
제출 중에 소비자 엔드포인트가 있는 리전 을 지정하는 것을 잊은 경우, 엔드포인트 서비스가 연결을 찾아 수락할 수 없기 때문에 Atlas 의 엔드포인트 상태가 Failed 또는 Rejected 로 전환됩니다.
이 문제를 해결하려면 다음을 수행합니다.
허용된 엔드포인트 리전에 누락된 리전 추가합니다.
허용된 엔드포인트 리전 목록에 누락된 리전을 추가합니다. 자세한 내용은 허용된 엔드포인트 리전 관리를 참조하세요.
경고
실패한 엔드포인트가 해당 비공개 엔드포인트 서비스에 등록된 유일한 엔드포인트인 경우에는 삭제 하지 마세요. 마지막 엔드포인트를 삭제 하면 전체 엔드포인트 서비스가 자동으로 삭제되며 전체 구성 프로세스 다시 시작해야 합니다.
엔드포인트 제출 실패(잘못된 엔드포인트 ID)
잘못된 AWS VPC 엔드포인트 ID(예시: 오타 또는 다른 서비스나 VPC의 ID)를 제출하면 엔드포인트 서비스가 연결을 찾고 수락할 수 없기 때문에 Atlas의 엔드포인트 상태가 Failed 또는 Rejected로 전환됩니다.
다음 방법 중 하나를 이용하여 이 문제를 해결할 수 있습니다.
기존 엔드포인트 항목에서 ID를 수정하려면:
실패한 항목을 그대신 새 엔드포인트로 대체하려면:
올바른 ID 로 새 엔드포인트를 추가합니다.
올바른 엔드포인트 ID 사용하여 새 엔드포인트를 추가합니다. 자세한 학습 은 전용 클러스터를 위한 비공개 엔드포인트 설정을 참조하세요.
경고
실패한 엔드포인트가 해당 비공개 엔드포인트 서비스에 등록된 유일한 엔드포인트인 경우에는 삭제 하지 마세요. 마지막 엔드포인트를 삭제 하면 전체 엔드포인트 서비스가 자동으로 삭제되며 전체 구성 프로세스 다시 시작해야 합니다.
엔드포인트 제출 실패(일시적 또는 알 수 없는 오류)
엔드포인트 제출이 실패하고 다음을 이미 확인한 경우:
필요한 리전 비공개 엔드포인트 서비스에 허용되는 엔드포인트 리전에 포함되어 있습니다.
제출된 엔드포인트 ID가 올바르며 Amazon Web Services에서 생성한 VPC 엔드포인트와 일치합니다.
실패는 일시적인 AWS 문제 또는 초기 승인 과정에서의 오류 때문일 수 있습니다.
참고
엔드포인트가 Amazon Web Services에서 Pending Acceptance 상태가 된 후에도 모든 배경 리소스가 업데이트되는 데 약간의 지연이 발생할 수 있습니다. 특히 리전 간 엔드포인트는 다른 리전에서 Atlas 엔드포인트 서비스에 의해 발견될 수 있게 되는데 추가로 30 초가 걸릴 수 있습니다.
이 문제를 해결하려면 다음을 수행합니다.
경고
실패한 엔드포인트가 해당 비공개 엔드포인트 서비스에 등록된 유일한 엔드포인트인 경우에는 삭제 하지 마세요. 마지막 엔드포인트를 삭제 하면 전체 엔드포인트 서비스가 자동으로 삭제되며 전체 구성 프로세스 다시 시작해야 합니다.
DNS 조회로 비공개 IP 얻기
When a client in your VPC connects to an Atlas cluster using one of these private endpoint-aware connection strings, the client attempts to establish a connection to the load balancer in the Atlas VPC through one of the interface endpoints. Your client's DNS resolution mechanism handles which of the interface endpoints the hostname resolves to. If one interface endpoint is unavailable the next is used. This is opaque to the driver or other connection mechanism. The driver is only aware of the hostname in the SRV record or in the connection string.
DNS 시드 목록 비공개 엔드포인트 인식 연결 문자열에 대한 SRV 레코드
다음 예시는 AWS PrivateLink 허용 단일 리전 클러스터에 대한 SRV 기록으로, pl-0-us-east-1.k45tj.mongodb.net에 대해 정의된 세 개의 고유 포트를 표시합니다.
nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1026 pl-0-us-east-1.k45tj.mongodb.net. _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1024 pl-0-us-east-1.k45tj.mongodb.net. _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1025 pl-0-us-east-1.k45tj.mongodb.net.
앞의 예시에서
_mongodb._tcp.cluster0-pl-0.k45tj.mongodb.netmongodb+srv://cluster0-pl-0.k45tj.mongodb.net연결 문자열이 참조하는 SRV 레코드입니다.pl-0-us-east-1.k45tj.mongodb.net한 리전의 Atlas 클러스터에 있는 각 노드에 대한 호스트 이름에 대해 AWS PrivateLink를 구성했습니다.10241025및1026는 AWS PrivateLink를 허용한 리전의 각 Atlas 복제본 세트 노드에 대해 Atlas가 로드 밸런서에서 할당하는 고유 포트입니다. Atlas 복제본 세트의 모든 노드는 동일한 호스트 이름을 통해 액세스할 수 있으며, 로드 밸런서는 개별 노드를 고유 포트로 확인합니다.
비공개 엔드포인트 인식 연결 문자열 및 SRV 레코드의 호스트 이름 DNS 확인
The hostname in the SRV record and the standard connection string is a DNS Canonical Name (CNAME) record that resolves to the endpoint-specific regional DNS name that AWS generates for the interface endpoint. A DNS ALIAS record exists for each subnet in your VPC that you deployed the interface endpoint to. Each ALIAS record contains the private IP address of the interface endpoint for that subnet.
다음 예는 인터페이스 엔드포인트와 해당 DNS 기록에 대한 엔드포인트별 리전 DNS 이름을 포함하여 SRV 기록 및 표준 연결 문자열에서 호스트 이름에 대한 DNS ALIAS 기록을 보여줍니다.
nslookup pl-0-us-east-1.k45tj.mongodb.net Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: pl-0-us-east-1.k45tj.mongodb.net canonical name = vpce-024f5b57108c8d3ed-ypwbxwll.vpce-svc-02863655456245e5c.us-east-1.vpce.amazonaws.com. Name: vpce-024f5b57108c8d3ed-ypwbxwll.vpce-svc-02863655456245e5c.us-east-1.vpce.amazonaws.com Address: 10.0.30.194 Name: vpce-024f5b57108c8d3ed-ypwbxwll.vpce-svc-02863655456245e5c.us-east-1.vpce.amazonaws.com Address: 10.0.20.54
열려 있는 연결이 너무 많아 연결이 거부됨
If your connections exceed the connection limits for your cluster service limit, you should increase the cluster tier.
If your connection count is significantly higher than your expected connection count, see section below Gather More Information on the Client Making the Most Connections.
로드 밸런싱에 최적화된 연결 문자열 사용하여 샤딩된 클러스터 v7.0.22 에 적용합니다.
$ mongosh "mongodb+srv://aws-replica-set-7-pl-0-lb.22qdu.mongodb-dev.net/" --apiVersion 1 --username sarah Enter password: ***** Current Mongosh Log ID: 68910f1754be6d9adc74e399 Connecting to: mongodb+srv://<credentials>@aws-replica-set-7-pl-0-lb.22qdu.mongodb-dev.net/?appName=mongosh+2.5.6 MongoNetworkError: Client network socket disconnected before secure TLS connection was established
{"t":{"$date":"2025-08-04T19:48:17.649+00:00"},"s":"I", "c":"NETWORK", "id":22942, "ctx":"listener","msg":"Connection refused because there are too many open connections","attr":{"remote":"54.172.143.8:33205", "isLoadBalanced":false,"uuid":{"uuid":{"$uuid":"e52e9c14-7648-430a-bc2e-95292347b7e0"}}, "connectionId":380,"connectionCount":58}}
클라이언트 소스 IP 보기
비공개 엔드포인트를 통해 연결하는 샤딩된 클러스터에 대한 mongos 로그에서 클라이언트 소스 IP 볼 수 있습니다.
비공개 엔드포인트를 통해 연결하는 복제본 세트에 대한 mongod 로그에서 클라이언트 소스 IP 볼 수 있습니다.
비공개 엔드포인트를 통해 연결하는 복제본 세트와 샤딩된 클러스터 모두에 대한 감사 로그에서 클라이언트 소스 IP 볼 수 있습니다.
이 기능은 다음 버전의 Amazon Web Services 에서 지원됩니다.
8.1 및 v8.1.0+
8.0 및 v8.0.10+
7.0 및 v7.0.22+
원본 클라이언트 IP 주소 및 포트는
sourceClient필드 로 표시됩니다. 이 값은 위의 예시 에서10.50.4.23입니다.{"t":{"$date":"2025-07-21T12:15:42.123+00:00"},"s":"I","c":"NETWORK", "id":22943,"ctx":"listener","msg":"Connection accepted","attr":{"remote":"192.168.100.55:31245", "isLoadBalanced":true,"sourceClient":"10.50.4.23:50123","uuid":{"uuid":{"$uuid":"12345678-abcd-4321-abcd-87654321abcd"}}, "connectionId":345,"connectionCount":19}}
가장 많은 연결을 달성하는 클라이언트에 대한 추가 정보 수집
이러한 세부 정보를 수집하려면 jq 웹사이트에서 다운로드할 수 있는 jq 도구를 사용해야 합니다.
클라이언트 메타데이터 에서 생성된 연결
다음 쿼리 특정 클라이언트 IP 주소 에서 생성된 연결 수를 제공합니다. sourceClient 속성을 사용하여 정확한 소스 VPC 비공개 IP 주소 수집할 수 있습니다.
grep 'Connection accepted' mongod.log | jq -r '(.attr.sourceClient // .attr.remote)' | awk -F: '{print $1}' | sort | uniq -c | sort -rn
25957 192.168.254.155 25957 192.168.253.161 25957 192.168.248.236 14420 10.70.2.254 14420 10.70.2.116
애플리케이션에서 클러스터 에 연결하는 데 사용하는 드라이버
다음 쿼리 각 운전자 에서 생성한 연결 수를 제공합니다. 이는 고객이 애플리케이션마다 다른 드라이버를 사용할 수 있는 시나리오에서 유용합니다.
more mongodb.log| grep 'NETWORK' | jq -r '.attr.doc.driver.name' | grep -v null | sort | uniq -c | sort -rn
56447 mongo-go-driver 21633 mongo-java-driver|sync 75 mongo-java-driver|sync|Airbyte 4 nodejs|Mongoose
연결 수와 운전자 세부 정보에 대한 보다 자세한 분석을 위해 생성 및 종료된 연결 수에 대한 포괄적인 정보와 운전자 이름 및 버전 세부 정보를 제공하는 다음 Python 스크립트 사용할 수 있습니다.
import json import sys def process_log_file(json_file_path): # Dictionary to store the filtered data filtered_data = {} with open(json_file_path, "r") as json_file: # Read the file line by line for line in json_file: # Parse each line as a separate JSON object data = json.loads(line) if 'msg' in data and data['msg'] == 'client metadata': # Extract the relevant data from the JSON object drivername = data['attr']['doc']['driver']['name'] driverversion = data['attr']['doc']['driver']['version'] connectionid = data['ctx'] # Create a unique key for the driver based on name and version driver_key = (drivername, driverversion) # Add the connection ID to the driver's set of connections if driver_key not in filtered_data: filtered_data[driver_key] = {'connections': set(), 'opencount': 0, 'closedcount': 0} filtered_data[driver_key]['connections'].add(connectionid) filtered_data[driver_key]['opencount'] += 1 if 'msg' in data and data['msg'] == 'Connection ended': connectionid = data['ctx'] # Check if the connection ID exists in any driver's connections for driver_data in filtered_data.values(): if connectionid in driver_data['connections']: driver_data['closedcount'] += 1 driver_data['connections'].remove(connectionid) # Print the filtered data for each driver for driver_key, driver_data in filtered_data.items(): print('Driver:', driver_key) print('Connection Opened:', driver_data['opencount']) print('Connection Closed:', driver_data['closedcount']) if __name__ == '__main__': # Check if a JSON file argument is provided if len(sys.argv) < 2: print("Please provide the path to a JSON file as an argument.") sys.exit(1) # Extract the JSON file path from the command-line arguments json_file_path = sys.argv[1] # Process the log file process_log_file(json_file_path)
Driver: ('mongo-go-driver', 'v1.12.0-cloud') Connection Opened: 14368 Connection Closed: 14362 Driver: ('mongo-go-driver', 'v1.12.1') Connection Opened: 42056 Connection Closed: 41958 Driver: ('mongo-java-driver|sync', '4.11.1') Connection Opened: 18012 Connection Closed: 17987 Driver: ('mongo-java-driver|sync', '4.8.2') Connection Opened: 3621 Connection Closed: 3610 Driver: ('nodejs|Mongoose', '4.17.1|6.12.0') Connection Opened: 3 Connection Closed: 1 Driver: ('mongo-go-driver', 'v1.13.0') Connection Opened: 23 Connection Closed: 20 Driver: ('mongo-java-driver|sync|Airbyte', '4.11.0') Connection Opened: 75 Connection Closed: 75 Driver: ('nodejs|Mongoose', '4.17.2|6.13.0') Connection Opened: 1 Connection Closed: 0
클라이언트 애플리케이션이 클러스터 에 연결하는 데 사용하는 애플리케이션 이름
We can suggest that customers include the application name in the connection string to specify different applications connecting to the cluster. By using the appName, we can identify which application is creating many connections to the cluster in the future. See the Miscellaneous Configuration section of our documentation for more details on using the appName in the connection string. Additionally, you can use the db.currentOp().appname command to see the current operations associated with the application name. The following query provides details of the appName with the number of connections created by that particular application.
more mongodb.log| grep 'NETWORK' | jq -r '.attr.doc.application.name' | grep -v null | sort | uniq -c | sort -rn
10809 niyo-*******-api 8616 MongoDB CPS Module v13.17.2.8878 (git: 70c0b932f47f4f0b3e82a75e223f39ed9635b47f) 7203 niyo-ns***** 5752 MongoDB Automation Agent v13.17.2.8878 (git: 70c0b932f47f4f0b3e82a75e223f39ed9635b47f) 3601 *****-auth-service
제공된 세부 정보는 높은 연결 수의 원인이 되는 특정 요인을 정확히 파악하는 데 도움이 됩니다. 소스 클라이언트 IP, 클라이언트 메타데이터, 운전자 사용량 및 애플리케이션 이름을 분석하여 연결 증가의 원인이 되는 요소를 식별하고 조사해야 할 영역을 결정할 수 있습니다. 이 타겟팅된 접근 방식을 사용하면 관련성이 덜한 다른 요인은 무시하고 강조 표시된 정보로 문제를 해결하는 데 집중할 수 있으므로 궁극적으로 완화 프로세스 간소화하고 클러스터 성능을 향상할 수 있습니다.
멀티 리전 비공개 엔드포인트
비공개 엔드포인트는 클러스터가 걸쳐 있는 각 리전 에 클러스터 엔드포인트가 구성된 노드 있는 경우에만 멀티 리전 클러스터에서 사용할 수 있습니다. 멀티 리전 비공개 엔드포인트 구성에 대해 자세히 학습 멀티 리전 샤드 클러스터를 위한 리전화된 비공개 엔드포인트를 참조하세요.
멀티 리전 클러스터에 대한 연결 문자열 인덱싱
새 리전 에 대한 비공개 엔드포인트를 구성하고 해당 리전 에 클러스터 노드를 배포 후 비공개 엔드포인트를 사용하여 클러스터 에 연결할 때 다음 오류가 표시될 수 있습니다.
DNSHostNotFound: Failed to look up service "<MongoDB service name>"
이 오류는 연결 문자열의 인덱스 자동으로 변경되고 이후에 클라이언트 다시 시작되어 SRV DNS 조회가 발생할 때 발생합니다. 멀티 리전 클러스터 의 비공개 엔드포인트 연결 문자열 0 인덱스 사용합니다. 연결 문자열 다른 인덱스 사용하는 경우 MongoDB 0 인덱스 사용하도록 연결 문자열 자동으로 업데이트합니다.
예시 들어, 한 리전 에 대해 두 개의 비공개 엔드포인트 구성할 수 있습니다. 첫 번째 비공개 엔드포인트를 제거 연결 문자열 1 인덱스 를 사용하며 다음과 유사합니다.
mongodb+srv://cluster1-psc-0.4uyx2d.mongodb.net
그런 다음 클러스터 의 새 리전 에 대한 비공개 엔드포인트를 구성한 다음 해당 리전 에 클러스터 노드를 추가한다고 가정해 보겠습니다. 이제 클러스터 에 여러 리전이 포함되며 0 인덱스 사용하도록 연결 문자열 업데이트됩니다.
mongodb+srv://cluster1-psc-1.4uyx2d.mongodb.net
다음에 클라이언트를 다시 시작한 후 잠재적인 연결 문제를 방지하려면 인덱싱된 비공개 엔드포인트 연결 문자열 사용하여 클러스터 에 연결하고 있는지 확인하세요. 클러스터 변경이 완료된 후 Atlas UI 또는 API 에서 업데이트된 비공개 엔드포인트 연결 문자열 액세스 할 수 있습니다.
배포된 애플리케이션에서 연결 테스트
nslookup 및 telnet 도구를 사용하여 애플리케이션 과 Atlas 의 비공개 엔드포인트 간의 연결을 테스트할 수 있습니다.
Atlas cluster 에 대한 연결 세부 정보를 가져옵니다.
-type=SRV 플래그와 함께 nslookup 를 실행하여 클러스터 의 각 노드와 연결된 포트 번호를 가져옵니다.
nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1026 pl-0-us-east-1.k45tj.mongodb.net. _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1024 pl-0-us-east-1.k45tj.mongodb.net. _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1025 pl-0-us-east-1.k45tj.mongodb.net.
각 비공개 엔드포인트의 상태를 보려면 다음과 같이 하세요:
Atlas 에서 프로젝트 의 Database & Network Access 페이지로 이동합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.
아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.
사이드바에서 Security 제목 아래의 Database & Network Access를 클릭합니다.
The Database & Network Access page displays.
비공개 엔드포인트 연결의 상태 를 확인하려면 다음 상태를 참조하세요.
Atlas Endpoint Service Status상태 | 설명 |
|---|---|
비공개 링크 만들기 | Atlas 가 로드 밸런서 및 VNet 리소스를 생성하고 있습니다. |
실패하였습니다. | 시스템 장애가 발생했습니다. |
사용 가능 | Atlas 는 로드 밸런서 와 Azure Private Link 서비스를 만들었습니다. Azure Private Link Service가 연결 요청을 수신할 준비가 되었습니다. |
삭제 | Atlas 가 Azure Private Link 서비스를 삭제 중입니다. |
상태 | 설명 |
|---|---|
구성되지 않음 | Atlas 에서 로드 밸런서 와 Azure Private Link Service를 만들었지만 아직 비공개 엔드포인트를 만들지 않았습니다. Edit 를 클릭하고 마법사를 완료하여 비공개 엔드포인트를 생성합니다. |
시작 | Atlas 가 아직 비공개 엔드포인트에 대한 연결을 수락하지 않았습니다. |
실패하였습니다. | Azure는 Atlas VNet 리소스와 사용자의 VNet에 있는 비공개 엔드포인트 사이의 연결을 설정하지 못했습니다. Edit을(를) 클릭하고 제공한 정보가 올바른지 확인한 다음 비공개 엔드포인트를 다시 생성합니다. |
사용 가능 | Atlas VNet 리소스는 VNet의 비공개 엔드포인트에 연결됩니다. Azure Private Link 를 사용하여 이 리전 의 Atlas cluster에 연결할 수 있습니다. |
삭제 | Atlas 가 Azure Private Link Service에서 비공개 엔드포인트 연결을 제거하고 있습니다. |
경고
실패한 엔드포인트가 해당 비공개 엔드포인트 서비스에 등록된 유일한 엔드포인트인 경우에는 삭제 하지 마세요. 마지막 엔드포인트를 삭제 하면 전체 엔드포인트 서비스가 자동으로 삭제되며 전체 구성 프로세스 다시 시작해야 합니다.
DNS 조회로 비공개 IP 얻기
VNet의 클라이언트가 이러한 사설 엔드포인트 인식 연결 문자열 중 하나를 사용하여 Atlas 클러스터에 연결하면 클라이언트는 사설 엔드포인트의 네트워크 인터페이스를 통해 Atlas VNet의 사설 링크 서비스에 대한 연결을 설정하려고 시도합니다. Private Link 서비스는 Azure 표준 밸런서를 통해 해당 리전에 배포된 Atlas 클러스터로 트래픽을 보냅니다. 클라이언트의 DNS 확인 메커니즘은 네트워크 인터페이스의 비공개 IP 주소로 호스트 이름 확인을 처리합니다. 드라이버는 연결 문자열의 호스트 이름만 인식하며 클러스터의 복제본 세트에 있는 각 노드에 대해 1개의 포트에서 수신 대기합니다.
DNS 시드 목록 비공개 엔드포인트 인식 연결 문자열에 대한 SRV 레코드
다음 예시는 Azure Private Link 허용 단일 리전 클러스터에 대한 SRV 기록으로, pl-0-eastus2.uzgh6.mongodb.net에 대해 정의된 세 개의 고유 포트를 표시합니다.
nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: _mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net service = 0 0 1024 pl-0-eastus2.uzgh6.mongodb.net. _mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net service = 0 0 1025 pl-0-eastus2.uzgh6.mongodb.net. _mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net service = 0 0 1026 pl-0-eastus2.uzgh6.mongodb.net.
앞의 예시에서
_mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net은 연결 문자열이 참조하는 SRV 레코드입니다.pl-0-eastus2.uzgh6.mongodb.net는 Azure Private Link 구성한 한 리전 의 Atlas cluster 한 개에 있는 각 노드 의 호스트 이름입니다.10241025,1026은(는) Atlas Azure Private Link 활성화한 리전 의 각 Atlas 복제본 세트 노드 에 대해 로드 밸런서 에서 할당하는 고유 포트입니다. Atlas 복제본 세트 의 모든 노드는 동일한 호스트 이름을 통해 액세스할 수 있으며, 로드 밸런서 는 개별 노드를 고유 포트로 확인합니다.
비공개 엔드포인트 인식 연결 문자열 및 SRV 레코드의 호스트 이름 DNS 확인
SRV 레코드의 호스트 이름과 표준 연결 문자열은 비공개 엔드포인트 네트워크 인터페이스의 비공개 IP 주소를 확인하는 DNS A 레코드입니다.
다음 예에서는 SRV 레코드 및 표준 연결 문자열에서 호스트 이름에 대한 DNS 조회를 보여줍니다.
nslookup pl-0-eastus2.uzgh6.mongodb.net Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: pl-0-eastus2.uzgh6.mongodb.net Address: 10.0.0.4
멀티 리전 비공개 엔드포인트
비공개 엔드포인트는 클러스터가 걸쳐 있는 각 리전 에 클러스터 엔드포인트가 구성된 노드 있는 경우에만 멀티 리전 클러스터에서 사용할 수 있습니다. 멀티 리전 비공개 엔드포인트 구성에 대해 자세히 학습 멀티 리전 샤드 클러스터를 위한 리전화된 비공개 엔드포인트를 참조하세요.
멀티 리전 클러스터에 대한 연결 문자열 인덱싱
새 리전 에 대한 비공개 엔드포인트를 구성하고 해당 리전 에 클러스터 노드를 배포 후 비공개 엔드포인트를 사용하여 클러스터 에 연결할 때 다음 오류가 표시될 수 있습니다.
DNSHostNotFound: Failed to look up service "<MongoDB service name>"
이 오류는 연결 문자열의 인덱스 자동으로 변경되고 이후에 클라이언트 다시 시작되어 SRV DNS 조회가 발생할 때 발생합니다. 멀티 리전 클러스터 의 비공개 엔드포인트 연결 문자열 0 인덱스 사용합니다. 연결 문자열 다른 인덱스 사용하는 경우 MongoDB 0 인덱스 사용하도록 연결 문자열 자동으로 업데이트합니다.
예시 들어, 한 리전 에 대해 두 개의 비공개 엔드포인트 구성할 수 있습니다. 첫 번째 비공개 엔드포인트를 제거 연결 문자열 1 인덱스 를 사용하며 다음과 유사합니다.
mongodb+srv://cluster1-psc-0.4uyx2d.mongodb.net
그런 다음 클러스터 의 새 리전 에 대한 비공개 엔드포인트를 구성한 다음 해당 리전 에 클러스터 노드를 추가한다고 가정해 보겠습니다. 이제 클러스터 에 여러 리전이 포함되며 0 인덱스 사용하도록 연결 문자열 업데이트됩니다.
mongodb+srv://cluster1-psc-1.4uyx2d.mongodb.net
다음에 클라이언트를 다시 시작한 후 잠재적인 연결 문제를 방지하려면 인덱싱된 비공개 엔드포인트 연결 문자열 사용하여 클러스터 에 연결하고 있는지 확인하세요. 클러스터 변경이 완료된 후 Atlas UI 또는 API 에서 업데이트된 비공개 엔드포인트 연결 문자열 액세스 할 수 있습니다.
배포된 애플리케이션에서 연결 테스트
nslookup 및 telnet 도구를 사용하여 애플리케이션 과 Atlas 의 비공개 엔드포인트 간의 연결을 테스트할 수 있습니다.
Atlas cluster 에 대한 연결 세부 정보를 가져옵니다.
-type=SRV 플래그와 함께 nslookup 를 실행하여 클러스터 의 각 노드와 연결된 포트 번호를 가져옵니다.
nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1026 pl-0-us-east-1.k45tj.mongodb.net. _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1024 pl-0-us-east-1.k45tj.mongodb.net. _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1025 pl-0-us-east-1.k45tj.mongodb.net.
각 비공개 엔드포인트의 상태를 보려면 다음과 같이 하세요:
Atlas 에서 프로젝트 의 Database & Network Access 페이지로 이동합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.
아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.
사이드바에서 Security 제목 아래의 Database & Network Access를 클릭합니다.
The Database & Network Access page displays.
상태를 검토합니다.
Atlas Endpoint Service Status 및 Endpoint Status 필드에는 각 비공개 엔드포인트의 상태가 표시됩니다.
비공개 엔드포인트 연결의 상태 를 확인하려면 다음 상태를 참조하세요.
Atlas Endpoint Service Status
상태 | 설명 |
|---|---|
비공개 링크 만들기 | Atlas가 네트워크 로드 밸런서와 VPC 리소스를 생성하고 있습니다. |
실패하였습니다. | 시스템 장애가 발생했습니다. |
사용 가능 | Atlas 는 네트워크 로드 밸런서 와 VPC 엔드포인트 서비스를 만들었습니다. 비공개 엔드포인트 서비스가 연결 요청을 수신할 준비가 되었습니다. |
삭제 | Atlas 가 비공개 엔드포인트 서비스를 삭제하고 있습니다. |
Endpoint Status
상태 | 설명 |
|---|---|
시작 | Atlas 가 아직 비공개 엔드포인트에 연결되지 않았으며 아직 엔드포인트를 허용하지 않았습니다. |
사용자 대기 중 | Atlas 의 VPC 리소스를 사용할 준비가 되었습니다. 스크립트 를 실행 하여 내에서 엔드포인트를 설정하다 해야 VPC shell 합니다. |
확인됨 | Atlas 가 VPC 내의 엔드포인트를 확인했지만 아직 Google Cloud Platform VPC 의 비공개 엔드포인트를 수락하지 않았습니다. Endpoint Status가 |
사용 가능 | Atlas VPC 리소스는 Google Cloud Platform VPC 의 비공개 엔드포인트에 연결됩니다. Atlas 가 엔드포인트를 허용했습니다. GCP Private Service Connect를 사용하여 이 리전 의 Atlas 클러스터에 연결할 수 있습니다. |
활성 | Atlas 는 VPC 리소스를 사용할 준비가 되었습니다. Atlas 가 엔드포인트를 허용했습니다. 비공개 서비스 연결에 VM이 할당됩니다. |
실패하였습니다. | Google Cloud Platform이 Atlas VPC 리소스와 Google Cloud Platform VPC의 비공개 엔드포인트 간의 연결을 설정하지 못했습니다. Edit을(를) 클릭하고 제공한 정보가 올바른지 확인한 다음 비공개 엔드포인트를 다시 생성합니다. 참고: ' GCP 에서 엔드포인트를 찾을 수 없습니다. 엔드포인트 이름이 올바른지 그리고 올바른 GCP 프로젝트 에 생성되었는지 확인하고 다시 시도하세요."라는 메시지가 표시되면 비공개 엔드포인트 이름을 잘못 입력했거나 생성해야 할 수 있습니다. 이 문제를 해결하려면 Edit 을 클릭하고 필드가 정확한지 확인합니다. |
Deleted | Atlas 의 리전 에서 비공개 엔드포인트를 수동으로 삭제했습니다. 리소스를 삭제 Google Cloud Platform 에서 비공개 엔드포인트도 삭제 해야 합니다. 리전 그룹 삭제 대기 중입니다. |
경고
실패한 엔드포인트가 해당 비공개 엔드포인트 서비스에 등록된 유일한 엔드포인트인 경우에는 삭제 하지 마세요. 마지막 엔드포인트를 삭제 하면 전체 엔드포인트 서비스가 자동으로 삭제되며 전체 구성 프로세스 다시 시작해야 합니다.
보안 그룹이 올바르게 구성되었는지 확인합니다.
GCP Private Service Connect를 사용하여 Atlas cluster에 연결해야 하는 각 리소스 에 대해 모든 포트(1024~65535)에서 전달 규칙의 비공개 IP 주소로 아웃바운드 트래픽을 허용해야 합니다. 자세한 내용은 PSC의 소비자 보안 관리 를 참조하세요.
멀티 리전 비공개 엔드포인트
비공개 엔드포인트는 클러스터가 걸쳐 있는 각 리전 에 클러스터 엔드포인트가 구성된 노드 있는 경우에만 멀티 리전 클러스터에서 사용할 수 있습니다. 멀티 리전 비공개 엔드포인트 구성에 대해 자세히 학습 멀티 리전 샤드 클러스터를 위한 리전화된 비공개 엔드포인트를 참조하세요.
멀티 리전 클러스터에 대한 연결 문자열 인덱싱
새 리전 에 대한 비공개 엔드포인트를 구성하고 해당 리전 에 클러스터 노드를 배포 후 비공개 엔드포인트를 사용하여 클러스터 에 연결할 때 다음 오류가 표시될 수 있습니다.
DNSHostNotFound: Failed to look up service "<MongoDB service name>"
이 오류는 연결 문자열의 인덱스 자동으로 변경되고 이후에 클라이언트 다시 시작되어 SRV DNS 조회가 발생할 때 발생합니다. 멀티 리전 클러스터 의 비공개 엔드포인트 연결 문자열 0 인덱스 사용합니다. 연결 문자열 다른 인덱스 사용하는 경우 MongoDB 0 인덱스 사용하도록 연결 문자열 자동으로 업데이트합니다.
예시 들어, 한 리전 에 대해 두 개의 비공개 엔드포인트 구성할 수 있습니다. 첫 번째 비공개 엔드포인트를 제거 연결 문자열 1 인덱스 를 사용하며 다음과 유사합니다.
mongodb+srv://cluster1-psc-0.4uyx2d.mongodb.net
그런 다음 클러스터 의 새 리전 에 대한 비공개 엔드포인트를 구성한 다음 해당 리전 에 클러스터 노드를 추가한다고 가정해 보겠습니다. 이제 클러스터 에 여러 리전이 포함되며 0 인덱스 사용하도록 연결 문자열 업데이트됩니다.
mongodb+srv://cluster1-psc-1.4uyx2d.mongodb.net
다음에 클라이언트를 다시 시작한 후 잠재적인 연결 문제를 방지하려면 인덱싱된 비공개 엔드포인트 연결 문자열 사용하여 클러스터 에 연결하고 있는지 확인하세요. 클러스터 변경이 완료된 후 Atlas UI 또는 API 에서 업데이트된 비공개 엔드포인트 연결 문자열 액세스 할 수 있습니다.
배포된 애플리케이션에서 연결 테스트
nslookup 및 telnet 도구를 사용하여 애플리케이션 과 Atlas 의 비공개 엔드포인트 간의 연결을 테스트할 수 있습니다.
Atlas cluster 에 대한 연결 세부 정보를 가져옵니다.
-type=SRV 플래그와 함께 nslookup 를 실행하여 클러스터 의 각 노드와 연결된 포트 번호를 가져옵니다.
nslookup -debug -type=SRV _mongodb._tcp.cluster1-psc-0.j735c.mongodb.net
Server: 127.0.2.2 Address: 127.0.2.2#53 ------------ QUESTIONS: _mongodb._tcp.cluster1-psc-0.j735c.mongodb.net, type = SRV, class = IN ANSWERS: -> _mongodb._tcp.cluster1-psc-0.j735c.mongodb.net service = 0 0 1024 pl-0-us-central1-gcp.j735c.mongodb.net. ttl = 60 -> _mongodb._tcp.cluster1-psc-0.j735c.mongodb.net service = 0 0 1025 pl-0-us-central1-gcp.j735c.mongodb.net. ttl = 60 -> _mongodb._tcp.cluster1-psc-0.j735c.mongodb.net service = 0 0 1026 pl-0-us-central1-gcp.j735c.mongodb.net. ttl = 60 AUTHORITY RECORDS: ADDITIONAL RECORDS: ------------ Non-authoritative answer: _mongodb._tcp.cluster1-psc-0.j735c.mongodb.net service = 0 0 1024 pl-0-us-central1-gcp.j735c.mongodb.net. _mongodb._tcp.cluster1-psc-0.j735c.mongodb.net service = 0 0 1025 pl-0-us-central1-gcp.j735c.mongodb.net. _mongodb._tcp.cluster1-psc-0.j735c.mongodb.net service = 0 0 1026 pl-0-us-central1-gcp.j735c.mongodb.net. Authoritative answers can be found from: telnet pl-0-us-central1-gcp.j735c.mongodb.net 1024