<aside> 📌
요약
이 문서에서는 nudge-eap-api
와 유사한 방식으로 cms
서버를 로컬 환경에서 실행하면서 발생한 Redis 연결 타임아웃 문제를 해결하는 과정을 다룹니다.
주요 내용은 다음과 같습니다.
nudge-eap-api
서버 실행 시 Redis에 연결하는데 문제가 없음을 확인. cms
서버에서 환경 변수와 Redis 연결 설정이 잘못되었을 가능성 존재.nudge-eap-api
서버가 정상 동작하는지 확인.require('dotenv').config()
호출을 AppModule 위로 올려서 환경 변수가 먼저 로드되도록 수정.[ioredis] Unhandled error event: Error: connect ETIMEDOUT
at Socket.<anonymous> (/Users/nudge_947/gitRepo/NudgeEap/packages/nudge-eap-cms/node_modules/ioredis/built/redis/index.js:282:31)
at Object.onceWrapper (node:events:633:28)
at Socket.emit (node:events:519:28)
at Socket.emit (node:domain:488:12)
at Socket._onTimeout (node:net:591:8)
at listOnTimeout (node:internal/timers:581:17)
at process.processTimers (node:internal/timers:519:7)
현재 redis 서버에 접근하려고 하지만 Timeout이 발생하고 있습니다. Timeout은 높은 확률로 Security Group에서 막혔을 때 발생하는데… aws 네트워크 설정은 이미 문제가 없기도 하고, Timeout 발생했다는 메세지가 너무 빨리 발생하는 것도 의심해볼 여지가 있습니다.
하지만 팀원들은 모두 잘 실행되는 상태입니다…!
만약 레디스가 문제라면, eap-api도 timeout이 발생해야 합니다.
<aside> <img src="notion://custom_emoji/41b6b37a-cc38-4f0f-bb74-faede20facf4/153a054b-7d82-80e0-835a-007a795dfe1c" alt="notion://custom_emoji/41b6b37a-cc38-4f0f-bb74-faede20facf4/153a054b-7d82-80e0-835a-007a795dfe1c" width="40px" />
curl <http://localhost:5001/health-check>
health-check%
만약 eap-api가 redis에 의존적이지 않다면 이 방법으로는 찾을 수 없습니다. 따라서 eap-api 서버가 redis에 실제로 연결을 시도하고 있는지 확인하기 위해 위 로그를 분석해보면 아래와 같은 로그를 찾을 수 있습니다. 실제로 api 서버는 redis와 잘 연결이 되었습니다.
[InstanceLoader | 2025-03-10 10:49:29] - [info] 'RedisModule dependencies initialized'
에러 메세지가 Redis에 연결을 하지 못하는 이슈이므로, 이와 관련하여 트러블슈팅을 진행합니다.
medis를 통해 실제로 localhost에서 ElastiCache로 포트포워딩이 잘 이루어지고 있는지 확인했고, 정상 동작을 확인했습니다.
localhost:6379로 접근했을 때 정상동작합니다.