
GCP Kubernetes 클러스터에서 실행되는 Nodejs 앱을 연결하고 있습니다. 이전에는 VPC 피어링을 활성화하고 연결 문자열(개인)을 사용하면 제대로 작동했습니다. Atlas 대시보드에서 권장되는 사항은 다음과 같습니다.
mongodb+srv://(사용자 이름):(비밀번호)@<cluster_name>-pri.m6tkv.gcp.mongodb.net/<database_name>?retryWrites=true&w=majority
이 튜토리얼을 따라 설정했습니다.https://docs.atlas.mongodb.com/security-vpc-peering/
내 앱이 이 구성으로 꽤 오랫동안 실행되었기 때문에 이해할 수 없습니다. 그런데 어느 화창한 날, 내 GCP 클러스터의 포드에서 실행 중인 앱이 연결할 수 없습니다.
오류 메시지는 다음과 같습니다.
Connected mongodb failed MongoNetworkError: failed to connect to server [<cluster_name>-00-00-pri.m6tkv.gcp.mongodb.net:27017] on first connect [MongoNetworkError: connection timed out
at connectionFailureError (/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:406:14)
at TLSSocket.<anonymous> (/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:294:16)
at Object.onceWrapper (events.js:299:28)
at TLSSocket.emit (events.js:210:5)
at TLSSocket.Socket._onTimeout (net.js:469:8)
at listOnTimeout (internal/timers.js:531:17)
at processTimers (internal/timers.js:475:7) {name: 'MongoNetworkError' }] at Pool.<anonymous> (/app/node_modules/mongoose/node_modules/mongodb/lib/core/topologies/server.js:438:11)
at Pool.emit (events.js:210:5)
at /app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/pool.js:562:14
at /app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/pool.js:1009:9
at /app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:31:7
at callback (/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:264:5)
at TLSSocket.<anonymous> (/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:294:7)
at Object.onceWrapper (events.js:299:28)
at TLSSocket.emit (events.js:210:5)
at TLSSocket.Socket._onTimeout (net.js:469:8)
at listOnTimeout (internal/timers.js:531:17)
at processTimers (internal/timers.js:475:7)
이전 연결(표준)로 다시 전환했는데 앱이 다시 작동합니다. 연결 문자열:
mongodb+srv://(사용자 이름):(비밀번호)@<cluster_name>.m6tkv.gcp.mongodb.net/<database_name>?retryWrites=true&w=majority
그래서 VPC 피어링을 통한 연결에 문제가 있어서 어떤 단서도 찾을 수 없었습니다.
답변1
더 나은 가시성을 위해 이 답변을 커뮤니티 위키로 게시합니다.
내 클러스터의 포드 주소 범위를 Atlas의 IP 화이트리스트에 추가하여 이 문제를 해결했습니다.
이 문제에 대한 해결책은 Atlas 서버의 IP 화이트리스트에 Pod 주소 범위를 추가하는 것이었습니다.
공식 문서에도 언급되어 있습니다:
피어 VPC와 연결된 VPC CIDR 블록 주소(또는 하위 집합)를화이트리스트새 VPC 피어가 Atlas 클러스터에 연결되기 전에. GCP가 사용하는 자동 모드 IP 범위에 대해 알아보려면 다음을 참조하세요.자동 모드 IP 범위.
내부 가이드가 포함된 아래 링크를 따라가야 합니다.