RDS 생성

RDS > 데이터베이스 생성 > MySQL로 생성 > 버전은 기본으로 선택(MySQL 8.0.35)

스크린샷 2024-08-26 오전 12.24.32.png

템플릿에서 프로덕션과 개발/테스트 를 선택하면 아래에 Multi AZ 기능을 사용할 수 있다.

프리티어에서는 사용 불가.

스크린샷 2024-08-26 오전 12.25.56.png

DB인스턴스 이름과 어드민 사용자 이름, 암호를 설정한다.

스크린샷 2024-08-26 오전 12.27.22.png

그다음에 인스턴스 구성을 한다. 프리티어를 선택했기 때문에 버스터블 클래스 이외에는 선택사항이 없다.

버스터블 클래스란 상황에 따라서 CPU의 성능을 버스트시킬 수 있다는 뜻이다.

스크린샷 2024-08-26 오전 12.34.24.png

스토리지 유형은 범용 SSD(gp2)로 선택한다. 스토리지 유형 목록을 보면 GP3란게 있는데, 이건 추가 비용을 냄으로써 IOPS 처리량을 늘릴 수 있다.

할당된 스토리지의 크기는 간단한 시스템을 유지하기 위해 20GIB로 설정한다.

스토리지 자동 조정 활성화란게 있는데 오토 스케일링을 뜻한다. 최대 스토리지 임계값은 디폴트(1000GIB)로 설정해준다.

스크린샷 2024-08-26 오전 12.35.57.png

EC2 인스턴스 연결

그 다음은 컴퓨팅 리소스에 대해서 묻는데, 최근 UI 업데이트를 통해 여기서 직접 EC2 인스턴스를 만들어서 RDS와 바로 연결시킬 수 있다.

스크린샷 2024-08-26 오전 12.40.32.png

여기서 RDS와 연결해줄 EC2 인스턴스를 생성해둔다.

  • 인스턴스명 : aws-learner-rds-ec2-instance, 내가 가지고 있는 기존 키페어(testkey.pem) 선택
  • 보안 그룹 : http 80포트와 ssh 22포트를 위치무관 접속할 수 있게 설정.

    스크린샷 2024-08-26 오전 12.50.23.png

  • 고급 세부 정보 > 사용자 데이터 에서 편리한 설정을 위해 EC2 인스턴스가 생성되면서 실행될 스크립트 내용을 넣어준다.
  • EC2 인스턴스 생성 후 apache, php, mysql을 yes 옵션으로 설치 후 아파치 실행
  • 간단한 php파일을 아파치 서버 디렉토리 내에 index.php로 저장
  • wget 명령어로 S3내의 connect.php 파일을 다운로드

connect.php 파일 내용

<?php 
$username = "admin"; 
$password = "awslearner"; 
$hostname = "yourhostnameaddress"; 
$dbname = "awslearner";

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password) or die("MySQL에 연결할 수 없습니다"); 
echo "MySQL 접속 성공! username - $username, password - $password, host - $hostname<br>"; 
$selected = mysql_select_db("$dbname",$dbhandle) or die("MySQL DB 연결 실패... - 다시 시도해보세요!"); 
?>

EC2 인스턴스 생성이 완료되었으면 다시 RDS 생성 화면으로 돌아와서 방금 생성한 EC2 인스턴스를 선택해준다.

스크린샷 2024-08-26 오전 12.53.56.png

VPC는 디폴트로 만들어질것이고, DB 서브넷 그룹은 기존 항목을 선택하거나 자동설정으로 선택해준다.

VPC 보안 그룹은 선택/생성이 있는데 기존에 생성했던 ssh, http 접근이 가능한 보안그룹으로 선택해줬다.

스크린샷 2024-08-26 오전 12.57.35.png

다음으로 가용영역이 있는데, 지금은 프리티어 용이라 Multi-AZ 기능을 사용할 수 없으므로 선택 권한이 없다.

추가 구성에서 데이터베이스 포트를 지정할 수 있다. (MySQL default 포트는 3306)

스크린샷 2024-08-26 오전 12.58.21.png

다음은 데이터페이스 암호 인증을 선택할 수 있는 곳이다. 여기선 위에서 부여했던 어드민 사용자, 암호를 가지고 데이터베이스에 접속할 수 있게끔 ‘암호 인증’을 선택해 줬다.

스크린샷 2024-08-26 오전 1.00.07.png

마지막으로 추가구성에서 데이터베이스 옵션에서는 초기 데이터베이스 이름을 설정해주고 나머지는 디폴트로 설정해줬다.

스크린샷 2024-08-26 오전 1.03.15.png

EC2 인스턴스 확인

방금 RDS와 연결한 인스턴스를 퍼블릭 IP주소로 접속해보면 php 화면이 뜬다.

스크린샷 2024-08-26 오전 1.54.05.png

이제 이 EC2 인스턴스에 터미널로 접속해본다.

스크린샷 2024-08-26 오전 1.56.45.png

아까 EC2를 생성할 때 입력했던 구문중 connect.php 파일 내용 확인

/var/www/html 폴더에 wget 이동

스크린샷 2024-08-26 오전 1.58.31.png

  • vi connect.php
  • hostname 값을 생성한 RDS 인스턴스의 엔드포인트명으로 바꿔준다.

    스크린샷 2024-08-26 오전 3.20.47.png

수정 한 후 ec2 DNS명/connect.php로 확인해보기

확인해보면 아래와 같이 MySQL에 연결할 수 없다고 나온다.

스크린샷 2024-08-26 오전 2.06.19.png

이유는 현재 RDS 보안그룹은 RDS 인스턴스 안에서만 존재하며,

우리가 웹에서 접속한 EC2 인스턴스에서는 별개의 보안그룹이 존재한다.

두 개의 서로 다른 클라우드에서 다른 보안 그룹이 존재하므로 현재 EC2에서 RDS로 통신이 불가능한 상태이다.

RDS 보안 그룹 확인하기

생성한 RDS의 보안 그룹 > 인바운드 규칙 확인

그다음, 이 소스를 지우고 아까 EC2 인스턴스가 속해 있는 보안 그룹을 찾아서 연결해준다.

스크린샷 2024-08-26 오전 2.34.04.png

그러면 이렇게 ‘기존 IPv4 CIDR 규칙에 a 참조된 그룹 ID를 지정할 수 없습니다.’ 라는 에러가 뜬다.

위 에러를 해결하려면, 이 규칙을 삭제하고 다시 똑같이 만들어주면 지정이 된다.

스크린샷 2024-08-26 오전 2.36.24.png

다시 똑같이 만들어 준 후에 저장을 누른다.

(DB 파라미터 그룹은 따로 정리.)

다시 /connect.php 화면을 로딩해서 접속 성공 여부를 확인한다.

스크린샷 2024-08-26 오전 3.21.41.png

태그: ,

카테고리:

업데이트:

댓글남기기