[요약]
- AWS 글로벌 인프라 - 리전 & 가용영역
- 컴퓨팅 서비스(EC2) 배포 및 모니터링(CloudWatch) 및 알람 관리
AWS는 전 세계적으로 분포한 데이터센터에서 다양한 서비스를 제공하고 있는 클라우드 플랫폼입니다. 현재 AWS는 25개의 리전과 80개의 가용영역, 230개 이상의 POP를 운영하고 있습니다. 각각의 리전은 이중화된 100G 케이블(해저 광케이블)로 연결되어 있으며, 암호화되어 전달되고 있습니다.
대륙별, 국가별로 데이터센터를 두는 이유는?
(1) 운영 주체 구분 / (2) 거리에 따른 지연 / (3) 법적 규제 밑 데이터 거버넌스 / (4) 리전 내에서 사용 가능한 서비스 / (5) 비용 - 리전별로 다름
Region은 해당 지리적인 영역 내에서 격리되고 물리적으로 분리된 여러 개의 가용 영역(AZ)의 모음을 말합니다. 리전은 최소 2개의 가용 영역으로 구성되고 최대 6개의 가용영역으로 구성된 리전도 있습니다.
AZ는 한 개 이상의 데이터 센터들의 모음을 말합니다. 각 센터는 광통신 전용망으로 연결되어 있습니다. 가용 영역과 외부(인터넷) 연결을 위한 이중화된 트랜짓 센터가 있습니다. 트랜짓 센터는 AWS 글로벌 백본 네트워크에 연결이 되고, 엣지 POP을 통해서 CDN 등 서비스를 합니다.
💡 AWS 사용자는 서비스 구성 시 여러 가용 영역에 분산하여 처리할 수 있도록 구성을 권장합니다 :)
엣지는 고객에게 더 짧은 지연시간의 컨텐츠를 제공하기 위해서 외부 인터넷과 AWS 글로벌 네트워크망을 연결하는 별도의 센터입니다. 엣지는 엣지 로케이션과 리전별 엣지 캐시로 구성되며, CloudFront와 같은 CDN 서비스의 데이터 캐시 기능을 제공합니다.
Amazon Elastic Compute Cloud(EC2)는 AWS 클라우드에서 확장 가능 컴퓨팅 용량을 제공합니다. EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. EC2를 통해 원하는 만큼 가상서버(= 인스턴스 instance)를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능합니다. 또한 EC2는 요구사항이나 갑작스러운 인기 증대 등 변동 사항에 따라 신속하게 규모를 확장하거나 축소할 수 있어서 서버 트래픽 예측 필요성이 줄어듭니다.
💡 AWS EC2 인스턴스를 배포 후 해당 인스턴스에 SSH Client로 접속을 하고, 기본 동작들을 확인합니다.
IPv4 CIDR 블록 : 10.20.0.0/16
VPC 이름 : SecondVPC
퍼블릭 서브넷의 IPv4 CIDR : 10.20.1.0/24
가용 영역 : ap-northeast-2a
서브넷 이름 : SecondVPC-Subnet1
#!/bin/bash
hostnamectl --static set-hostname AFOS2-WebSrv
yum install httpd -y
systemctl start httpd && systemctl enable httpd
echo "<h1>2번째 실습 ZandiLover</h1>" > /var/www/html/index.html
스토리지
태그
보안 그룹 설정
보안 그룹 이름 : SecondVPC-NewSG
설명 : SecondVPC-NewSG
유형
SSH - TCP 22 - 위치무관 - 0.0.0.0/0, ::/0
HTTP - TCP 80 - 위치무관 - 0.0.0.0/0, ::/0
키페어 선택
Key 등록하기
도구 - 사용자 키관리자 - 가져오기
인스턴스를 생성할 때 사용한 Key 파일(.pem)을 가져옵니다.
세션 생성하기
파일 - 새로 만들기
[연결]
이름 : Week2_EC2
호스트 : 인스턴스의 퍼블릭IPv4 주소 넣기
[사용자 인증]
사용자 이름 : ec2-user (AWS Linux 인 경우 무조건!)
방법 : public Key(check)
설정 - 찾아보기 - 아까넣은 사용자키 선택
EC2 대시보드 - WebSrv 인스턴스 - 모니터링
리눅스 명령어를 사용하여 모니터링하기
# CPU 확인
cat /proc/cpuinfo
[root@ip-172-31-43-250 ~]# cat /proc/cpuinfo |egrep '(processor|name)'
processor : 0
model name : Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
# 메모리 확인 1GiB
[root@ip-172-31-43-250 ~]# cat /proc/meminfo |grep MemTotal
MemTotal: 1006900 kB
# 다양한 시스템 관련 부하 확인 툴 설치
# sudo 는 슈퍼유저의 권한으로 실행
[ec2-user@ip-172-31-46-223 ~]$ sudo yum -y install htop
# htop 으로 CPU Memory 등 시스템 자원 확인
[ec2-user@ip-172-31-46-223 ~]$ htop
# 프라이빗 IP 정보 확인
[ec2-user@ip-172-31-46-223 ~]$ ip -br -c addr show
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 172.31.46.223/20 fe80::880:baff:fe0f:2598/64
[ec2-user@ip-172-31-46-223 ~]$ ip a
# 퍼블릭 IP 정보 확인
[ec2-user@ip-172-31-46-223 ~]$ curl ipinfo.io
# 스토리지 확인 : 부트볼륨(EBS) 정보 확인
[ec2-user@ip-172-31-46-223 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
[ec2-user@ip-172-31-46-223 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 482M 0 482M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 460K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 1.4G 6.7G 18% /
tmpfs 99M 0 99M 0% /run/user/0
tmpfs 99M 0 99M 0% /run/user/1000
# 서비스 제공 확인(포트 Listen) : SSH(서버 서비스 중, TCP 22 포트 사용) , HTTP(서버 서비스 중, TCP 80 포트 사용)
# 예시) ss -t(TCP) -l(Listen) -n(숫자로 출력)
[ec2-user@ip-172-31-46-223 ~]$ ss -tl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 128 *:http *:*
...
[ec2-user@ip-172-31-46-223 ~]$ ss -tln
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 *:80 *:*
...
EC2 1분 간격 모니터링 설정 : EC2 → 모니터링 및 문제 해결 → 세부 모니터링 관리 활성화
CloudWatch 서비스 → 경보 → 경보 상태 → 경보 생성
지표 및 조건 지정 → 지표 선택
후 EC2 → 인스턴스별 지표 CPUUtilization
검색 필터링(엔터) 후 인스턴스 ID 확인
지표 선택
EC2 선택
인스턴스별 지표 선택
CPUUtilization
검색
5. EC2 작업
🔍 CPU 부하 툴 설치
sudo amazon-linux-extras install -y epel
sudo yum install -y stress-ng
stress-ng -h
sudo stress-ng --cpu 1 --cpu-load 70% --timeout 10m --metrics --times --verify
CPU 부하 발생 전
CPU 부하 발생 후