Jay의 개발블로그

적다보면 언젠가 늘어있을 내 실력

Cloud & Infra

수정) AWS 환경 구축해보기(EC2, RDS)

Jay_on_Day 2024. 9. 6. 17:56
반응형

RDS에서 데이터베이스 생성시 스토리지 자동 조정 부분에 대한 부분에 설명이 부족하여 추가하였습니다.

 

교육기관에서 AWS를 배우고 VPC를 잘못 만졌는지 한동안 안 되어서 혼자 땀을 삐질삐질 했었다.

설상가상으로 프로젝트 2개를 준비하느라 한동안 포스트를 못했다...

 

어쨌든! 드디어 기다리고 기다리던 AWS 환경 구축의 혈이 뚫리는 순간이다.

 

일단 그 전에, 환경을 구축하기 위한 약도를 한번 그려봤다.(부족한 그림실력을 너그러히 봐주시길..)

간단히 그린 약도는 다음과 같다. 

 

일단 IP 호스트 주소의 개수는  IP네트워크 주소를 제외한 16비트 부분 이다. 

따라서 2^16은 65536이다.

 

그리고 다시 약도로 보게 된다면, AWS내에 VPC 환경이 마련되어있다.

그 안에 EC2 하나와 RDS에서 데이터베이스를 하나 만들어 둘 것이다.

EC2를 서브넷 가용영역 2a로, 데이터베이스를 2C로 해둘 것이다.(2개 같이 해놔도 상관은 없다.)

 

먼저 EC2를 생성하려면 보안그룹을 만들어야한다.

AWS 콘솔로 들어가서 회원가입을 한다.

 

무료 클라우드 컴퓨팅 서비스 - AWS 프리 티어

이러한 프리 티어 혜택은 AWS 신규 고객에게만 제공되며 AWS 가입일로부터 12개월 동안 유효합니다. 12개월의 무료 사용 기간이 만료되거나 애플리케이션 사용량이 프리 티어 범위를 초과할 경우

aws.amazon.com

난 이미 가입이 되어있는 상태로 진행을 하겠다

 

예전 기억을 되돌려보면, 콘솔 회원가입까지는 그냥 되었고, 콘솔을 쓰려고 할때 카드를 등록하라했던거 같은데,

이 글을 올리기 위해 계정을 하나 파면서 이젠 회원가입 마지막 단계에 바로 카드를 등록하라고 했던 점이 놀랐다.

 

아무튼 이렇게 가입이 완료되고, 콘솔 홈으로 가면 다음과 같은 화면이 보일 것이다.

 

여기서 다시 확인해야할 점은 오른쪽 상단에 본인 이름 왼쪽에 지역이 '서울' 인지 항상 잘 확인해야한다.

 

지역마다 과금량도 다르고, 앞으로 설명도 하겠지만, 만들어 둔것들을 다 삭제를 시켜야하는데, 남겨져 버린 항목들이 있으면 과금이 된다. 

 

상단 검색 창에 EC2라고 검색을 한다.

 

이렇게 EC2를 클릭하게 되면, EC2 대시보드가 보이게 된다.

 

그러면 본격적으로 EC2를 만들려면 보안 그룹(Security Group)을 깔아놔야한다. 

가상 방화벽이라 생각하면 편하다. 이를 통해, 외부에서 접속을 허용하는 조건을 달아둔다고 생각하면 이해가 편할 것이다.

왼쪽 카테고리에 보면 네트워크 및 보안 - 보안그룹 으로 접속한다.

 

이렇게 들어가게되면, 보안 그룹 생성 버튼이 있다. 클릭!

 

그러면 아래처럼 다음과 같은 화면이 나오게 되는데, 

난 다음과 같이 입력하였다.

보안 그룹 이름 : devel-ap2-python-sg

설명 (선택사항) : devel-ap2-python-sg

vpc는 default 값으로 설정 되어있으니 건드리지 않아도 된다.

 

인바운드드에 규칙 추가 버튼을 누르고 유형은 SSH 소스는 내 IP로 설정하면 된다.

 

여기서 인바운드와 아웃바운드가 무엇이냐면,

<인바운드 규칙>

클라우드에 들어갈 수 있는 조건을 설정하는 것이다. Security SHell(SSH)로 내 IP주소만 들어갈 수 있도록 하였다.

 

<아웃바운드 규칙>

클라우드의 작업을 끝나고 나가는 조건을 말한다고 생각하면 편하다. 

 

그래서 아웃바운드 규칙을 보면 모든 트래픽으로 나갈 수 있도록 설정한 것이다.

 

그러면 다음과 같은 화면이 뜬다. (여러모로 가린건 많지만, 보안 사항이니 감안하고 봐주시길..)

 

그러면 다시 보안그룹 탭을 누르면 아까 default에 하나가 더 늘었다.

 

이처럼 DB에 쓰일 보안 그룹도 하나 더 만들어주자.

이번엔 DB에 쓰일 보안 그룹이다보니, MySQL/Aurora로 지정하고, 자동으로 프로토콜은 TCP 포트범위는 3306이 된다.

여기서 주의할 점은 소스는 사용자 설정으로 지정한뒤 오른쪽 돋보기 모양을 누르면 아까 만들었던 devel-ap2-python-sg로 지정한다. 

 

이렇게 다 만들어지면..

이렇게 3개의 보안그룹이 만들어졌다.

 

그 다음은, EC2를 쓰기 위한 열쇠를 하나 만들어 줄 것이다. 그 기능이 바로 키 페어이다.'

왼쪽 탭에 보안그룹과 같은 네트워크 및 보안 카테고리에 있다.

키 페어를 만들어 보자. 키 페어 생성 클릭!

 

여기엔 본인이 넣고 싶은대로 넣으면 된다. 난 주로 내 이름-key라 명명하는걸 좋아한다.

키 페어는 RSA, 프라이빗 키 파일 형식은 아까 SSH 방식을 사용한다 했으니, .pem으로 선택! 그리고 키 페어 생성 한번 더 클릭한다.!

그러면 웹 브라우저에서 파일 하나가 다운로드 될 것이다.

난 이미 키 페어를 하나 만들어둬서 (1)이 되었지만 저 pem 파일 안에는 암호화된 여러 단어들이 있을 것이다.

이 파일을 고이 잘 모셔두자.

 

그 다음은 RDS에서 데이터베이스를 만들어볼 것이다. 사실 EC2든 데이터베이스든 뭘 먼저 만들어도 상관은 없다.

다만, 데이터베이스가 생성되는데엔 오랜 시간이 걸리기에 먼저 만들 것이다.

 

다시 검색창에 rds를 쳐준다. RDS 클릭!

 

들어가게 되면 아래처럼 화면이 나온다.

 

 

이러면 왼쪽에 데이터베이스로 가보자.

 

데이터베이스가 아무것도 없음을 알 수 있고, 데이터 베이스를 만들기 전에, 서브넷 그룹, 파라미터 그룹, 옵션 그룹을 차례대로 만든 다음에 데이터베이스를 생성할 것이다. 왼쪽의 탭에서 아래로 좀 내려가면 이렇게 있을 것이다. 

서브넷그룹부터 만들어보자. 

이름 : devel-ap2-db-subnetgroup

설명(선택사항) : devel-ap2-db-subnetgroup

vpc : default로 지정되어있을 것이다. 건드릴 것도 없고, 건드리지 말자.

서브넷 추가에서 가용영역 2a, 2c

서브넷은 4개의 칸 다 선택해준다.

그런 다음 생성!

생성하게 되면 서브넷 그룹 하나가 생겼다.

 

 

그 다음은 파라미터 그룹이다.

파라미터 그룹 이름 : devel-ap2-db-paramgroup

설명(선택사항) : devel-ap2-db-paramgroup

엔진 유형 : MySQL Community

파라미터 그룹 패밀리 : mysql8.0

유형 : DB Parameter Group

 

 

생성을 클릭하면 파라미터 그룹도 하나 생긴다.

 

 

그리고 옵션 그룹이다. 

이름 : devel-ap2-db-optiongroup

설명(선택사항) : devel-ap2-db-optiongroup

엔진 : mysql

메이저 엔진 버전 : 8.0

 

생성 버튼을 누르면 분명 하나를 만들었던거 같은데 2개가 생겼다. 이는 mysql을 위한 옵션그룹을 따로 만들어지게 된것이다. (지우면 안 됩니다!)

 

이러면 이제 다 만들었으니

데이터베이스를 본격적으로 만들어보자. 데이터베이스 생성 클릭!

 

이제부터 설정할게 많다. 잘 따라와주시길 바란다. 언급되지 않은 것은 건드리지 않길 바랍니다.

  • 표준생성
  • 엔진옵션 : MySQL
  • 엔진버전: MySQL 8.0.35
  • 템플릿 : 프리 티어
  • 설정 - DB 인스턴스 식별자 : devel-ap2-db-mysql
  • 마스터 사용자 이름 : admin
  • 암호 자동 생성 해제
  • 마스터 암호 : admin123#.#
  • 인스턴스 : 버스터블 클래스, db.t3.micro
  • 스토리지 : 범용 SSD(gp3), 20GiB, 스토리지 자동조정 해제
  • 연결 : EC2 컴퓨팅 리소스에 연결 안 함
  • 네트워크 유형 : IPv4
  • VPC : Default
  • DB 서브넷 그룹 : devel-ap2-db-subnetgroup
  • 퍼블릭 액세스 : 아니오
  • VPC 보안그룹(방화벽) : develc-ap2-db-sg(default는 해제해야함)
  • 가용영역 : ap-northeast-2a, ap-northeast-2c 둘 중 하나 선택
  • 데이터베이스 인증 : 암호인증
  • 추가구성
    • 초기 데이터베이스 이름 : <빈칸으로 남긴다.>
    • DB 파라미터 그룹 : devel-ap2-db-paramgroup
    • 옵션 그룹 : devel-ap2-db-optiongroup
  • 자동 백업 : 비활성화
  • 유지 관리 : 마이너 버전 자동 업그레이드 사용 - 해제
  • 삭제 방지 활성화 : 비활성화 <현업 가면 거의 다 활성화를 해둔다고 합니다.>

 

 

 

devel-ap2-db-mysql에 대해 제안된 추가 기능이라고 하나 뜰텐데, 그냥 꺼주면 된다. 그러면 데이터베이스가 하나 만들어진다.

 

 

리전 및 AZ 부분을 2C로 고른 이유는 아까 맨 처음에 그린 구상대로 한번 만들어 보고 싶어서 선택했다.

다시 말하지만, 2a나 2c 둘다 상관 없다.

 

그러면 데이터베이스가 만들어질텐데, 오래 걸리기 때문에 EC2로 가서 인스턴스를 만들러가보자.

인스턴스 시작 클릭!

 

  • 이름: devel-ap2-python
    • AMI: Amazon Linux 2023 AMI
    • 인스턴스 유형 : t2.micro
    • 키 페어 : 아까 만든 본인의 key
    • 네트워크 설정: [편집]
      • VPC : default
      • 서브넷 정보: ap-northeast-2a
      • 퍼블릭 IP 자동 할당: 활성화
      • 보안그룹: devel-ap2-python-sg
    • 스토리지 : 8G, gp3

 

수정) 스토리지 자동 조정 활성화 체크 해제

 

 

이렇게 하고 인스턴스 시작 을 클릭하게 된다면, 아래처럼 보이고 모든 인스턴스 보기 클릭!

 

아무것도 안 보일텐데 새로고침 버튼(웹 페이지를 새로고침 하라는게 아니라, 인스턴스 상태 버튼 왼쪽의 새로고침 모양)을 눌러주면 생긴다.

처음에는 상태검사가 '초기화'로 되어있겠지만, 기다려보면 '상태 검사 2/2개 검사 통과'로 뜰테니 기다리면 된다.

 

 

인스턴스ID를 클릭하면, 아래처럼 보인다.

여기서 퍼블릭 IPv4주소에서 2개 사각형들이 겹친 부분을 클릭하면 저 ip주소가 복사가 된다.

 

그런 다음 MobaXterm을 열어서 세션을 만들어준다.

세션 만드는 법은 예전 MobaXterm 관련해서 포스팅 한 적이 있다. 아래를 참고해 주길 바랍니다.

 

MobaXterm으로 설치 및 원격 로그인!

길게만 느껴졌던 정처기 시험 2024 2회가 끝나고... 아무튼 어찌저찌 잘 끝났고, 주사위는 던져졌고, 결과에 일희일비하지 말자. 떨어지면 또 보면 되는거고, 붙으면 더 좋고~   오늘은 SSH를 이

jayveloper0102.tistory.com

 

 

Remote host * : 아까 복사한 퍼블릭 ip주소 복붙

specify username 체크 : ec2-user

밑에 Use private key : 처음에 키 페어 만들어둔 pem파일 선택(선택은 파일 경로 옆 파일 모양 클릭하면 나와요)

 

OK를 누르면...

뭐라고 떴는데, 연결할거면 Accept, 그렇지 않다면 Cancel을 하라고 하는데, 이러면 거의 성공했다고 봐도 무방하다.

Accept 클릭!

 

드디어... 저 새를 볼 수 있다.

 

출처 : KBS 다큐 유튜브

정말 보고 싶었던 화면이었다. 

 

하지만 여러가지 파이썬이나 플라스크, 데이터베이스들을 연결하는 것들도 할 것이지만, 포스트가 너무 길어지기에, 여기까지 하려 한다. 대신 끝날때까지 끝난게 아니다. 이대로 방치를 해둔다면, 과금이 발생하기에, 만들어뒀던 것들을 다시 삭제해야한다. 

 

??? : 힘들게 만들었는데 지운다고요...? 

 

네... 저도 지우기 싫지만, 지워야합니다. 안그러면 여러분들의 소중한 돈이 빠져나갑니다.. ㅠㅠ

 

삭제 순서는 아래와 같습니다.

  • 데이터베이스 삭제
    • 데이터베이스 삭제 → 완료후 옵션그룹, 파라미터그룹, 서브넷 그룹 삭제

 

최종 스냅샷 생성 체크 해제해야한다! 안그러면 과금 됩니다~!

그리고 백업을 더이상 이용할 수 없다는 점 인정 체크

그리고 delete me도 따라 친다.

잘 삭제되고 있다..

 

 

데이터베이스가 다 삭제되면 서브넷그룹부터 옵션 그룹까지 다 삭제하자. 서브넷부터는 후다닥 삭제할 수 있다. 기달리자.

- 서브넷 그룹

 

- 파라미터 그룹

 

- 옵션 그룹  

devel-ap2-db-optiongroup 체크하고 상단 우측에 옵션 그룹 삭제 클릭!

  • EC2 인스턴스 삭제
    • 인스턴스 종료

여기서 집중! 중지랑 정지랑 다릅니다. 중지는 말 그대로 사용을 중지하며, aws ec2 안에 인스턴스를 남겨둔것이기 때문에 과금이 됩니다. 정지( 즉, 삭제)를 시켜야 과금이 안됩니다.

 

Terminate(delete) 클릭!

지금은 종료 중 이라 뜨지만, 다 삭제가 된다면 종료됨 이라고 뜰거고 몇시간동안은 그 기록이 남아있다가 사라질 것이니 걱정하지 마세요.

 

 

  • 보안그룹 삭제

db 보안그룹은 아까 python 보안그룹을 참조를 했기 때문에, python은 삭제가 불가능하다.

그렇기에 db 보안그룹을 먼저 삭제하고 python 보안 그룹을 삭제하면 된다.

 

파이썬보안 그룹을 가져오긴 했지만, db 보안 그룹도 똑같다. 삭제 버튼 눌러주면 끝.

 

 

이러면 default 보안그룹만 남은 상태가 된다. default 보안그룹은 삭제하면 안된다!

 

정말 오랜만에 포스팅을 하게 되었는데, 즐거웠습니다. 다음엔 파이썬, 플라스크, mysql 을 써보도록 해볼게요!

반응형