사이드 프로젝트/북챌린지

클라우드 환경에 내 로컬 DB 연결하기

EVO. 2024. 8. 26. 13:44

문제 사항

애플리케이션 서버를 배포한 후, 성능 테스트를 수행하려면 반드시 데이터베이스(DB)가 필요합니다.

 

하지만 다음과 같은 어려움이 있습니다:

 

  1. RDS를 이용한 성능 테스트: 쿼리 당 비용이 발생하여 예산이 제한적인 상황에서는 적합하지 않습니다.
  2. 개발 서버용 EC2에 MySQL 설치: EC2 프리 티어의 1CPU 1GiB 사양으로는 MySQL을 원활하게 운영하기 어렵습니다.
  3. 로컬 환경에서의 성능 테스트: 로컬 PC에서 Tomcat과 MySQL을 실행하여 테스트할 수 있지만, localhost 내에서 수행되므로 실제 네트워크 환경을 반영하지 못해 의미 있는 성능 테스트가 어렵습니다.

해결방안

로컬에 MySQL 도커 컨테이너를 설치하고 외부 접속이 가능하도록 설정하고 DDNS 도메인을 만들면, EC2에서 안정적으로 성능 테스트를 수행할 수 있습니다. 

 

외부에서 로컬 DB를 접근하려면 몇가지 단계가 필요합니다.

 

이를 위해 다음 단계를 따르세요:

 

 

1. 도커 컨테이너의 포트 매핑 설정

  • 컨테이너가 전역에서 접근 가능하도록 포트를 매핑합니다.
  • Master DB: 0.0.0.0:3306:3306
  • Slave DB: 0.0.0.0:3307:3306
  • 도커를 사용하지 않는 경우, MySQL의 my.cnf 파일에서 bind-address를 '0.0.0.0'으로 설정하세요.

 

2. MySQL 사용자 권한 설정 모든 호스트에서 접근 가능한 사용자를 생성하고 권한을 부여합니다.

```java

CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
FLUSH PRIVILEGES;

```

 

이 명령어를 실행하면 생성된 사용자가 모든 호스트에서 MySQL에 접속하여 작업을 수행할 수 있습니다.

 

3. DDNS 설정

가정에서 사용하는 인터넷 연결은 대부분 동적 IP 주소를 사용합니다. 이는 IP 주소가 주기적으로 변경됨을 의미하며, 이로 인해 스프링 서버에서 고정 IP를 사용할 수 없습니다. 이 문제를 해결하기 위해 DDNS를 설정해야 합니다.

 

DDNS는 변경되는 IP 주소를 고정된 도메인 이름에 연결해주는 서비스입니다. 설정 방법은 공유기 제조사와 모델에 따라 약간의 차이가 있지만, 기본적인 절차는 유사합니다.

 

KT 공유기를 예로 들어 설정 방법을 설명드리겠습니다:

  1. 공유기 관리 페이지에 접속합니다. (일반적으로 192.168.0.1 또는 192.168.1.1 주소 사용)
  2. 관리자 로그인을 합니다.
  3. DDNS 설정 메뉴를 찾아 접속합니다. (보통 '고급 설정' 또는 '네트워크 설정' 아래에 있습니다)

과거에는 DynDNS와 같은 서비스가 무료로 제공되었지만, 현재는 유료로 전환되었습니다.

 

따라서 무료 DDNS 서비스인 No-IP(no-ip.com)를 이용하는 방법을 안내해 드리겠습니다:

  1. no-ip.com 회원가입:
    • 사이트에 접속하여 회원가입을 진행합니다.
    • 아이디는 이메일 주소를 사용합니다.
    • 비밀번호는 특수문자 없이 영문자와 숫자만 사용하여 설정합니다. (상세한 가입 절차는 인터넷에서 쉽게 찾아볼 수 있으므로 생략합니다.)
  2. 호스트네임 설정:
    • 로그인 후 'Dynamic DNS' > 'NO-IP Hostnames' 메뉴로 이동합니다.
    • 원하는 도메인명을 입력합니다.
    • IP 주소 란에는 현재 사용 중인 공유기의 기본 게이트웨이 주소를 입력합니다.

 

 

위와 같이 생성된 것을 확인했으면 다시 공유기 사이트로 접속한다음 다음처럼 입력합니다.

 

 

적용 시킨다음 만든 도메인에 접속해서 똑같이 공유기사이트에 접속하면 성공입니다.

 

4. 포트포워딩 설정

공유기를 거치기때문에 외부망에서 내부망으로 들어오려면 포트포워딩을 설정해야합니다.

 

다음과같이 소스IP주소와 소스포트는 적을 필요가 없고, 내부 IP주소는 맥북에서는 `ifconfig | grep "inet " | grep -v 127.0.0.1` 으로 확인해서 적습니다. 그리고 외부,내부 포트까지 적습니다.

 

5. no-ip client 설치

이제 ip가 변경되더라도 자동으로 DDNS 도메인에 매핑되도록 해야합니다.

 

영상보면 잘 설명되있으니 따라하면 됩니다. (Dynamic Update Client 접속)

 

https://my.noip.com/dynamic-dns/duc

 

6. 확인해보기

(참고로 윈도우는 방화벽 설정도 추가적으로 필요합니다)

 

이제 모든 설정이 끝났습니다. EC2에서 로컬 PC 3306,3307포트에 잘 접속이 되는지 확인이 필요합니다.

 

 

이렇게 telnet 명령어나 nc -zv로 확인해서 위처럼 결과가 나온다면 성공입니다.