[ 배운 내용 ]
Chapter 1. 가상화 및 클라우드 개요
Chapter 2. AWS 기본 서비스 (EC2, VPC, EBS, S3)
Chapter 3. AWS 고가용성 구현 (Region, AZ, ELB, ASG)
대표적인 CSP(Cloud Service Provider)인 AWS의 여러 서비스와 사용법을 배우며 실습도 해 보았다.
실습 내용은 강의록을 참고하고 주요 서비스에 대해서만 정리하자
Chapter 1. 가상화 및 클라우드 개요
기존 IT 인프라 환경에서는 물리적인 H/W장비들을 연결해서 서버로 운영을 했다. 큰 규모의 서버실이 필요하고 여러 선이 연결되어 복잡했기 때문에 정리도 어려웠다.
대부분의 비용이 현상유지에 나가기 때문에 서비스 개선과 경쟁력 강화를 위한 투자가 어려운 구조였다고 한다.
이러한 문제는 가상화 기술을 통해 해결되었다.
모든 IT자산을 가상화 하고, 가상화 플랫폼을 이용한 동적이고 유연한 업무 인프라를 구축하여 데이터센터의 모든 리소스를 가상화 하여 운영할 수 있게 되었다.
ex) 2-Tier, 3-Tier와 같은 운영 방식
서버, 네트워크, 스토리지, 데스크톱 등의 모든 IT인프라는 가상화로 운영이 가능하다
가상화를 통해
- 서비스를 위한 물리적인 서버의 대수 감소
- 관리 비용 절감
등의 효과를 얻을 수 있다.
그렇다면 가상화가 정확히 무엇일까?
가상화는 운영 체제에서 물리적 하드웨어를 분리하여 IT 서비스를 제공할 수 있도록 해주는 기술이다.
위의 오른쪽 그림은 Virtual Machine으로 가상화 한 아키텍처를 나타낸다.
VM을 통한 가상화 시에는 Hypervisor가 물리적인 자원들을 가상화해서 독립적으로 사용 가능하도록 해준다.
각각의 가상 머신들은 기존의 물리적 리소스를 가상 리소스로서 나눠서 사용하게 된다. 각 가상 환경의 운영 체제들은 실제 물리적 자원만큼이 아니라 할당 받은 자원만을 소유하고 있다고 인식하게 된다.
하이퍼바이저(Hypervisor)
: 시스템에서 다수의 운영 체제를 동시에 실행할 수 있게 해주는 논리적 플랫폼
클라우드
: PC데이터를 PC에 보관하는 것이 아니라 인터넷을 통해 중앙PC 또는 서버에 저장하는 공간
인터넷만 된다면 접근이 가능하다
클라우드 컴퓨팅이란 인터넷을 통해 IT 리소스를 원할 때 언제든지 사용하고, 사용한 만큼 비용을 지불하는 클라우드 서비스를 말한다. 대표적으로 AWS(Amazon Web Service) 등이 있다.
[ 클라우드 컴퓨팅의 이점 ]
- 초기 투자비용 매우 절약 가능
- 사용한 만큼 지불하는 종량제 가격
- 탄력적인 운영, 확장 가능
- 시장 상황에 빠르게 대응 가능
- 비즈니스에만 집중 가능
등이 있다.
인프라를 우리가 직접 못한다는 단점이 있긴 하지만 장점이 훨씬 많고 이런 점은 충분히 상쇄가 가능하다.
AWS (Amazon Web Service)
대표적인 CSP (Cloud Service Provider) 기업으로 다양한 컴퓨팅 자원들을 클라우드 형태로 대여해서 사용 가능하다.
클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services
개발자, 데이터 사이언티스트, 솔루션스 아키텍트 또는 AWS에서 구축하는 방법을 배우는 데 관심이 있는 모든 사용자용 무료 온라인 교육 AWS 전문가가 구축한 500개 이상의 무료 디지털 교육 과정
aws.amazon.com
AWS에서는 다음과 같이 매우 다양한 종류의 클라우드 서비스가 대여 가능하다.
다양한 국가에 Region이라는 서비스 지역을 두고 있고, 각 리전의 AZ (Availability Zone)이라는 가용 영역에 데이터센터가 구축되어 있다. 따라서 AWS 사용자는 가까운 리전의 AZ를 선택해서 빠른 서비스를 제공받을 수 있다.
Chapter 2. AWS 기본 서비스 (EC2, VPC, EBS, S3)
AWS의 대표적인 서비스들로는 EC2, VPC, EBS, S3 등이 있다.
EC2 (Elastic Compute Cloud)
AWS의 가상 서버 서비스이며 가상 머신이라고 보면 된다.
재구성이 가능한 컴퓨팅 리소스로 원하는 용도에 따른 다양한 인스턴스 타입(=가상머신의 사양)이 제공된다. 매우 다양한 OS가 지원된다.
인스턴스 타입은 T2.micro, T2.medium 등과 같이 아주 다양한 종류가 있다.
EC2 Security Group (보안그룹)
보안그룹을 통해 EC2 가상머신에서 IP나 Port를 막거나 열어줄 수 있다.
- 가상머신으로 들어오고 나가는 Inbound / Outbound 규칙 지정이 가능
- 모든 인터넷 프로토콜 지원
- 인스턴스 동작 중에도 규칙 변경 가능
IP, Port로 지정 말고도 다른 Security Group에 대한 트래픽을 허용할지 말지 지정이 가능하다.
이를 통해 계층적인 네트워크 구조를 생성할 수 있다.
ex)
웹서비스 Security Group은 외부로부터 들어오는 모든 웹 트래픽을 허용하고,
백엔드 서버에 대한 Security Group에서는 웹서비스 SG로부터 오는 트래픽만 허용
[ 외부 ==> 웹서비스 ==> 백엔드 ] 와 같이 통신이 이루어진다.
EC2 인스턴스에 대한 접속은 발급받은 EC2 key pair로 가능하다. 인스턴스 로그인 정보에 대한 퍼블릭 키는 AWS에 저장되고, 사용자는 프라이빗 키를 따로 보관해주어야 한다.
VPC (Virtual Private Cloud)
사용자가 정의한 가상의 네트워크 환경으로 AWS 환경에서 통신을 위해 구축해주어야 하는 기본 네트워크이다.
EC2 인스턴스를 만들 땐 VPC 설정을 해주어야 한다.
VPC 생성 과정은 다음과 같다.
- 가상 네트워크 환경을 구성할 Region과 IP대역 결정
- 가용영역(AZ)에 Subnet 생성
- Routing 설정
- 트래픽 통제 (In/Out)
==> IP 대역의 결정에는 IP address group과 CIDR을 사용한다.
CIDR은 클래스가 없는 도메인 간 IP 할당 기법으로 A.B.C.D / N 의 표기에서 N이 CIDR값으로 할당하려는 네트워크 주소의 범위를 정하는 값이다.
172.16.0.0/16 의 경우는 2진수로 변환한 32자리의 ip주소 기준으로
10101100 . 00010000 . 00000000 . 00000000
11111111 . 11111111 . 00000000 . 00000000 (서브넷 마스크)
앞의 16자리를 네트워크 주소로 사용하고, 뒤의 16자리를 호스트 주소로 사용하는 것이다.
따라서 위의 예시에서 할당 가능한 Host IP의 범위는 172.16.0.0 ~ 172.16.255.255 이다.
CIDR 값이 클 수록 네트워크 내에서 할당 가능한 Host 개수가 줄어든다.
VPC에서 CIDR 값을 정하는 것은 VPC 가상 네트워크 내에 위치한 서버들이 사용할 Private IP의 범위를 지정하는 것이다.
==> VPC의 IP대역을 적절한 단위로 분할하여 사용하기 위해 Subnet으로 나눠줄 수 있다.
각 서브넷도 VPC와 마찬가지로 CIDR값을 이용해 IP 범위를 지정할 수 있고, 각 서브넷의 대역은 VPC 대역 범위에 존재해야 한다. 각 서브넷은 대역이 중복되면 안된다.
AWS의 VPC에서는 기존 서브넷의 목적인 브로드캐스트와 멀티캐스트를 지원하지 않는다. 여기서 서브넷의 주 목적은 서브넷 별로 경로를 제어해서 원하는 트래픽만 서브넷 별로 받을 수 있도록 네트워크 레벨에서 격리시키는 것이다.
서브넷의 Routing을 설정해서 트래픽 경로(통신 방향)를 설정해줄 수 있다.
서브넷의 IP 대역 중 예약된 IP들은 사용이 불가한데, Subnet CIDR 블록의 첫 4개 IP와 마지막 IP가 이에 해당한다.
ex) 10.0.0.0/24의 경우
- 10.0.0.0 : 네트워크 주소
- 10.0.0.1 : VPC 라우터 용으로 예약된 주소
- 10.0.0.2 : DNS 용으로 예약된 주소
- 10.0.0.3 : AWS가 향후 사용하기 위해 예약된 주소
- 10.0.0.255 : 브로드캐스트 주소 (VPC에서는 아직 지원 안하지만 향후를 위해 예약)
==> VPC 생성 시 자동으로 Main Routing Table이 생성된다.
서브넷은 하나의 라우팅 테이블과 연결될 수 있고, 메인 라우팅 테이블은 삭제 불가하다.
다음과 예시 그림과 같은 가상 네트워크 구성이 가능하다.
서울 리전을 선택하고 IP대역을 10.0.0.0/16 으로 ip주소의 뒤 16자리를 호스트로 사용할 수 있도록 준다.
AWS Storage Service
AWS 에서 제공하는 Storage Service에는 다음과 같은 것들이 있다.
- Block Storage : 블록 단위로 저장, 접근
- ex) EBS (Elastic Block Storage)
- File Storage : 파일 단위로 저장, 접근
- ex) EFS, FSx
- Object Storage : API 기반의 데이터 접근이 가능
- ex) S3 (Simple Storage Service)
EBS (Elastic Block Store)
- AWS에서 제공하는 Block Storage Service
- 사용이 쉽고 확장 가능한 고성능 블록 스토리지 서비스로 EC2 용으로 설계되었다.
- 가상 디스크(Volume)을 생성
- 네트워크를 통해 인스턴스와 연결
- 온라인 상으로 디스크 추가 및 사양 업그레이드가 가능하다.
EBS 볼륨과 인스턴스는 같은 가용영역(AZ)에 있어야 연결 가능하다.
EBS 볼륨은 다른 AZ나 다른 Region으로 스냅샷을 생성하여 이동이 가능하다.
EBS 볼륨 타입으로는 SSD와 HDD를 선택 가능하다.
AMI (Amazon Machine Image)
인스턴스를 배포 가능한 템플릿으로 OS + System서버 + Application이 묶여 있는 형태이다.
S3 (Simple Storage Service)
AWS에서 제공하는 Object Storage 서비스로 언제 어디서나 원하는 양의 데이터를 저장, 검색할 수 있는 객체 기반 스토리지 서비스이다.
- 웹 서비스 기반 인터페이스를 제공해서 REST API 기반 데이터 생성/수정/삭제가 가능하다.
- 고가용성
- 무제한 용량 제공
- 사용한 만큼 과금
등의 특징이 있다.
S3 Bucket
Object를 저장하는 컨테이너로 저장소 역할을 한다.
오브젝트는 반드시 하나의 버킷에 속해야 한다.
버킷에 저장할 수 있는 오브젝트는 무제한이다.
Object는 S3에 저장되는 기본 개체로 하나의 크기는 최대 5TB이다.
Object는 데이터와 메타데이터로 구성되어 있고, Key 및 Version ID를 통해 버킷 내 고유 식별이 가능하다.
Chapter 3. AWS 고가용성 구현 (Region, AZ, ELB, ASG)
가용성 (Availability)
서비스 가용성이라고도 표현하며 워크로드를 사용할 수 있는 시간의 비율을 말한다.
[ Availability = Available for use time / Total time ]
고가용성 (High Availability, HA)
높은 가용성을 말하며, 구현한 시스템이 정상적으로 운영이 되는 성질이다.
(장애, 고장이 나더라도 복구를 해서 서비스를 지속할 수 있는 능력)
고가용성을 실현시키기 위해 AWS의 Region과 Availability Zone을 알 필요가 있다.
AWS는 Region과 AZ로 이루어져 있꼬, 각 리전 안에는 보통 2-3개의 데이터센터(AZ)가 다중화되어 운영된다.
Region
- 전세계에서 데이터센터를 클러스터링하는 물리적 위치
- 서비스하고자 하는 지역에 따라 지리적으로 가까운 Region을 선택한다.
Availability Zone
- Region 내 물리적으로 분리된 전력 네트워킹 장치가 분리된 영역
- 보통 AZ 별 데이터센터로 분리된 구조이다.
AZ 분산 배치
동일한 역할을 수행하는 인스턴스를 사용할 경우 AZ를 분산 배치하여 서비스의 가용성을 높일 수 있다. 만약 같은 AZ내에 모든 인스턴스를 배치하게 된다면 해당 AZ 장애 시, 가용 인스턴스가 없어지기 때문에 서비스 장애 복구가 오래 걸릴 수 있다.
AZ와 VPC
Region - VPC와 맵핑하고, AZ는 Subnet과 맵핑한다.
인스턴스 생성 시 VPC와 서브넷을 선택하여 배포한다.
VPC 구성 시, AZ에 따라 AZ의 수만큼 서브넷을 구성할 수 있다.
AZ 별로 분산 배치된 인스턴스로 트래픽을 분배할 때 Load Balancer를 사용해줄 수 있다.
Load Balancer
인입되는 트래픽을 특정 알고리즘 기반으로 다수의 서버로 분산 시켜주는 장비
AWS에서는 ELB (Elastic Load Balancer)로 해당 서비스가 제공된다.
[ ELB 특징 ]
- 리전 내 인스턴스 및 다양한 서비스로 트래픽을 분배해준다.
- 다수의 AZ로 트래픽 분배
- HTTP/S 웹 기반, TCP/S 프로토콜 기반
- Backend 인스턴스에 대한 Health Check를 수행해준다.
- 고가용성 기반 L4/L7 서비스이다. (OSI 7계층 - 4,7계층)
- AZ분산 및 트래픽 증가 시 자동 Scale-out 기능을 지원한다.
ELB의 종류에는
- ALB (Application Load Balancer)
- HTTP/HTTP(S) 트래픽 처리에 특화된 L7 레벨의 로드밸런서
- 주소별로 다른 서버로 분산시켜줌
- NLB (Network Load Balancer)
- TCP/UDP 처리에 특화 (L4 레벨)
- 포트별로 다른 서버로 분산
등이 있다.
Scale-out
: 트래픽 증가 시, 서비스에 투입되는 서버를 증설하여 각 서버가 처리하는 부하를 낮추는 방식
Scale-in
: 트래픽 감소 시, 배포된 서버를 제거하는 방식
ELB에는 트래픽을 인스턴스로 분배하기 위한 다양한 알고리즘이 존재한다.
- Round Robin : 돌아가면서 한번씩 처리하는 방식 (기본)
- Weighted Round Robin : 가중치를 주고 round robin
- Least Connection : 적게 분배된 인스턴스에 우선적으로 분배 (최소 연결 방식)
- Weighted Least Connection
ELB에는 주기적으로 서버가 정상 상태인지 확인하고 정상상태가 아닌 서버에게는 트래픽을 전달하지 않게 하는 헬스체크 기능도 존재한다.
- NLB : TCP/UDP Port Alive Check
- ALB : URL기반 응답 체크(200)
ELB AZ 분산배치
- 활성화된 AZ에는 로드 밸런서 노드가 자동으로 생성되어 배치된다.
- 기본적으로 해당 AZ에 배치된 인스턴스는 해당 AZ의 로드밸런서 노드가 트래픽을 처리해준다.
- ELB 생성 시에는 Availability Zone 활성화를 해주어야 한다.
Cross-Zone Load Balancing
- 교차 영역 로드 밸런싱이 활성화 되면, 로드 밸런서가 위치한 AZ와 상관 없이 타겟 AZ에 있는 모든 인스턴스에도 트래픽 라우팅이 가능하다.
- 비활성화 상태이면, 로드 밸런서 노드가 위치한 AZ에 있는 타겟 인스턴스에게만 라우팅 가능하기 때문에 AZ에 위치한 인스턴스마다 균일한 부하 분산이 어렵다.
- ALB는 교차영역 로드 밸런싱이 기본 활성화 되어 있다.
- NLB는 기본 비활성화
ASG (Auto Scaling Group)
Scaling을 자동으로 수행하도록 해주는 설정
Auto Scaling Group을 설정할 때는
- Launch Template을 정의해주고
- 자동 설정 정책을 설정해준다. (부하 조건, 최대/최소 스케일링 사이즈, 타겟 그룹 등 설정)
Launch Template (시작 템플릿)
인스턴스를 배포하기 위한 정보들의 묶음으로, 부하 시 새로 증설할 인스턴스에 대한 정의를 해준다.
'KT AIVLE School' 카테고리의 다른 글
(17주차 - 22.11.07~22.11.08) 웹 프로그래밍 - 자바스크립트 (JavaScript), Vue.js (0) | 2022.11.07 |
---|---|
(16주차 - 22.11.03~22.11.04) 가상화 클라우드2 - 쿠버네티스(k8s) (0) | 2022.11.03 |
(16주차 - 22.10.31~22.11.01) IT인프라 - 가상환경, 리눅스 명령어 (0) | 2022.11.01 |
(12주차 - 22.10.05) 언어지능딥러닝3 - CNN 기반 자연어처리 (0) | 2022.10.09 |
(12주차 - 22.10.04) 언어지능딥러닝2 - 텍스트 마이닝, 워드 임베딩 (0) | 2022.10.05 |