본문 바로가기
TIL & WIL

[TIL] #141. 240201 (EC2에 Redis 설치)

by mmm- 2024. 2. 1.

 

나중에 대규모 환경을 다룰 때는 Elasti Cache를 쓸 수도 있겠지만 아직은 그냥 어제 알아본 대로 Elasti Cache보다는 비용적인 측면에서 EC2를 사용해보기도 했다.

 

EC2에 Redis를 설치해 연결하기 위해 application.yml 파일에 host, port 를 추가해 환경변수를 작성해주었다.

 

어제 미리 찾아본 블로그( https://0m1n.tistory.com/100)에서 알려준대로 host에는 AWS EC2 엔드포인트를 작성해주고, port에는 redis의 포트넘버인 6379를 작성해주면 된다고 해서 해본 결과 아래와 같은 에러가 발생했다.

 

알려진 호스트가 없습니다 (ec2-......-compute.amazonaws.com/)

 

해당 에러는 호스트 이름이 잘못되어서 발생한 문제라고 한다.


 

해당 문제를 해결하기 위해 서치를 하는 과정에서 host에는 AWS EC2 엔드포인트가 아닌, 퍼블릭 IPv4 DNS가 들어가야 한다는 사실을 알게 되었다. 그래서 host를 수정해봤지만 아래와 같은 에러가 발생했다.

 

connection timed out after 10000

 

그래서 해당 블로그를 참고해

 

[팀프로젝트] Springboot 프로젝트에 Redis 연동하기(AWS ec2에 띄워보자!)

https://steady-coding.tistory.com/586

velog.io

redis 이미지 파일을 다운 받은 후, 이미지 파일을 확인했다. 그리고 비밀번호 설정과 함께 redis 컨테이너를 실행시켜준 후, local에서 실행시켜봤더니 아래와 같은 에러가 발생했다.


NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO <proto> AUTH <user> <pass> option can be used to authenticate the client and select the RESP protocol version at the same time

 

이전에 로컬에서 redis 컨테이너를 실행시켰을 때는 password없이 했었는데, password가 없으면 보안상 좋지 않아 이번에는 블로그에서 알려준 대로 비밀번호도 설정을 해줬던 것이다. 그래서 password를 application.yml과 RedisConfig에 추가해줬다. 그리고 redisConnectionFactory 메서드를 수정 후 인바운드 설정을 해주고 redis-cli에서 인증을 해줬더니 로컬에서는 잘 돌아가는 것을 확인할 수 있었다.

 

로컬에서 문제없이 되는 것을 확인 후, PR을 올린 결과 502에러가 발생했다. 에러 메시지를 보니까 환경변수에 해당하는 값을 Repository Secrets에 추가해주지 않아 발생한 에러인 것 같아 Repository Secrets에 추가해줬다. 그런데 여기에만 적어줄 경우 인식 하지 못하는 경우가 있다고 하셔서 env파일에도 추가해줬더니 문제를 해결할 수 있었다.

'TIL & WIL' 카테고리의 다른 글

[TIL] #143. 240203 (MySQL GroupBy)  (0) 2024.02.03
[TIL] #142. 240202  (0) 2024.02.02
[TIL] #140. 240131 (토큰검증 관련 문제 및 해결)  (0) 2024.01.31
[TIL] #137. 240128  (0) 2024.01.28
[TIL] #136. 240127  (0) 2024.01.27