본문 바로가기
공부/aws

ElastiCache(Redis) 외부에서 접근하기 (SSH Tunneling)

by kyj0032 2024. 4. 29.

ElastiCache란?

높은 성능과 낮은 지연 시간을 갖는 인메모리 데이터베이스(캐싱 역할을 함)

Redis와 Memcached 두 종류가 있고, 회사 차이임

 

기본적으로 Redis는 외부에서 접근하지 못하는 걸 원칙으로 함(내부에서 쓰는 DB)

ex. mysql같은 건 public ip 할당이 되지만 redis는 아예 안 됨

 

=> SSH Tunneling을 통해 외부 컴퓨터에서 접근이 가능함

 

SSH Tunneling

'

internet gateway를 통해 Public Subnet에 있는 Bastion역할의 EC2 Instance에 접근, 

해당 EC2 Instance는 Redis와 같은 VPC 내에 있으므로 private ip로 접근 가능하다

  • Bastion: 문지기, 얘가 나 대신 redis에 대신 접근해서 불러줄 수 있음

그래서 EC2의 보안 그룹에 6379 포트를 열어 줘야 함 (내 로컬이 접속할 포트 번호)

자세한 내용은 후술

 

  • 내 컴퓨터에선 redis의 엔드포인트 접속이 안되는데, EC2에선 redis의 엔드포인트 접속이 되는 이유
  • => 같은 VPC라서
  • 그 엔드포인트 reids-vpc-practice...amazonaws.com:6379를 lookup하면 172.31.5.1막 이런 private IP주소가 나옴
  • 이걸로는 우리가 routing table에서 local로 돌리도록 했었으니까 접속이 되는 거

 

1. 터미널로 접근하기

ssh -i "EC2접근 키.pem" 
 -L 3306:[redis 엔드포인트]:3306
 ubuntu@[ec2 주소]

 

  • ssh
    • 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜
  • -i "EC2 액세스 키.pem"
    • identification
  • -L 3306:
    • localhost의 3306포트로
  • [redis 엔드포인트]:3306
    • redis 엔드포인트 3306포트에 연결
  • ubuntu@[ec2 주소]
    • 해당 ec2를 통해서(중개해서)

2. mobaXterm으로 접근하기

1. tunneling 열기

2. New SSH tunnel

 

3. SSH tunneling 연결해주기

3. RedisInsight에 연결하기

 

1. Add Redis database 누르고 접속할 최종 목적지, Port 번호 입력

 

2. Use SSH Tunnel 체크박스 누르고

Bastion 역할을 할 ec2 주소, 포트, username/ pem키(메모장으로 열어서 모두 다 그대로 복사) 입력

 

 

 

번외. Datagrip에 SSH Tunneling 이용해서 연결하기

 

1.

여기선 MySQL을 사용, 최종 접속할 DB 주소, 3306, user/password 쳐주고

탭의 SSH/SSL로 이동

 

2. 

원래라면 아무것도 없을 것, [ ... ] 눌러서 추가

 

3. 

Bastion 역할을 할 ec2 주소, username, keypair( .pem) 등록 후 Test Connection 해보기

 


참고

https://superuser.com/questions/1601631/create-ssh-tunnel-using-mobaxterm-on-windows

https://rural-mouse.tistory.com/74