[요약]

  1. AWS 글로벌 인프라 - 리전 & 가용영역
  2. 컴퓨팅 서비스(EC2) 배포 및 모니터링(CloudWatch) 및 알람 관리

📌 AWS 글로벌 인프라

AWS는 전 세계적으로 분포한 데이터센터에서 다양한 서비스를 제공하고 있는 클라우드 플랫폼입니다. 현재 AWS는 25개의 리전80개의 가용영역, 230개 이상의 POP를 운영하고 있습니다. 각각의 리전은 이중화된 100G 케이블(해저 광케이블)로 연결되어 있으며, 암호화되어 전달되고 있습니다.

대륙별, 국가별로 데이터센터를 두는 이유는?

(1) 운영 주체 구분 / (2) 거리에 따른 지연 / (3) 법적 규제 밑 데이터 거버넌스 / (4) 리전 내에서 사용 가능한 서비스 / (5) 비용 - 리전별로 다름

📌 AWS 리전 & 가용영역 & 엣지

  • 리전(Region)

    Region은 해당 지리적인 영역 내에서 격리되고 물리적으로 분리된 여러 개의 가용 영역(AZ)의 모음을 말합니다. 리전은 최소 2개의 가용 영역으로 구성되고 최대 6개의 가용영역으로 구성된 리전도 있습니다.

  • 가용 영역(Availability Zone)

    AZ는 한 개 이상의 데이터 센터들의 모음을 말합니다. 각 센터는 광통신 전용망으로 연결되어 있습니다. 가용 영역과 외부(인터넷) 연결을 위한 이중화된 트랜짓 센터가 있습니다. 트랜짓 센터는 AWS 글로벌 백본 네트워크에 연결이 되고, 엣지 POP을 통해서 CDN 등 서비스를 합니다.

💡 AWS 사용자는 서비스 구성 시 여러 가용 영역에 분산하여 처리할 수 있도록 구성을 권장합니다 :)

  • 엣지(Edge)

    엣지는 고객에게 더 짧은 지연시간의 컨텐츠를 제공하기 위해서 외부 인터넷과 AWS 글로벌 네트워크망을 연결하는 별도의 센터입니다. 엣지는 엣지 로케이션과 리전별 엣지 캐시로 구성되며, CloudFront와 같은 CDN 서비스의 데이터 캐시 기능을 제공합니다.

📌 EC2 소개

Amazon Elastic Compute Cloud(EC2)는 AWS 클라우드에서 확장 가능 컴퓨팅 용량을 제공합니다. EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. EC2를 통해 원하는 만큼 가상서버(= 인스턴스 instance)를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능합니다. 또한 EC2는 요구사항이나 갑작스러운 인기 증대 등 변동 사항에 따라 신속하게 규모를 확장하거나 축소할 수 있어서 서버 트래픽 예측 필요성이 줄어듭니다.

🔍EC2 제공 기능

  • AMI(Amazon 머신 이미지) : 서버에 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 상태로 제공되는 템플릿
  • 인스턴스 유형(Types) : 인스턴스를 위한 CPU, 메모리, 스토리지, 네트워킹 용량의 여러 가지 구성 제공 (= 하드웨어 스펙)
  • 키 페어를 사용하여 인스턴스 로그인 정보 보호
  • 인스턴스 스토어 볼륨 : 임시 데이터를 저장하는 스토리지 볼륨으로 인스턴스 중단, 최대 절전 모드로 전환 또는 종료 시 삭제됨
  • EBS(Elastic Block Store) : 영구 스토리지 볼륨으로 데이터를 저장
  • 보안그룹 : 인스턴스에 연결할 수 있는 프로토콜, 포트, 소스 IP 범위를 지정하는 방화벽 기능

📌[데모 실습] 인스턴스 배포

💡 AWS EC2 인스턴스를 배포 후 해당 인스턴스에 SSH Client로 접속을 하고, 기본 동작들을 확인합니다.

✅ 신규 VPC 생성

  • 단일 퍼블릭 서브넷이 있는 VPC
IPv4 CIDR 블록 : 10.20.0.0/16
VPC 이름 : SecondVPC
퍼블릭 서브넷의 IPv4 CIDR : 10.20.1.0/24
가용 영역 : ap-northeast-2a
서브넷 이름 : SecondVPC-Subnet1

✅ EC2 생성

  1. Amazon Machine Image(AMI) 선택 → 'Amazon Linux 2 AMI : 64bit(x86)' 선택
  2. 인스턴스 유형 선택 → 't2.micro vCPU(1) MEM(1GiB)' 선택
  3. 인스턴스 세부 정보 구성
    • 네트워크 : SecondVPC
    • 서브넷 : 'SecondVPC' 선택 시 자동으로 1개 있는 서브넷 선택됨
    • 퍼블릭 IP 자동할당 : 활성화
    • 고급 세부 정부 - 사용자 데이터 : 텍스트로
      • 인스턴스 시작 시 명령 실행
        • host의 이름을 AFOS2-WebSrv 로 바꾸겠다
        • httpd 다운
        • 시스템이 재시작됬을 때에도 항상 httpd를 실행하도록
        • index.html 파일 만들기
#!/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
  1. 스토리지

    • 기본값 그대로
  2. 태그

    • Key : Name
    • Value : WebSrv
  3. 보안 그룹 설정

    • 보안 그룹 이름 : SecondVPC-NewSG

    • 설명 : SecondVPC-NewSG

    • 유형

      • SSH - TCP 22 - 위치무관 - 0.0.0.0/0, ::/0

      • HTTP - TCP 80 - 위치무관 - 0.0.0.0/0, ::/0

        • 외부에서도 접근 가능해야하니 위치무관으로 해야함
        • (check) 해당 프라이빗 키 파일에 액세스할 수 있으며 이 파일이 없으면 내 인스턴스에 로그인할 수 없음을 확인합니다.

  1. 키페어 선택

    • 기존 키페어 선택

✅ 자신의 PC에서 SSH로 인스턴스의 퍼블릭 IP로 접속하기 - Xshell

  1. Key 등록하기

    도구 - 사용자 키관리자 - 가져오기

    인스턴스를 생성할 때 사용한 Key 파일(.pem)을 가져옵니다.

  2. 세션 생성하기

    파일 - 새로 만들기

    [연결]

    ​ 이름 : Week2_EC2

    ​ 호스트 : 인스턴스의 퍼블릭IPv4 주소 넣기

    [사용자 인증]

    ​ 사용자 이름 : ec2-user (AWS Linux 인 경우 무조건!)

    ​ 방법 : public Key(check)

    ​ 설정 - 찾아보기 - 아까넣은 사용자키 선택

✅ EC2 서버 모니터링

[AWS 콘솔에서 모니터링]

EC2 대시보드 - WebSrv 인스턴스 - 모니터링

[SSH Client에서 모니터링]

리눅스 명령어를 사용하여 모니터링하기

# 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 CPUUtilization 경보(Alarm) 생성

EC2 1분 간격 모니터링 설정 : EC2 → 모니터링 및 문제 해결 → 세부 모니터링 관리 활성화

CloudWatch 서비스 → 경보 → 경보 상태 → 경보 생성

  1. 지표 및 조건 지정 → 지표 선택 후 EC2 → 인스턴스별 지표 CPUUtilization 검색 필터링(엔터) 후 인스턴스 ID 확인

  2. 지표 선택

    • EC2 선택

    • 인스턴스별 지표 선택

    • CPUUtilization 검색

  1. 기간 - 1분으로 변경
    • 5분이 기본값이고 무료, 그 이하로 바꾸게 되면 요금 발생 주의
    • 조건 - 임계값 50 으로 변경
    • 누락된 데이터 처리 - 양호로 바꿉니다.

  1. 알림 설정
    • 경보 상태
    • 새 주제 생성
    • 주제 이름 짓기 - EC2_CPU_HIigth_Alarms_Topic
    • 알림받을 이메일 - 내 이메일 주소 입력
    • 주제 생성 클릭
      • 해당 메일에 confirm 메일이 하나 날아오게 됨 - confirm 해줘야합니다.


5. EC2 작업

  • 부하가 감지되면 재부팅되게 설정

  1. 이름 및 설명 추가
    • 경보 이름 : WebSrv-CPU-High-Alarm

✅ CPU 부하 주기

🔍 CPU 부하 툴 설치

sudo amazon-linux-extras install -y epel
sudo yum install -y stress-ng
stress-ng -h
  • CPU 부하 발생 (70% 까지 부하 발생)
sudo stress-ng --cpu 1 --cpu-load 70% --timeout 10m --metrics --times --verify
  • CPU 부하 발생 전

  • CPU 부하 발생 후

0개의 댓글