AWS ElastiCache 로컬 환경 구성 시 connect가 실패하는 현상

soya·2024년 4월 2일
0

AWS

목록 보기
1/4

1.문제현상

custom VPC를 만들고 그곳에 ElastiCache를 사용해 Redis를 생성했다.
이 Redis를 내 로컬에 있는 Datagrip IDE 에서 작업 할 수 있도록 세팅하고자 했다.
Datagrip에서 연결할 엔드포인트를 연결하고 계정비번을 입력 후 tesct connection을 시도하자 에러가 발생했다.

dbms: mysql (no ver.) case sensitivity: plain=mixed, delimited=exact operation timed out.

그리고 뭐 드라이버 에러도 떠서 mySQL 드라이버 받고, 컴퓨터 재부팅하고 시스템에서 datagrip 액세스 허용하고 이런저런 삽질도 했다.

2. 원인 찾기

그리고 체크해야할것들을 다시 체크했다.

  1. Redis 퍼블릭 액세스 허용
  2. 보안그룹 설정에서 해당 3306포트 접근허용
  3. 퍼블릭서브넷에 연결되었나
  4. 연결된 퍼블릭서브넷이 igw와 연결되었나

모두 정상이였고 혹시몰라 계정 비번까지 새로 설정했다.
새로 설정해도 안되서 aws에서 자동으로 설정해 주는 비번으로까지 변경해서 사용했다.

여전히 안된다.

한창 삽질 중 멘토님이 주신 피드백, 내 VPC 환경에 라우팅 테이블이 너무 많다. 정리해보자.

3. 원인 발견

당시 내 VPC 상태였다. 서브넷...왜이렇게 많지..? 라우팅 테이블은 왜 5개....?

심지어 rtb-04bcc..가 기본라우터인데 연결 아무것도 안되어있고 다 이상한 라우팅 테이블에 붙어있다.

해당 라우팅 테이블들은 대부분 사진과 같은 규칙을 가졌거나 local만 허용해준테이블이다.

나는 Redis에 서브넷 그룹을 설정해두면 설정된 서브넷 그룹에 샤딩되어 저장된다고 생각했다. 그래서 서브넷 그룹 중 하나의 퍼블릭 서브넷이 인터넷 게이트웨이와 연결되어 있으면 될것이라 생각했던것.

하지만 Redis는 서브넷 그룹 중 하나의 서브넷에 랜덤(?)으로 생성되는것이였고, 내 DB는 인터넷게이트웨이와 연결되어있지 않은... b존에 위치한 퍼블릭 서브넷에 생성되었던것이다.
(a존의 퍼블릭 서브넷은 igw가 연결되어있고, b존의 퍼블릭 서브넷은 local만 열려있었음)

4. 문제 해결

기본 라우팅 테이블을 제외하고 전부 삭제 후 기본 라우팅 테이블에 서브넷을 연결했다.

언제 생성되었는지 모르겠는 서브넷들도 전부 제거했다.
제거하다가 내가 만든 프라이빗 서브넷도 하나 실수로 제거했다.
(원래 퍼블릭2개 프라이빗2개..)

깔-끔

그리고 경건한 마음으로 다시 테스트 커넥트를 시도했고 ㅠ

성공 ㅠㅠ...

3시간 가까이 투자해서 배운... ElastiCache로 Redis를 생성하면 설정한 서브넷그룹중 하나의 서브넷에 랜덤하게 생성된다. 샤딩은 설정하지않는 이상 자동 지원되지 않음

기타 의문점

도대체 내 redis는 서브넷그룹의 어떤 서브넷에 생성된걸까??? 하는 의문이 생겼다.
AWS콘솔에서 내 redis가 어느 가용영역에 생성되었는지는 알 수 있었다.(위의 이미지를 보면 2a존에 위치)
내 서브넷 그룹에는 a,b두개의 가용영역에 각각 두개의 서브넷이 포함되어 총 4개의 서브넷이 있다.
2a존에있는 두개의 서브넷 중 한군데에 내 redis 가 위치해 있는건데 이걸 알수가 없었다.
내가 만든 서브넷 그룹의 서브넷에 있는건 맞는건지..

이부분은 다른분의 도움으로 해결 ㅠ

생성한 서브넷을 지우려고할때, redis가 있는 서브넷이면 활성화되어있는 인스턴스가 있어 지울 수 없다고 뜬다!

profile
re제로부터시작하는코딩생활

0개의 댓글