실습목표 | |
Amazon RDS를 사용하여 데이터베이스 시작 | |
Amazon EC2를 사용하여 애플리케이션 서버 시작 | |
EC2 인스턴스에 애플리케이션 자동설치 |
보안구성
- 아키택처의 각 계층, 즉 애플리케이션, 서버, 네트워크를 비롯해 인터넷에 연결할 때도 보안을 구현해야한다.
1. ec2 클릭후 왼쪽 상단에 New EC2 Experience가 되어있는지 확인한다.
2. 왼쪽 탭에 보안그룹을 선택 후 새 보안그룹 생성을 클릭한다.
3. 기본 세부 정보에 정보를 넣는다.
이번에는 그룹이름 : APP-SG
설명 : Allow Http Access
VPC : LAB VPC
4. 인바운드 규칙을 설정해준다. Http, Anywhere-IPv4
5. 보안그룹 선택을 누른다.
- 이후 실습에서 앱서버를 시작할 때 이 보안 그룹을 사용할 예정이다.
데이터베이스 보안 그룹을 구성하고 앱 서버에서 수신되는 데이터베이스 연결을 허용하도록하는 작업
6. 왼쪽 탭에 보안그룹 선택 후 보안그룹생성을 클릭한다.
7. 기본 세부 정보에 정보를 넣는다.
이번에는 그룹이름 : DB-SG
설명 : Allow DB Access
VPC : LAB VPC
8. 인바운드 규칙을 설정한다. 유형 : MY SQL 소스는 돋보기 버튼을 누른 후 Http에서 만든 보안그룹인 APP_SG를 선택한다.
-한 보안그룹이 다른 보안 그룹을 참조하는 기능이며 강력한 보안을 가지고 있다. 따라서 추가 EC2 I를 애플리케이션 보안 그룹과 연결하여 데이터베이스에 엑세스할 수 있는 권한을 부여해준다. 쉽게 말하면 통신이 가능하다는 것이다.
Amazon RDS 데이터베이스 생성
- VPC에서 MySQL 데이터베이스를 생성한다.
1. 서비스에서 RDS를 클릭 후 데이터베이스 생성을 클릭한다.
2. 데이터베이스 생성 방식 선택에서 표준생성을 클릭하고 엔진유형은 MY SQL을 선택한다. 템플릿은 개발/테스트를 선택한다.
- 자격증명, 인스턴스 크기, 스토리지 유형 및 양과 같은 데이터베이스 설정 구성을 할 수 있다.
3. Setting에서 세부사항을 적어준다.
이번에는 DBinstance identifier : Allow DB access
Master username : dbadmin
password : lab-password
4. DB사이즈를 선택해준다. Bustable classes (includes t classes) - db.t2.micro를 선택해준다.
5. Connectivity에서 vpc 선택 하고 Security 그룹을 선택해준다.
vpc - Lab VPC
security group : DB-SG
6. Additional configuration(추가구성)을 확장 후 작성해준다
initial database name(초기 데이터베이스 이름) :inventory
Enable Enhanced monitoring(Enhanced 모니터링활성화) : 선택 취소
7. 생성을 누른다.
Amazon EC2를 사용하여 애플리케이션 서버 시작
EC2 I를 시작하여 애플리케이션을 실행할 준비가 다 되었고 시작할 때 애플리케이션을 자동으로 설치하는 구성 스크립트가 제공된다. 이전에 DB보안그룹과 HTTP보안그룹을 연결했으니 인터넷에서 액세스가 허용될 것이다.
1. EC2 클릭 후 Launch instance 섹션으로 이동 후 주황색 버튼을 클릭한다.
1단계 : AMI 선택
2. Amazon Linux 2 AMI에서 Select를 클릭한다.
2단계 : 인스턴스 유형 선택
-이제 인스턴스 유형을 선택할 수 있으며 각 인스턴스 유형은 가상 CPU, 메모리, 디스크 스토리지, 네트워크 성능 조합을 할당한다.
3. t2.micro를 선택 후 next를 누른다.
3단계 : 인스턴스 구성
인스턴스 수와 네트워크 구성같은 인스턴스 세부 정보를 구성하는 단계이다.
4. network : Lab VPC
subnet : Public Subnet 1
IAM role : inventory-App-Role
IAM Role에 다음 정책을 연결되어 인스턴스에서 실행중인 애플리케이션이 AWS서비스로 요청할 권한을 부여한다.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "ssm:*",
"Resource": "arn:aws:ssm:*:*:parameter/inventory-app/*",
"Effect": "Allow"
}
]
}
이 역할은 AWS Systems Manger Parameter Store 내에 있는 inventory-App설정에 액세스할 권한을 부여한다. 구성 설정을 저장할 때 사용된다.
5. Advenced Details섹션확장 후 userdata필드를 본다.
- 인스턴스 시작 시 UserData를 통해 구성 스크립트를 전달 할 수 있다. 다음 스크립트를 통해 구성작업을 수행하고 소프트 웨어를 설치할 수 있다.
6. User data에 아래 스크립트를 복사하여 붙여넣고 Next : add storage를 클릭한다
#!/bin/bash
# Install Apache Web Server and PHP
yum install -y httpd mysql
amazon-linux-extras install -y php7.2
# Download Lab files
wget https://us-west-2-tcprod.s3.amazonaws.com/courses/ILT-TF-200-ARCHIT/v6.8.27/lab-2-webapp/scripts/inventory-app.zip
unzip inventory-app.zip -d /var/www/html/
# Download and install the AWS SDK for PHP
wget https://github.com/aws/aws-sdk-php/releases/download/3.62.3/aws.zip
unzip aws -d /var/www/html
# Turn on web server
chkconfig httpd on
service httpd start
- Aphache 웹서버와 PHP언어 설치
- Inventory 애플리케이션 및 AWS 소프트웨어 개발키트(SDK) 다운로드
- 웹서버를 활성화하여 부팅 시 자동으로 시작되도록 구성
이러한 작업으로 인해 로그인하여 수동으로 소프트웨어를 구성할 필요없이 새 인스턴스를 구성할 수 있다.
4단계 : 스토리지 추가
- EBS 디스크 볼륨을 추가하고 크기와 성능을 구성할 수 있다.
이번과정에서는 기본 디스크 크기를 사용하기때문에 바로 태그추가로 넘어간다.
5단계 : 태그 추가
- 태그를 사용하여 목적, 소유자 및 환경 등 다양한 방식으로 AWS 리소스를 분류할 수 있다. 특히 동일한 유형의 리소스가 여러개일 때 유용하며 특정 리소스를 태그를 통해 쉽게 찾을 수 있다. 각 태그는 키, 값으로 구성되어있다.
7. Add Tag를 클릭후 내용을 넣은 다음 Configure Security Group을 클릭한다.
key : Name
Value : App Server
6단계 보안 그룹 구성
- App-SG인스턴스를 연결하는 작업이다.
8. Assign a security Group에서 existing security group을 클릭한다음 App-SG를 선택한다.
- 인바운드 규칙이 표시되고 인터넷 상의 모든 곳(0.0.0.0/0)에서 오는 HTTP 트래픽이 허용됨을 확인한다.
9. Review and Launch를 클릭한다.
7단계 검토
10. launch를 클릭 후 proceed without keypair을 선택한다. 그 후 l acknowledge that..을 선택한다 launch instances를 클릭한다.
애플리케이션 테스트
- 애플리케이션이 작동하는지 확인하는 단계이다. EC2 인스턴스의 IP주소를 통해 웹 애플리케이션에 액세스 할 수 있다.
11. EC2 Management Console에서 AppServer를 클릭한다.
12 Details 탭에서 ipv4 public ip를 클립보드에 복사한다.
13. 복사한 ip를 url에 넣고 결과를 확인한다.
- 아직 애플리케이션이 DB에 연결되지 않았기 때문에 표시되는 정보는 거의 없는 상태이다.
14. AWS Mangement Console로 돌아가 RDS를 선택한 후 왼쪽 탐색창 Database를 클릭한다.
15. inventory-db식별자를 클릭한다.
16. Connectivity & security 섹션으로 스크롤 한 다음 Endpoint를 클립보드에 복사한다.
17. 다시 웹 브라우저를 선택하고 Setting을 클릭하고 다음을 구성한 후 Save를 누른다.
endpoint : 클립보드 복사한 것 붙여넣기
DataBase : inventory
UserName : dbabin
Password : lab-password
- 이 애플리케이션을 사용하면 매장 재고에서 품목을 추가, 편집 또는 삭제할 수 있다.
- 재고정보는 앞에서 생성한 Amazon RDS MYSQL Database에 저장된다. 따라서 서버에 장애가 발생하더라도 데이터가 손실되지 않는 것을 의미하며 여러 애플리케이션 서버에서 동일한 데이터에 액세스 할 수 있다.
'AWS 실습' 카테고리의 다른 글
6. AWS 관리형 서비스로 Serverless 아키텍처 구현 (0) | 2021.12.17 |
---|---|
5. AWS CloudFormation을 사용한 인프라 배포 자동화 (0) | 2021.12.16 |
4. 고가용성 환경 생성 (0) | 2021.12.16 |
3. 가상 사설 클라우드 생성(VPC), Peering Connection (0) | 2021.12.15 |
1. AmazonS3 버킷 생성 (0) | 2021.12.14 |