Public Cloud/AWS

AWS 실습 7

서머스 2022. 6. 14. 17:03

EBS Snapshot

- 볼륨 -> 스냅샷 - >세가지 방법

1. 볼륨 생성

2. 이미지 -> ec2 생성

3. 복사(백업)

 

IAM(Identity and Access Management)

- GCP, Azure에도 존재

- Identity <- username, pw

- Access <- 서비스 접근 제어

 

* default 보안그룹은 VPC가 삭제돼야 삭제할 수 있다.

 

RDS(Relational Database Service)

- 완전 관리형 서비스 -> 고가용성(HA), 자동 백업,자동 조정(Scale Up, SSD 용량 증가 등)

 

rds를 검색해서 들어온다

[데이터베이스 생성] 클릭

 

 * 데이터베이스의 복사본을 S3에 보관했다가 [S3에서 복원]을 통해 복구할 수도 있다.

 

Mysql  Community 선택(Aurora는 유료 서비스임)

템플릿 - 프리 티어 선택(과금방지)

 

마스터 사용자 != 루트 사용자

일반사용자 < 마스터 사용자 < 루트 사용자

 

개발(Dev) -> 테스트(QA;품질보증;품보) -> 스테이징(staging) -> 프로덕션(Ops)

 

모니터링 - [Enhanced 모니터링 활성화]

- 모니터링 시간을 5분 -> 1분 이내로 단축할 수 있다(비용 발생)

 

 

웹서버 인스턴스 만들기

[인스턴스 시작]

https://www.alibabacloud.com/ko

 

Alibaba Cloud: 클라우드 컴퓨팅 서비스

세계 최고의 클라우드 컴퓨팅 및 인공 지능 기술 회사는 전 세계적으로 확장 가능하고 안전하며 안정적인 클라우드 컴퓨팅 서비스를 제공합니다.

www.alibabacloud.com

알리바바 클라우드로 접속한다.

 

dns 콘솔에 들어간다

 

Host - blog

Value - webserver의 public IP값

 

blog.cloudywinter.shop 에 접속한다.

 

 

wget https://ko.wordpress.org/wordpress-4.8.2-ko_KR.zip
sudo yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
cd /var/www/html
sudo unzip /home/ec2-user/wordpress-4.8.2-ko_KR.zip
sudo mv ./wordpress/* .
sudo chown -R apache:apache /var/www/*
sudo systemctl restart httpd
sudo systemctl enable httpd

 

다시 홈페이지로 들어가본다

데이터베이스 호스트는 데이터베이스의 엔드포인트를 복붙해오면 된다.

 

 

 

public IP가 없고 private IP밖에 없기 때문에 다이렉트하게 접근할 수 없다

 

 

연결- 추가구성 에서 [퍼블릭 액세스 가능]으로 바꾼다.

 

그리고 moba Xterm에서 Mysql에 접속해본다

만약에 안된다면, public subnet대신 private subnet이 선택되었기 때문이다.

미리 서브넷 그룹을 만들어서, DB에 이 서브넷 그룹을 적용시킨다.

새로운 서브넷그룹을 만들자

 

가용영역을 a,b,c,d 전부 선택한다. 낮은 숫자가 public subnet이다.

이를 선택한다

 

데이터베이스 - database-1 -수정 에 들어간다.

연결에서 서브넷그룹을 방금 만든걸로 바꿔준다.

 

는 중간에 고칠수가 없기 때문에 수정이 불가능하다...

퍼블릭 서브넷을 쓸  필요가 없다????

 

 

AuroraDB

- Mysql의 처리량의 5배,

- 기본 스토리지가 최대 64TiB

 

WEB02 인스턴스 만들기

세부 설정 에서 추가한다.

 

webserver는 web01로 바꿔준다.

 

web02를 moba Xterm에서 접속한다

web02 -> web01의 ip로 접속하면 ping이 간다.

 

SG-WEB에 대한 describe가 의견이 분분함

SG-WEB 내 인스턴스 둘간의 통신을 할 때도 ICMP를 허용하거나 혹은 포트번호가 있어야 한다

web01에서 web02로 ping이 가는 이유는, ICMP가 설정되어 있기 때문이다.

 

 

SG-WEB의 인바운드 규칙을 편집해서 다 지워보고 다시 ping을 해본다.

 

 

ping이 가지 않는다.

 

HTTP 삭제하기 전

 

HTTP 삭제한 후

동시에 HTTP도 삭제하였으므로 curl web01의ip를 하면 나타나지 않는다.

 

[모든 트래픽]으로 하면 모든 사람들이 내 ip만 알아도 접속 가능하다 <- 너무 위험하다

 

만약 이에 대한 소스를 자기 자신 (SG-WEB)으로 설정한다면 어떻게 되는가?

web1->web2 / web2->web1

보안그룹내에 잇는 모든 인스턴스들이 포트를 열 필요 없이 통신이 가능해진다

단, 내부에서 연결된 것이므로 사설IP(Private IP)로 통신할 수 있다.

 

 

 로드밸런서 만들기

EC2- 로드밸런서 들어간다

NLB를 클릭한다.

 

- 외부에서 접속해야 하므로 [인터넷 경계] 에 체크한다.

 

my-vpc로 바꾼 후, 가용영역을 a, c에 지정했으므로 2a, 2c에 체크한다

public, private로 나뉘어져 있는데 public subnet으로 선택해야 한다.

 

 

프로토콜, 포트 {프론트엔드} / 기본 작업 {백엔드}

[대상 그룹 생성]을 클릭한다.

IPv4 주소에 web01과 web02의 사설 IP를 입력한 후 [아래에 보류 중인 것으로 포함]을 클릭

 

아래로 두개가 내려온다.

[대상 그룹 생성] 을 클릭

 

다시 [로드 밸런서] 탭으로 들어가면 대상 그룹이 생겨 있다.

로드 밸런서를 생성한다.

 

둘다 unhealthy가 뜬다.

 

SG-WEB의 인바운드 규칙으로 가서, 아까 삭제했었던 HTTP를 추가한다.

 

 

 

 

ip 주소 확인한 뒤 접속해보면 congratulation이 뜬다

 

그리고 

dns 이름으로 접속하면 wpress가 뜬다

 

이 dns이름을 줄이기 위해 cname을 설정한다

alibaba cloudㄹ ㅗ접속해서 cname을 만들어준다

 

 

ALB 생성하기

 

서브넷을 public으로 

 

보안 그룹을 새로 생성한다

[새 보안 그룹 생성]을 클릭한다.

 

VPC는 디폴트값을 x버튼으로 삭제하고, My-vpc로 설정하도록 한다.

 

만든 후, 다시 로드 밸런서 탭으로 돌아간다.

 

새로고침 하면 SG-ALB가 생성되어 있다.

 

[대상 그룹 생성]을 클릭한다.

 

두개를 선택한 뒤, [아래에 보류 중인 것으로 포함] 클릭

[대상 그룹 생성] 클릭

 

다시 로드 밸런서 탭으로 돌아가서, TG-ALB를 선택한다.

그리고 로드 밸런서를 만든다.

 

dns 이름이 생성된 모습. 다시 알리바바로 가서 CNAME으로 이 링크의 길이를 줄인다.

 

 

wp와 두마리토끼가 번갈아서 뜬다.

 

왜 ALB는 보안그룹이 있는가?

웹서버로 들어갈 수 있는 세 가지 경로가 있는데, 우회하는 저 두 경로(도메인(blog~), IP 주소)를 막아야 한다.

SG-WEB의 소스(출발주소)에 SG-ALB를 추가하여, 우회하여 웹서버에 접속할 수 없도록 한다.

SG-WEB의 인바운드 규칙을 수정한다.

 

HTTP의 소스를 SG-ALB로 수정한다. 삭제 후 다시 생성해야 한다.

SG-ALB를 통해서 들어온 경우에만 허용하도록 하는 것이다.

 

그러면 blog.~ 도메인과 ip로는 접속할 수 없게 된다.

 

WEB01에서 WEB02로 접속하기

 

chmod 400 aws-key.pem

ssh -i aws-key.pem ec2-user@10.29.32.122

하면 들어가진다

 

인바운드 규칙에서 수정해서 이 방법으로 못들어가게 할 수도 있지만, 아웃바운드에서 편집을 통해 못들어가게 할 수도 있다.

 

 

컨텐츠 스위칭 하기(L7)

헤더 안에 어떤내용이 있는지 분석하여 그 내용에 맞게 이동시킬수 있다.

 

대상그룹 메뉴로 간다. - [대상 그룹 생성] 클릭

 

2개의 대상 그룹을 만든다.

 

 

모바일 ->선인장

크롬 -> 토끼

firefox->로드밸런싱(라운드로빈)

둘다 아니면 ->TG-ALB

 

이 되도록 한다.

 

대상 그룹 rabbit에서 WEB01을 draining한다.

같은 방식으로 cactus에서 web02를 draininng한다.(등록취소)

로드밸런서 탭으로 들어간 뒤 - 규칙 보기/편집 을 한다

 

[규칙 삽입] - [HTTP 헤더] 후 사진처럼 설정한다.

Mobile 앞, 뒤에 어떤 문장이 있는데, 우리가 알기 어렵다 -> wild card인 *로 대체한다.

* L4와 달리, L7은 컨텐츠를 분석한다 -> 글을 읽을 수 있기 때문에 리다이렉팅이 가능하다.

 

하지만 모바일로 들어가면 토끼 사진이 뜬다.

 

만약 모바일 크롬으로 들어간다면 어떻게 될까? 이런 혼란 상황을 방지하기 위해 우선순위를 mobile을 최상위로 부여한다.

우선순위를 조정한다.

 

그려면 

각각 크롬에서는 토끼가 <-> 모바일에서는 선인장이 나온다.

 

 

AutoScaling

기존의 로드밸런서와 대상 그룹, WEB01을 삭제한다.

 

이미지 -> 탬플릿으로 -> 오토스케일링

- 기존에 쓰던 인스턴스를 계속 활용할 수는 없다 - 이미지로 만들어서 옮겨 와야 한다

한 대의 서버로 운영하는 것 -> 단일 장애 지점(SPOF; Single Point Of Failure)

 

- 오토스케일링그룹을 만든다

- ALB는 오토스케일링 그룹임과 동시에 타겟 그룹임과 동시에 보안 그룹이다.

- 오토스케일링이 원래 2개인데 CPU 사용량이 임계값인 70%를 넘는다=> 그러면 새로운 인스턴스가 늘어나게 된다.

- 하지만 무한정 늘릴 수는 없다. => DDoS 공격으로 인해 불필요하게 인스턴스가 발생할 수도 있다(왕과금) => 시물레이션이 필욯다.

- Min , Desired Capacity(Capa) : 최소 인스턴스의 개수, Max

- 수평적 확장 => Scale Out

- 필요없는 인스턴스를 지우는 조건 -> 30% 이하일 때는 지워 준다. => Scale In => 이 때 최소 개수 : Min

 

 

준비된 food.tar 파일을 WEB02에 업로드한다.

다시 www.cloudywinter.shop 으로 들어가보면  새로운 홈페이지가 뜬다.

이 사이트(original)를 AMI화 하여 template로 만든다.

 

이미지 - 택배박스

스냅샷 - 내용물

 

재부팅 안함 - 활성화 하고 이미지를 생성한다.

 

스냅샷 메뉴로 들어가 보면, 스냅샷이 자동으로 생성된 것을 볼 수 있다.

 

템플릿을 만들어놔서 필요할 때(Scale Up)마다 빠르게 추가할 수 있도록 한다.

시작 템플릿 메뉴로 들어가서 템플릿을 만든다............

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Public Cloud > AWS' 카테고리의 다른 글

AWS 실습 9 - S3  (0) 2022.06.16
AWS 실습 8  (0) 2022.06.15
AWS 실습하기 6  (0) 2022.06.13
AWS - RDS 개념, 실습  (0) 2022.05.31
AWS - EC2 인스턴스 스토리지(EBS, EFS)  (0) 2022.05.30