[초보자를 위한 AWS 웹구축] 9. DB서버 구축하기

  • Post category:AWS
  • Post author:

이번 포스트에서는 웹 애플리케이션에서 사용되는 데이터를 유지 관리하는 Amazon RDS MySQL DB 인스턴스를 만듭니다.

위의 아키텍처에서 두개의 RDS 인스턴스가 각각의 가용영역 안에서 Active-Standby상태로 놓여져 있으며 엔진은 MySQL을 사용하고 있습니다. 이 두 RDS를 설치해 보도록 하겠습니다.

먼저 설치 전에 Parameter Group과 Option Group, Subnet Group을 설정할 것입니다.

1. Parameter Group 설정하기

Parameter 그룹은 하나 이상의 DB인스턴스에 적용되는 엔진 구성값의 컨테이너 입니다. AWS RDS는 parameter group설정을 통하여 네트워크 접속 프로토콜을 사용할 수 있도록 합니다. (Parameter Group에 대한 자세한 설명 바로가기 ‘클릭’)

그럼 Parameter Group 설정을 시작하겠습니다.  [Services] -> [RDS] -> [Parameter Group] -> [Create parameter group] 클릭

2. mysql 5.7로 그룹 패밀리를 구성하였습니다(사용하시는 DB엔진을 선택해 주세요). 밑에 그룹 이름과 설명을 임의대로 명명한 후 [Create]클릭하세요.

3. 아래와 같이 Parameter Group이 생성된 것을 볼 수 있습니다. default.mysql5.7은 AWS가 제공하는 default parameter group입니다.

4. Option Group 설정하기

Parameter Group 설정이 끝났으니 Option Group도 설정하려 합니다. 옵션 그룹을 통해서 특정 DB 인스턴스에 적용되는 기능을 지정할 수 있습니다. (Option Group에 대한 자세한 설명 바로가기 ‘클릭’)

[Services]  -> [RDS] -> [Option Group] -> [Create option group]

5. option group세부사항을 정의해 주려고 합니다. 옵션 그룹의 이름과 설명, 엔진의 종류와 버전을 아래 그림과 같이 입력 후 [Create]버튼을 누릅니다

6. 아래와 Option Group이 만들어 진 것을 확인할 수 있습니다. Parameter group과 마찬가지고 default option group이 있는 것도 확인할 수 있습니다.

7. 일반적으로 Amazon RDS DB 인스턴스는 프라이빗 서브넷에서 호스팅되어야 합니다. 따라서 RDS를 만들기 위해서는 RDS가 위치할 subnet을 먼저 지정해야 합니다.

Subnet group을 생성해 보도록 하겠습니다. [Services] -> [RDS] -> [Subnet Groups] -> [Create DB subnet group] 클릭

8. DB subnet group에 대한 세부사항을 설정하는 단계십니다. 크게 위의 부분과 아래 부분으로 나누어 살펴보겠습니다. 위의 부분은 DB subnet group의 이름과 설명,  VPC대역대를 설정하도록 합니다. 이름의 경우에는 한번 만들어 지면 수정이 되지 않는다는 점을 참고해 주세요. 또한 DB subnet이 속해야 할 VPC를 선택합니다.

아래 부분을 마저 살펴 보겠습니다. 만약 VPC 내의 모든 프라이빗 서브넷에 rds 를 설정할 것이라면 [Add all subnets related to this VPC] 를 클릭하면 밑에 자동으로 선택한 VPC안에 있는 서브넷들이 선택됩니다. 저의 경우에는 private subnet 3와 4에 rds 를 구축 할 것입니다. 이를 위해 따로 설정할 것입니다.

private subnet3인 경우 가용영역 a에 위치합니다. ‘Availability zone’에서 가용영역 a를 클릭하고 private subnet3에 대한 ID를 선택합니다. [Add subnet]버튼을 누르면 바로 밑에 추가가 되는 것을 확인하실 수 있습니다. 잘못 설정 하시면 [Remove]버튼을 눌러 지우시면 됩니다.

나머지 private subnet4에 대해서도 마저 설정해 보도록 하겠습니다. 고가용성을 높이기 위해 rds를 두개 설정할 것이기에 다른 가용영영에 위치한 private subnet4를 선택하였습니다. ‘Availability zone’에 private subnet이 위치한 가용영역을 선택하고 그 서브넷의 ID를 선택합니다. 위와 마찬가지고 [Add subnet]버튼을 눌러 아래와 같이 추가된 것을 확인합니다. [Create]버튼을 눌러 RDS subnet group을 생성합니다.

9. 아래 그림과 같이 subnet group이 생성된 것을 확인할 수 있습니다.

10. 이제 RDS 인스턴스를 설치해 보도록 하겠습니다.  [Services] -> [rds] – > [Instances] – [Create Database]

8. Step.1에서 어떤 데이터베이스 엔진을 선택할지 결정합니다. 여기서는 MySQL 을 사용하도록 합니다. 필요하신 엔진을 선택하여 구성하세요.

또한, 이 포스트에서는 고가용성을 위해서 multi-AZ를 선택할 것이기 때문에 free-tier를 선택하지 않습니다. 아래 그림처럼 바로 [Next]버튼을 눌러주세요

9. Step.2로 넘어갑니다. 위에 언급했듯이, multi-AZ로 구성할 것이기에 [Production – MySQL]을 선택해 주세요. [Next]버튼을 누릅니다

10. Step.3에서는 DB instance의 세부사항을 구현합니다. 페이지 양이 많기에 크게 세 부분으로 나누어 보겠습니다. 위의 부분은 License model, engine version, DB instance class를 선택합니다. 저의 경우 버전은 MySQL최신 버전과 class로는 db.t2.micro를 선택하였습니다. 필요하신 대로 선택해 주시면 됩니다.

두번째 부분을 살펴보면 복사본을 다른 AZ에 구성할 것이냐가 묻습니다. 저는 구성할 것이기에 아래와 같이 선택하였습니다. 또한 예상 비용을 알 수 있습니다.

페이지의 마지막 부분을 살펴보겠습니다.  세팅을 할 수 있는데 DB instance identifier, Master username, Master Password부분을 임의대로 기재해 주세요. 모든 것이 마무리 되면 [Next]버튼을 눌러 다음 단계로 이동합니다.

11. ‘Configure Advanced Settings’ 단계에서는 고급 설정 구성 단계로 구성하는 RDS에 대해 심화된 세팅을 설치합니다. 이 단계 역시 페이지지 양이 많이 때문에 부분으로 나누어 살펴보겠습니다.

Network & Security 구성을 합니다. VPC에 설정한 VPC와 위에서 생성한 subnet그룹을 선택합니다. Public accessibility에 ‘yes’를 선택하시면 IP주소가 생성이 되어 외부 VPC와 연결을 가능하게 합니다 (여기서는 ‘No’를 선택하였습니다). 가용 영역에는 고가용성을 위해 멀티 AZ를 이용할 것이기에 no preference를 선택하였고 DB instance에 대한 보안 그룹을 새로 설정할 것이기에 ‘Create new VPC security group’을 선택였습니다.

12. Database Option 파트를 살펴보겠습니다. Database name부분은 위에서 설정한 Master name이 자동으로 할당되어 있으며 Port는 디폴트로 3306으로 설정하였습니다. DB parameter group과 Option group에는 위에서 생성한 parameter/option그룹 이름을 선택합니다. IAM DB authentication은 여기서 사용하지 않으므오 disable을 체크했습니다.

13. 제가 선택한 MySQL엔진은 스토리지 암호화를 지원하지 않으므로 선택권이 없으니 그냥 넘어갑니다. Backup 부분에서는 백업 보유기간을 설정 할 수 있습니다. 이 경우 백업 기간을 1일로 Backup Window는 디폴트인 no preference로 체크했습니다.

14. Monitoring 파트를 살펴보겠습니다. Enhanced monitoring 기능은 DB 인스턴스가 실행되는 운영 체제(OS)에 대한 측정치를 실시간으로 제공합니다. Granularity는 DB 인스턴스 또는 읽기 전용 복제본에 대해 측정치를 수집하는 시점 간의 간격을 초(seconds)단위로 설정합니다. (Monitoring에 대한 자세한 정보는 -> ‘클릭’)

15. MySQL 오류 로그(error log), 느린 쿼리 로그(slow query log),  일반 로그(general log) 를 모니터링할 수 있습니다. MySQL 오류 로그는 기본적으로 생성됩니다. (MySQL 로그에 대한 자세한 정보 -> ‘클릭’). 이 포스트에서는 아무것도 선택하지 않았습니다.

16. Maintenance 부분에서 ‘Enable auto minor version upgrade’를 선택함으로써 자동 업데이트가 제공될 때 이를 수신합니다. Deletion protection 파트에서 예기지 못한 종료에 대비하여 체크표시를 합니다. 모든것이 완료 되었으면 [Create database]버튼을 클릭합니다.

17. 아래 그림과 같이 DB instance가 생성된 것을 볼 수 있습니다. 아래 [View DB instance details]를 클릭합니다.

18. 방금 생성한 DB instance의 디테일한 구성 요소를 한번에 살펴볼 수 있습니다. 여기에서 보안 그룹이 보이실 것입니다. DB instance에 대한 보안 그룹을 수정 하기 위해 아래와 같이 클릭합니다.

19. Source에서 접속 가능한 IP 또는 IP 대역을 설정 할 수 있습니다. 여기서는 지금 웹 서버에 대해서만 응답을 받으려고 합니다.  생성한 웹 서버에 대한 private ip를 기재합니다.  (모든곳에서 응답 받길 원하신다면 Anywhere, 0.0.0.0/0 으로 설정하세요)

여기까지가 RDS DB instance 구축이었습니다.

감사합니다,

SA팀 이현지.