AWS EC2/RDS Spring Boot 배포 + DNS 포워딩 (1)

Jiwon An·2021년 8월 8일
0

AWS

목록 보기
1/7

❗️ 이 블로그로 이전하기 전에 작성한 글입니다.

총 5단계에 걸쳐 진행할 예정이다.

  1. AWS EC2 + RDS 생성
  2. RDS table 생성
  3. VSCode Spring Boot 로컬 환경 서버 구축
  4. 로컬 서버 코드 EC2 업로드 + DNS 포워딩
  5. EC2, RDS 주의사항

1장. AWS EC2 + RDS 생성

1. AWS EC2 인스턴스 생성

1) EC2 대시보드 -> 인스턴스 시작 -> OS 선택


인스턴스 시작을 클릭하면 OS 리스트가 나온다. 난 우분투가 편해서 18.04 LTS 64bit 를 선택했다. CentOS는 Amazon Linux를 선택하면 된다.

2) 인스턴스 유형 선택 -> 다음 (검토 및 시작X)


인스턴스 유형 리스트가 나온다. 테스트를 위해 생성한 거라 프리 티어에서 사용 가능한 유형을 선택했다.

3) 퍼블릭 IP 자동 할당 활성화 -> 다음


외부에서 접속하기 위해 퍼블릭 IP를 활성화 시킨다.

4) 스토리지 30GB 설정(선택) -> 다음


스토리지는 로컬 PC의 디스크와 같은 저장장치를 말한다. 프리 티어는 30GB까지 사용가능하기 때문에 변경해준다.

5) 태그 설정 -> 다음

6) 보안 그룹 설정 -> 검토 및 시작


규칙을 총 3개 추가한다.

  • SSH 
    내 PC에서 AWS EC2 터미널로 접속할 때 필요하다. "내 IP" 선택하면 내 외부 IP가 자동 지정된다. 까페와 같은 집 외에 다른 장소에서 접속할 땐 해당 장소의 IP에 대해 다시 SSH 규칙을 추가해야 접속된다.
  • HTTP, HTTPS 
    외부에서 이 사이트의 웹서비스에 접근할 때 사용한다. (닫으면 외부에서 서비스에 접근 불가)

7) 인스턴스 시작 검토 -> 새 키 페어 생성 -> 키페어 다운로드 -> 인스턴스 시작


이 키 페어를 가지고 있어야 해당 인스턴스에 접근이 가능하다.

인스턴스가 running 상태면 성공적으로 생성된 것이다.

8) 탄력적 IP -> 탄력적 IP 주소 할당 -> 새 주소 할당


할당 버튼을 클릭하면 새 고정 IP가 할당된다.

9) 탄력적 IP 주소 연결 -> 연결할 인스턴스 지정 -> 연결


이전에 생성한 인스턴스에 고정 IP가 할당된다.

제대로 할당됐는지 확인한다.

Spring Boot 배포가 목적일 시 인바운드 규칙 추가한다.
이유 : Spring Boot 프로젝트는 8080 포트에서 실행되기 때문

10) 보안 그룹 -> 인바운드 규칙 편집

11) 인바운드 규칙 추가 -> 규칙 저장

[사용자 지정 TCP] - [8080] - [위치 무관] 규칙을 추가한다.

12) EC2 터미널 접속 설정

12–1) 다운로드한 pem파일 이동 -> 권한 변경

AWS 같은 외부 서버로 SSH 접속을 하기 위해선 매번 ssh -i pem키 외부 IP 를 입력해줘야 한다. 쉽게 SSH 접속을 할 수 있도록 설정할 것이다.

cp pem키위치 ~/.ssh 
cd ~/.ssh 
ls -al pem키위치 
chmod 600 pem키위치

cp pem키위치 ~/.ssh : 다운로드한 키페어 pem파일 ~/.ssh 로 복사
chmod 600 pem키 : pem 키 권한 변경

12–2) config 설정

vim config 로 편집기를 연다.

# ---------------------------- Host 접속시원하는이름         
            HostName 탄력적IP주소
            User ubuntu         
            IdentityFile ~/.ssh/pem키

AWS에서 Ubuntu를 선택했다면 User는 ubuntu, 그 외는 ec2-user 로 기재한다.
Host 접속시원하는이름 : 앞으로 접속할 키값 (ex. Host abc로 등록시 ssh abc로 해당 EC2에 접속)
HostName 탄력적IP주소 : 탄력적 IP주소 입력
User 사용자이름 : Ubuntu -> ubuntu, 그 외 ec2-user
IdentityFile 이동한pem키위치 : 저장한 pem파일 위치

작성이 완료되면 :wq 입력한 후 ls -al config 로 config 파일이 생성됐는지 확인한다.

12–3) 접속 테스트

ssh springboot-test 로 접속한다. 해당 화면처럼 나오면 성공한 것이다.

2. 보안 그룹 생성 (EC2에서만 접근 가능하도록)

1) 생성한 EC2 인스턴스의 보안 그룹 확인


springboot-test 인스턴스가 속한 보안 그룹이 springboot-test인 것을 확인한다.

2) 보안 그룹 -> 보안 그룹 생성

3) 보안 그룹 이름과 인바운드 규칙 설정 -> 보안 그룹 생성

설정하는 이유 : EC2 인스턴스의 보안 그룹에서만 RDS에 접근할 수 있도록 하기 위해

  • 보안 그룹 이름 : EC2-RDS Security Group
  • 보안 그룹 설명(선택) : EC2-RDS Security Group
  • 인바운드 규칙: [MySQL/Aurora] - [TCP] - [3306] - [사용자 지정] - [springboot-test의 보안그룹]
    • MySQL DB를 사용할 것이기 때문에 포트는 3306으로 설정

3. RDS의 서브넷 그룹 설정

1) RDS -> 서브넷 그룹 -> DB 서브넷 그룹 생성

2) 서브넷 그룹 이름과 VPC 설정 -> 생성

  • 서브넷 그룹 이름 : RDS Subnet Group
  • 서브넷 그룹 설명(선택) : RDS Subnet Group
  • VPC : springboot-test와 같은 VPC 선택
  • 서브넷 추가 : 가용 영역에 있는 모든 영역 선택 (서브넷 리스트에 있는 모든 서브넷 선택)

생성된 서브넷 그룹을 확인한다.

4. DB 한글 설정을 위한 파라미터 설정

설정이유 : MySQL은 기본적으로 한글을 지원하지 않기 때문에

1) RDS -> 파라미터 그룹 -> 파라미터 그룹 생성

2) 파라미터 그룹 이름 설정 -> 생성


생성된 그룹을 선택한다.

3) 생성된 그룹 선택 -> 파라미터 편집 -> 파라미터 수정 -> 변경 사항 저장

설정 2가지를 변경한다.

  • character_set_client : utf8
  • collation_connection : utf8_general_ci

5. RDS 생성

EC2 에서만 접속 가능하도록 생성할 것이다.

1) RDS -> 데이터베이스 생성

2) 데이터베이스 옵션 선택 (프리티어 기준) -> 데이터베이스 생성

초기 값은 default라고 따로 표시함
(필수) 값은 반드시 변경하고 가야함

  • 데이터베이스 생성 방식 : 표준 생성
  • 엔진 옵션
    • 엔진 유형 : MySQL
    • 에디션 : MySQL Community
    • 버전 : MySQL 5.7.22
  • 템플릿 : 프리 티어
  • 설정
    • DB 인스턴스 식별자 : rds-test
    • 마스터 사용자 이름 : admin (default)
  • DB 인스턴스 크기 : 버스터블 클래스 (default)
  • 스토리지
    • 스토리지 유형 : 범용(SSD) (default)
    • 할당된 스토리지 : 20GB (default)
    • 스토리지 자동 조정 활성화 : 비활성화
  • 연결
    • Virtual Private Cloud(VPC) : Default VPC (default)
    • (필수) 서브넷 그룹 : rds subnet group (3번에서 생성한 서브넷 그룹 선택)
    • 퍼블릭 액세스 가능 : 아니요 (default)
    • (필수) VPC 보안 그룹 
      기존 보안 그룹 > ED2-RDS Security Group (2번에서 생성한 보안 그룹 선택)
    • 가용 영역 : 기본 설정 없음 (default)
    • 데이터베이스 포트 : 3306 (default)
  • 데이터베이스 인증
    암호 및 IAM 데이터베이스 인증 (암호 인증 해도 상관X)
  • 추가 구성
    • 초기 데이터베이스 이름 : test
    • (필수) DB 파라미터 그룹 : korean-parameter
    • 그 외 모두 default값 사용

3) RDS 접속 테스트

생성된 RDS의 엔드포인트와 포트를 확인한다.

MySQL 접속 명령어

mysql -p -u [마스터사용자이름] -p [포트] - host [엔드포인트]

ex) 
mysql -p -u admin -P 3306 - host rds-test.coysrflpjez2.us-west-2.rds.amazonaws.com

EC2 인스턴스에서 접속되는지 확인한다. (접속하는 방법은 다음 장에서 설명할 것이다.)

자, 이로써 드디어 AWS EC2에 AWS RDS을 연동했다. 다음 장에선 EC2에 Spring Boot를 배포하는 법에 대해 알아보도록 할 것이다. 🚀 피드백 환영합니다! 🚀

profile
🚀 백엔드 2년차 개발자입니다 🚀 성장의 즐거움으로 아자자자!🤣

0개의 댓글