MongoDB 외부 연결 문제 해결 가이드: AWS 서버 설정과 Mongoose 사용
AWS 서버에서 MongoDB 외부 연결을 시도할 때 ECONNREFUSED
오류가 발생할 수 있습니다. 이 문서에서는 MongoDB와 AWS 설정을 점검하고 문제를 해결하는 방법을 단계별로 안내합니다.
문제 상황
MongoDB를 AWS 서버에서 실행하고 외부에서 Mongoose로 연결을 시도했지만 다음과 같은 오류가 발생했습니다:
$ node test.js
OH NO MONGO CONNECTION ERROR!
MongooseServerSelectionError: connect ECONNREFUSED hostIP:27017
해결 방법
1. MongoDB 외부 접속 허용 설정 확인
MongoDB가 외부 접속 요청을 수신할 수 있도록 설정을 확인해야 합니다.
확인 및 조치:
- MongoDB 설정 파일 확인:
/etc/mongod.conf
파일에서 다음을 확인하세요:net: port: 27017 bindIp: 0.0.0.0
- MongoDB 재시작:
설정 변경 후 MongoDB를 재시작해야 적용됩니다:
sudo systemctl restart mongod
- MongoDB 상태 확인:
sudo systemctl status mongod
2. AWS 보안 그룹 설정 확인
AWS 보안 그룹에서 27017 포트가 열려 있어야 외부에서 접속할 수 있습니다.
확인 및 조치:
- 보안 그룹 규칙 확인:
AWS Management Console에서 인바운드 규칙에 다음 항목이 포함되어 있는지 확인하세요:
- 유형: 사용자 지정 TCP
- 프로토콜: TCP
- 포트 범위: 27017
- 소스:
0.0.0.0/0
- 인스턴스 보안 그룹 연결 확인: 인스턴스 세부 정보에서 올바른 보안 그룹이 연결되어 있는지 확인합니다.
주의:
0.0.0.0/0
은 모든 IP를 허용하므로 보안 위험이 있습니다. 고정 IP를 사용할 수 없는 경우 MongoDB 사용자 인증을 통해 보안을 강화하세요.
3. 서버 방화벽 (UFW) 확인
Ubuntu 서버에서 UFW를 사용하는 경우 27017 포트를 허용해야 합니다.
확인 및 조치:
- UFW 상태 확인:
sudo ufw status
- 27017 포트 허용:
sudo ufw allow 27017
4. 로컬 네트워크 테스트
외부 연결 문제를 진단하기 위해 AWS 외부에서 MongoDB 클라이언트를 이용해 연결을 테스트합니다.
명령어 예시:
mongosh --host hostIP --port 27017 --username username --password password --authenticationDatabase admin
- 이 명령어로 성공적으로 연결된다면 MongoDB 설정은 문제가 없습니다.
- 연결이 실패하면 MongoDB 로그 (
/var/log/mongodb/mongod.log
)를 확인하세요.
5. Mongoose 연결 설정 확인
Mongoose로 연결할 때 다음 사항을 확인하세요:
- MongoDB URI 형식:
mongoose.connect('mongodb://username:password@hostIP:27017/admin?authSource=admin')
- Mongoose 버전 확인:
최신 버전을 사용하고 있는지 확인합니다:
npm install mongoose@latest
- 디버그 활성화:
추가 로그를 확인하려면 디버그 모드를 활성화하세요:
mongoose.set('debug', true);
요약
위 단계를 따라 설정을 확인한 후에는 Mongoose와 MongoDB 간 연결이 정상적으로 이루어져야 합니다. 그래도 문제가 해결되지 않으면 MongoDB 로그를 분석하고 네트워크 연결 상태를 재점검하세요.
MongoDB 외부 접속은 보안이 중요한 작업이므로 항상 적절한 인증과 방화벽 설정을 병행해야 합니다.
Leave a comment