우선 ElasticCache의 레디스는 직접 config 파일을 변경하는 게 아니라
Parameter group을 변경하는 식으로 해야 한다.
레디스의 보안을 위해서 비밀번호를 추가하는 등의 보안 지침이 있지만 이런것들이 가능하지 않아서 우선 TLS만 설정하기로 했다.
TLS는 전송 중 데이터를 암호화하는 기능이다.
우선, ElasticCache에서
TLS가 Prefered로 돼 있는걸 Required로 바꿔준다.
이렇게 하면 잠시 설정이 변경되는데 시간이 걸려서
클러스터의 상태가 Available이 될 때까지 기다려야 한다.
spring.data.redis.ssl.enabled=true
스프링 설정에는 위 같은 내용을 추가해주어야 한다.
그리고, cli로 접속할 때는
redis-cli -h 엔드포인트 --tls
이렇게 해주어야 한다.
계속 이렇게 떠서 아마존 문서를 보니 DNS의 문제라고 했다.
그래서 엔드포인트가 잘못된건가?(그전에는 cli로 접속이 잘 됐다)
해서 다시 확인해보니
갑자기 엔드포인트가 master와 replica로 나뉘어져 있었다..! tls로 변경하면서 엔드포인트에도 변화가 생긴듯하다.
아마존 공식문서에
이렇게 나와있다.
레디스와 연결을 해도 연결이 계속 안됐다.
로그로 원인을 찾아보자.
logging.level.io.lettuce.core=DEBUG
이렇게 해도 딱히 뜨는 로그가 없었다.
혹시 NGINX가 원인이 아닐까?...
7002포트를 아예 막고 NIGNX로 가는 포트만 열어두었기 때문이다.
그렇게 했을 땐 우선 위와같은 로그가 뜨기 시작했다.
연결 핸드쉐이크 과정에 문제가 생긴 것이다.
config 파일에 ssl사용을 명시해두었더라도 자바 코드에 useSsl()을 해주지 않으니 설정이 충돌한 것으로 보인다.
이제 monitor 상태로 둔 레디스에 데이터가 잘 들어온다.
다만, 지금은 스프링 서버 포트를 그전처럼 모든 ip에 열어둔 상태다. 이걸 한번 다시 인바운드 포트를 제한해보자. NGINX가 있는 서버(지금은 동일한 서버에 있다)에만 열어둔다.
그렇게 해도 잘 작동한다!