서버에 레디스는 살아있는데 연결이 안됨...

호기성세균·2024년 4월 17일
0

트러블슈팅

목록 보기
16/20
post-thumbnail

문제 Server와 Redis의 연결이 정상적이지 않음

서버에 레디스를 연결했으나 연결이 정상적이지 않은 문제 발생

문제 파악

  1. 레디스 서버가 생존해 있는지 확인
    Ec2에서 실행중인 Redis 서버가 현재 실행중인지 확인
docker exec -it my-redis redis-cli
ping

image
Redis는 살아있음을 확인함
2. 서버 로그를 확인
image
AnnotatedConnectException: Connection refused: localhost/127.0.0.1:6379
로그를 확인함

  • 파악된 문제
    • Redis 서버는 문제 없음
    • Spring 서버에서 localhost를 확인하지 못함

문제 해결 시도

외부에서 바로 Redis의 상태를 알 수 있도록 api 생성

    @GetMapping("/redis")
    public ResponseDTO<?> redisHealthCheck(){
        return ResponseDTO.okWithData(redisTemplate.getConnectionFactory().getConnection().ping());
    }

image

Secrets 확인

  • 환경에 localhost:6379로 입력되어야 한다고 생각하나 포트 앞에 127.0.0.1이 추가로 붙어 생기는 문제로 의심
  • Secrets 값 변경
    image
  • 해결 X

redis url 변경

  • redis의 값을 localhost로 주는 경우 EC2 기준의 localhost를 찾을것으로 생각했음
  • 실제로는 EC2가 아닌 Container 기준으로 localhost를 찾게됨
  • localhost를 우리가 사용하는 컨테이너 이름으로 변경
    image
  • 실마리는 찾았으나 여전히 접속되지 않음

Docker Network 설정

  • 도커를 활용한 내부 네트워크에서 DNS를 활용하려면 도커 네트워크를 생성해야 함
  • 네트워크 생성
docker network create my-network
  • 기존 redis를 네트워크에 추가
docker network connect my-network my-redis
  • 스크립트에 컨테이너를 네트워크에 포함하는 코드 추가
    image

성공!

image

Reference

profile
공부...열심히...

0개의 댓글