1. 관리 목적의 IAM 사용자 생성 후 MFA 설정 -> 그 사용자로 실습 마저 진행
2. VPC를 만들어서 EC2와 RDS 서비스 이용. RDS는 웹서버용 EC2를 통해서만 접속 가능
3. 웹 서버의 AMI 생성 후 이 이미지로 Auto Scaling Groups 생성(ELB로 로드 분산)
1. IAM 사용자 생성(관리자) 후 MFA 설정
서비스 >> IAM >> 사용자 >> 사용자 추가
콘솔로 액세스할 수 있도록 해주고, 사용자 지정 비번을 정해주자
비밀번호 재설정 필요는 루트가 사람들에게 사용자를 만들어 나눠줄 때 직접 사용하는 사용자들이 자신들의 비밀번호로 바꿔 쓸 수 있도록 하는 서비스다. 지금은 안해도 된다
기존 정책 직접 연결 >> AdministratorAccess 를 선택해준다
Administrator의 JSON을 보면
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
이렇게 되어있는데, 그냥 모든 권한을 준다는 소리다
그러고 쭉쭉 넘어가서 사용자 생성을 완료해주면 된다
사용자 생성 완료 후, admin을 눌러주자
보안 자격 증명 탭에서 할당된 MFA 디바이스 -> 관리 >> 계속(가상 MFA 디바이스)을 눌러준다
그럼 이런 탭이 뜨는데, 핸드폰으로 Google OTP 앱을 깔아야 한다
앱을 실행하면 QR코드를 스캔할 수 있는데, 저 QR코드를 스캔하면 6자리 숫자가 뜰 것이다
시간이 지나면 바뀌는데, 연속된 두번의 6자리 숫자를 MFA 코드 칸에 써주고 MFA 할당을 눌러주면 끝난다
2. 방금 만든 사용자로 로그인
IAM 서비스에서 왼쪽 아래를 보면 AWS 계정 ID가 있다. 그 숫자를 복사해주자
로그아웃을 한 뒤 다시 로그인 창으로 들어와서, IAM 사용자를 선택한 뒤 방금 복사한 번호를 넣어준다
그리고 만들어둔 사용자 id와 비번으로 로그인을 하면
MFA 코드를 또 쳐야한다. 아까 앱으로 다시 들어가보면 또 새로운 6자리 숫자가 있으니 그걸 쳐주고 로그인하면
admin 사용자로 로그인했다!!
3. 웹서버용 EC2와 RDS 사용 위한 VPC 구축
귀찮으니 그냥 기본 VPC를 만들어서 사용해보겠다
서비스 >> VPC >> VPC >> 작업 >> 기본 VPC 생성
이름도 대충 정해주자. 이제 기본 VPC와 서브넷 등등이 만들어졌다
기본 VPC로 작업하지 않는 경우 작업 >> DNS 호스트 이름 편집을 눌러 활성화가 되어있는지 확인하자
서브넷을 들어와보면 가용영역별로 서브넷이 하나씩 만들어져있는데, RDS용 프라이빗 서브넷 하나만 만들고 나머지 2개는 퍼블릭으로 만들어주겠다
프라이빗 서브넷에서만 작업 >> 자동 할당 IP 설정 수정에 들어가서 비활성화를 해준다
(기본 VPC로 작업하지 않는 경우 퍼블릭 서브넷들은 자동 할당 IP 설정 활성화로 해줘야 한다)
이제 라우팅 테이블을 건드려보자
서비스 >> 라우팅 테이블을 들어와보면 하나가 기본적으로 만들어져있다
인터넷 게이트웨이와도 자동으로 연결되어 있으나 서브넷 연결이 되어있지 않다
라우팅 테이블 선택 후 서브넷 연결 >> 서브넷 연결 편집을 눌러 퍼블릭 서브넷 2개만 넣어주자
마지막으로 보안그룹을 만들어주자
서비스 >> VPC >> 보안 그룹 >> 보안 그룹 생성
어차피 실습이니까 필요한 것들만 넣어 대충 만들것이다
웹서버용 보안그룹은 모두 허용, DB용 보안그룹은 웹서버 보안그룹에서 오는 트래픽만 허용하도록 할 것이다
소스는 WebServerSG이다
이제 웹서버와 디비를 사용할 준비가 끝났다
4. RDS 생성
서비스 >> RDS >> 데이터베이스 >> 데이터베이스 생성
엔진 옵션 - MySQL 선택
버전은 원하는 버전 쓰면 된다
템플릿 - 프리 티어
마스터 이름과 비번을 설정한다
이러고 생성을 완료한 후, 생성이 아예 완료될 때 까지 조금만 기다리자
생성이 완료되면, 그 데이터베이스의 이름을 누르고 수정을 눌러보자
연결 탭에서 보안그룹을 DB용 보안그룹으로 바꾸고, 퍼블릭 액세스 가능으로 바꿔준 다음에 즉시 수정완료해준다
5. EC2 생성
서비스 >> EC2 >> 인스턴스 시작
1단계 - Amazon Linux 2 AMI 선택
3단계 - VPC와 서브넷 선택(퍼블릭 서브넷 중 1)
그리고 쭉 내려서 고급 세부 정보의 사용자 데이터에 다음 내용을 적자
#!/bin/bash
# Install Apache Web Server and PHP
yum install -y httpd mysql
amazon-linux-extras install -y php7.2
# Turn on web server
chkconfig httpd on
service httpd start
Apache, PHP, MySQL을 자동으로 받아놓고 시작할 수 있다
6단계 - 기존 보안 그룹 선택 >> 웹서버용 보안그룹 선택 후 마무리
새 키 페어를 만들고 저장한 후 인스턴스를 시작하자(이미 갖고있는 키 페어가 있다면 그걸 사용해도 가능)
6. EC2 접속 후 RDS에 접속해 데이터베이스 생성
EC2에 접속하는건 아래 글을 보자
2020/07/24 - [공부/AWS] - [AWS] EC2 CLI로 접속하기(cmd, PuTTy)
RDS에 접속하기 전, RDS의 엔드포인트를 알아놔야 한다
서비스 >> RDS >> 데이터베이스 >> database-1(아까 만든 데이터베이스)를 누르면 엔드포인트가 있다. 이를 복사해서 메모장같은데에 넣어두자
그 다음 EC2로 돌아와서 다음을 입력해주자
mysql -u <마스터이름> --host <엔드포인트> -P 3306 -p
RDS에 접속이 됐다
이제 우리가 원하는 awstest라는 디비를 만들어줄것이다
CREATE DATABASE awstest;
USE awstest;
CREATE TABLE subject(
id int(11) NOT NULL AUTO_INCREMENT,
title varchar(45) NOT NULL,
description text,
created datetime NOT NULL,
PRIMARY KEY(id)
) ENGINE = InnoDB;
SHOW TABLES;
DESC subject;
CREATE TABLE author(
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
profile VARCHAR(200) NULL,
PRIMARY KEY(id)
);
INSERT INTO author(name, profile) VALUES ('Kim', 'Network Instructor');
INSERT INTO author(name, profile) VALUES ('Lee', 'Server Instructor');
INSERT INTO author(name, profile) VALUES ('Park', 'Security Instructor');
ALTER TABLE subject ADD COLUMN author_id INT(11);
디비와 테이블 2개가 생성되었다
7. 웹서버로 RDS 제어
웹 서버를 만들어야 한다. 다음 파일들을 파일질라 등의 ftp 서비스를 사용해 /var/www/html/ 폴더로 옮겨놓자
옮기기 전에, php파일들의 윗부분은 본인 RDS의 엔드포인트, 마스터이름, 비밀번호 로 바꿔줘야 한다
파일질라로 사용하려면
이렇게 하면 된다
호스트에는 EC2의 퍼블릭 DNS(IPv4)를 넣고, 사용자는 ec2-user로 하며, 키 파일엔 .ppk파일을 넣어준다(PuTTygen으로 만든거)
우리는 ec2-user니까 /home/ec2-user/ 폴더에만 권한이 있다. 따라서 일단 여기로 파일을 다 옮겨주자
모든 파일이 다 옮겨졌다
이제 EC2에서 /var/www/html/폴더로 옮겨주자
MySQL에서 exit로 나온다음, 다음 명령을 실행해준다
sudo -i
cd /home/ec2-user/
mv *.php /var/www/html/
ls로 확인해보면
잘 옮겨져있다
이제 EC2의 퍼블릭 DNS를 웹 브라우저에 띄워 보면
AWSTEST 페이지가 잘 띄워진다
author을 눌러보면
내 author 테이블의 내용들이 잘 들어와있다
한번 Kim이란 데이터를 지워보겠다(delete)
rds에서도 Kim이 지워진걸 볼 수 있다
이번엔 Lee 데이터를 업데이트 해보겠다
업데이트도 잘 된다
이번엔 subject 테이블에 데이터를 새로 추가해보겠다
AWSTEST를 누른 후 create를 눌러보자
대충 써놓고 submit을 눌렀더니
이렇게 바뀌었다
이제 웹서버와 RDS 연동하는건 잘 확인되므로 다음으로 넘어가자
8. ALB로 로드 분산하는 Auto Scaling Groups 만들기
이는 사실 저번 글인
2020/08/02 - [공부/AWS] - [AWS] AWS 리소스 배포 자동화와 로드 분산을 통한 자동 확장 환경 구성
이와 매우 유사하므로 저걸 본 사람은 더 안봐도 된다
일단 AMI를 생성해보자
서비스 >> EC2 >> 작업 >> 이미지 >> 이미지 생성
이름과 설명은 대충 써주자
서비스 >> EC2 >> AMI 로 들어와보면
AMI가 새로 만들어지고 있다
그 다음으로 ALB를 만들어주자
서비스 >> EC2 >> 로드밸런서 >> Load Balancer 생성 >> Application Load Balncer 선택
이름과 가용 영역(Public 서브넷 있는곳 2개) 설정
전부 열려있는 웹서버용 보안그룹 선택
새 대상 그룹을 생성하고, 상태 검사도 대충 설정해준 후 생성을 완료해준다
이제 Launcg Configuration을 생성해보자
서비스 >> EC2 >> 시작 구성 >> 시작 구성 생성
키 페어까지 선택한 후 생성을 완료하자
완료되었으면 방금 만든 시작 구성을 선택한 후, 작업 >> Auto Scaling 그룹 생성 을 누르자
항상 2개의 인스턴스만 가동하겠다는 의미다
새로 만들어질 인스턴스의 Name 태그를 설정해주고 생성을 완료하자
그 후 인스턴스 탭으로 돌아와보면
각 가용 영역에 하나씩 인스턴스가 만들어지고 있다
이제 둘 중 하나를 종료해보겠다
저 인스턴스가 완전히 종료되고 나면, 아마 새 인스턴스가 해당 가용 영역에서 새로 만들어질것이다
만들어졌다
끝
'공부 > AWS' 카테고리의 다른 글
[AWS] AWS의 무료 IDE인 Cloud9 사용해보기 (1) | 2020.12.04 |
---|---|
[AWS] AWS S3 스토리지 클래스 update ver. (0) | 2020.12.03 |
[AWS] AWS 리소스 배포 자동화와 로드 분산을 통한 자동 확장 환경 구성 (0) | 2020.08.02 |
[AWS] S3 CLI로 관리하기(+IAM 정책 생성/연결) (0) | 2020.08.01 |
[AWS] S3 버킷 CLI 명령어(버전 관리, 동기화, 복구) (0) | 2020.07.31 |
댓글