이번시간에는 DB서비스 구축을 위해 알아보겠습니다.
지금까지 저희는 DB사용을 위해 AWS EC2에서 mysql을 설치했고 워크벤치를 이용해 DB연동을 확인했습니다.
설치 과정에서 외부사용자가 EC2 인스턴스 실행중일 때 DB를 자유롭게 접근할 수 있도록 설정을 해주었습니다.
결과적으로 저희의 시스템은 EC2내부에서 웹서버를 구축했고 DB서비스까지 구축했습니다.
하지만 DB서비스와 웹서버를 동시에 이용하므로 성능 상 효율이 떨어질 수 있기 때문에 DB서버를 따로 구축하여 DB만 접근할 수 있도록 한다면 훨씬 편할 것 입니다.
우리는 외부의 DB접근까지는 설정해주었기 때문에 이 DB를 접근할 데이터베이스 관리시스템이 필요합니다.
우리는 AWS가 제공하는 관계형 데이터베이스 관리시스템(RDBMS)인 RDS(Relational Database Service)를 이용하여 외부의 DB서버를 구축하여
데이터베이스를 관리할 수 있도록 해보겠습니다.
가장 먼저 AWS 콘솔에서 RDS 인스턴스를 생성해야합니다. AWS educate 콘솔창에서 상단 서비스탭에서 데이터베이스영역의 RDS를 클릭합니다.
그 다음, 화면 상단의 데이터베이스 생성 버튼을 클릭합니다.
데이터베이스 생성창에서 모든 설정은 디폴트로 놔두고 아래 사항만 바꿔줍니다.
1. 엔진유형: MySQL
2. 템플릿: 프리티어(공짜로 이용해야하기때문에.... 단 1년이 지나면 과금이 될 수 있습니다.)
3. DB인스턴스 식별자: 마음대로 바꿔주기(저는 jow1025cloud로 바꿨습니다.)
4. 자격 증명 설정에서 로그인 ID와 마스터 암호 생성(저는 ID를 root로 생성했습니다.)
5. 퍼블릭 엑세스 기능: "예" ( 외부에서 원격으로 DB를 접근하기위함)
이렇게 수정하여 DB를 생성하고 왼쪽 탭의 '데이터베이스'를 클릭하면 약간의 시간이 소요된 후 인스턴스가 생성됨을 알 수 있습니다.
생성된 인스턴스를 클릭하면 아래와 같이 엔드포인트 도메인 주소가 뜨는데, 이것을 복사해 둡니다.
EC2에서는 퍼블릭 ip주소로 EC2를 접속하고, RDS는 이 엔드포인트 주소를 통해 접속합니다.
이제 추가로 보안설정을 해줘야합니다.
우리는 EC2 인스턴스의 보안그룹에서 ssh, http연결을 허용했기 때문에 ssh로 EC2 터미널을 접근할 수 있었고 웹을통해
apache, php 연결을 확인할 수 있었습니다.
이렇듯, 저희는 RDS로 DB서버를 따로 구축하여 EC2나 다른 외부 컴퓨팅 환경에서 이 서버의 Mysql DB를 접근하게되는데, 이 때 외부에서 RDS의
Mysql로 데이터를 전송/요청하고 RDS에서 데이터를 반환하는 등의 프로토콜 통신을 위해 보안그룹에서 따로 설정을 해줘야합니다.
연결&보안 탭에서 보안그룹을 클릭합니다.
보안그룹 창이 뜨면 보안설정을 해줄 보안그룹ID를 클릭합니다.
오른쪽 하단의 '인바운드 규칙 편집' 을 클릭합니다.
인바운드 규칙 창에서 아래 '규칙 추가'버튼을 클릭한 뒤 아래와 같이 설정한 뒤 '규칙 저장' 버튼을 누르고 빠져나옵니다.
Mysql을 사용하므로 Mysql/Aurora로 맞추고 어디서든 접근할 수 있도록 소스를 위치무관으로 바꿔주었습니다.
아래와 같이 저장이 되어있을 것입니다.
이로써 설정이 완료되었습니다. 이제 EC2에서 SQL쿼리로 RDS의 Mysql DB를 접근할 때 주소(엔드포인트)를 통해 접근할 수 있습니다.
실제로 접근해보겠습니다. 테라텀으로 EC2에 접속한 뒤 아래 명령어로 RDS mysql에 접근합니다.
mysql -u root -p -h 아까 복사한 엔드포인트 주소
비밀번호는 아까 RDS인스턴스에서 DB를 생성할 때 설정한 비밀번호를 입력하면됩니다.
터미널에서 DB를 접근해서 사용하는 것은 불편하므로 워크벤치를 이용해 똑같이 접근해보겠습니다.
아래 '+'버튼을 클릭합니다.
아래와 같이 설정해준 뒤 test connection을 눌렀을 때 문제가 없을경우 ok버튼을 클릭합니다.
Connection Name은 편하게 지어주고 Username과 password는 인스턴스에서 DB생성 때 설정한 정보를 입력합니다.
독특한 점은 hostname에 ip주소가 아닌 엔드포인트 주소를 설정한다는 점입니다.
위에서 언급했듯이 우리는 RDS의 DB에 접근할 때 ip가아닌 RDS 인스턴스의 엔드포인트 주소로 접근할 수 있습니다.
문제없이 완료되었다면 성공이고, 에러가 났다면 처음부터 다시 진행해보는게 맘 편합니다...
간단하게 show database; 쿼리문으로 결과를 확인하는 것으로 이번 실습 마치겠습니다.
우리가 구축한 시스템의 간단한 구조도는 다음과 같습니다.
다음번에는 실제 insert, select 등의 쿼리문으로 작업을 진행해보겠습니다.
'AWS' 카테고리의 다른 글
AWS EC2 인스턴스와 로컬 간 파일 전송하기(FileZilla) (0) | 2021.06.05 |
---|---|
AWS RDS DB 테이블 생성 및 Php와 연동하기 (0) | 2021.06.02 |
AWS 웹서버 구축을 위한 php설치 및 apache-php연동 (0) | 2021.06.01 |
AWS EC2 사용을 위한 MySQL 설치 (0) | 2021.05.18 |
AWS EC2 사용을 위한 리눅스 기초 명령어 학습3 (0) | 2021.05.04 |