728x90
SMALL
- 오늘은 EC2 생성 실습 진행에 이어 보안 그룹에 대한 내용을 추가로 배웠고, AWS 주요 서비스 중 EBS와 ELB에 대한 이론 및 실습을 진행하였습니다.
🔒 보안 그룹
- 보안 그룹의 의미는 말 그대로 보안을 위해 사용되는 개념입니다. 이 그룹은 하나 이상의 인스턴스에 대한 트래픽을 제어하는 가상의 방화벽 역할을 하는 친구들입니다.
- EC2를 생성할 때에 이 보안 그룹에 해당하는 규칙을 설정하면, 규칙에 따라 서버가 작동하는 원리입니다.
- 이 보안 그룹의 작동 방식은 Inbound와 Outbound로 나누어지는데, Inbound 트래픽은 서버 입장에서 안으로 들어오는 트래픽을 의미하고, Outbound 트래픽은 서버의 밖으로 나가는 트래픽을 뜻합니다.
- 위 이미지를 자세히 보시면 TCP에 관한 내용이 언급되어 있는데, 이에 대해 간략히만 얘기해보겠습니다.
✨ TCP vs. UDP
- TCP/IP에서 P는 Protocol을 뜻하고, 주로 외부로 접속하는 프로토콜을 다룹니다.
- 예를 들어, 원자력 발전소 같은 경우에는 외부에서의 접속이 함부로 허가되면 안 되기 때문에 TCP를 사용해서는 안 됩니다.
- 이에 반해, UDP는 내부적으로 돌아다닐 때의 프로토콜을 다루는 녀석으로, 사내 메신저 등에 사용하며, UDP에는 보안이 거의 필요없기 때문에 UDP보다는 TCP가 보안 측면에서는 더욱 뛰어나다고 볼 수 있습니다.
✨ http://
- 조금 더 나아가 http에 대해 설명드리자면, 이는 hyper text transfer protocol의 약자로, 여기서 hyper text란, html을 뜻합니다.
- 자칫 오해할 수 있는 것이 http가 주고 받는 것을 페이지(우리 눈에 보여지는 화면)라고 오해할 수 있지만, html을 주고 받는 프로토콜이라고 보시면 됩니다.
✨ 특징
- 하나의 보안 그룹에 보안 규칙을 여러 개 등록이 가능합니다.
- 여러 개의 EC2 인스턴스가 하나의 보안 그룹과 연동이 가능합니다.
- 여러 보안 그룹을 하나의 인스턴스에 연결할 수 있습니다.
- 기본적으로 보안 그룹은 모든 Outbound 트래픽을 허용합니다.
- 보안 그룹의 규칙은 항상 허용적입니다. 예를 들어,
- 액세스를 거부하는 형태로 규칙을 작성할 수 없습니다. 쉽게 말해,
- “특정 IP 주소에서 서버의 3000번 포트로 접속하는 것을 허용하지 않겠다” 형태로 작성이 불가합니다!
- 보안 그룹에는 언제든 규칙을 추가하거나 제거할 수 있습니다.
📌 EBS
✨ 특징
(저희가 아는 그 EBS 아니구요 ㅋㅋㅋㅋㅋㅋ)- EC2에 attach(연결)하여 쓸 수 있는 블록 스토리지입니다.
- 단일 가용 영역(AZ) 내 여러 서버(EC2)에 걸쳐서 복제가 가능합니다.
- 특정 시점에 대한 볼륨 스냅샷(백업 파일)을 만들 수 있습니다. 그리고 만들어진 스냅샷은 S3(추후에 나옴)에 객체 형태로 저장됩니다.
⚠️ 주의점
- 한 개의 EBS를 여러 개의 EC2 인스턴스에 attach하는 것은 불가능합니다.
- 한 개의 EC2에 여러 개의 EBS를 attach하는 것은 가능합니다.
✨ 관련 용어
💡 볼륨 (Volume)
- EC2가 하나의 PC라고 가정한다면, 볼륨은 USB라고 생각하시면 되겠습니다.
- 가장 기본적인 형태로 EC2에 바로 attach 가능한 형태입니다.
- 인스턴스를 생성할 때, 볼륨은 기본적으로 하나가 생성됩니다.
- 볼륨 생성 시, 사전에 가용 영역(AZ)을 잘 살펴보아야 합니다. 그리고 반드시 EC2와 동일한 가용 영역을 선택해주어야 합니다.
- 볼륨 삭제 시, EC2와의 연결을 먼저 끊어준 뒤, 볼륨 삭제를 진행해야 합니다.
💡 스냅샷 (Snapshot)
- 볼륨의 특정 시점을 그대로 복사하여 저장한 파일입니다. 이 스냅샷 파일은 S3에 객체 형태로 저장됩니다.
- 스냅샷을 이용하여 볼륨 및 AMI를 생성할 수 있습니다.
💡 AMI(Amazon Machine Image)
- OS가 설치된 형태의 이미지 파일입니다.
- 만들어진 AMI를 이용하여 또 다른 EC2 인스턴스를 생성할 수 있습니다.
- 수정 작업 후 AMI를 만들어 배포시키면 다른 사용자가 접근이 가능해지는 형태입니다.
- 추후 프로젝트를 진행함에 있어서 반드시 필요한 개념입니다 !
💡 IOPS(Input/Output Operations Per Second)
- 저장 장치의 성능 측정 단위로, 해당 단위가 높을수록 같은 시간동안 더 많은 입출력 작업이 가능해집니다.
- 16KB 단위로 처리되며, 추가 비용을 지불하면 더 높은 IOPS의 EBS를 생성할 수 있습니다.
📌 ELB
- ELB는 여러 대의 EC2에 붙게 되는 서비스로, 서버에 오는 요청들을 자신이 정한 알고리즘에 따라 골고루 각 서버로 분산시켜 주는 역할을 합니다.
- timeout이라고 불리는 제한 시간 내에 클라이언트들의 요청을 처리해야 하고, 여러 ELB가 하나의 EC2를 관리하는 형태는 불가합니다.
- 이 ELB 서비스와 같은 존재를 Load Balancer라고 불리는데, 말 그대로 Load Balancer는 각 서버로 부하를 분산시켜주는 역할을 수행합니다.
- 리전 내 복수 개의 가용 영역이 있고, ELB는 이 리전 내에 존재하는데, ELB는 리전별로 생성이 됩니다.
- ELB는 대상 그룹이라고 불리는 그룹에 속하는 EC2 인스턴스들에게만 부하를 분산시켜줍니다.
- 가용 영역 하나가 통째로 중단되어도 ELB는 정상 운영이 가능합니다.
- ELB의 Load Balancing 알고리즘은 Round Robin Scheduling을 사용하는데, 이는 라운드 로빈 스케줄링 - 위키피디아를 참고하시면 되겠습니다.
✨ 사용 목적
💡 성능 향상
- 트래픽이 800개이고, ELB의 timeout이 1분, 하나의 서버(EC2)가 1분에 트래픽을 200개까지만 처리할 수 있다고 가정한다면,
- 하나의 서버만 처리하게 되면 총 4분이 소요되어 실패!
- 두 개의 서버에서 처리하면 총 2분으로 실패!
- 네 개의 서버에서 처리하면 총 1분 소요되므로 가능은 하지만, 1개의 트래픽만 들어와도 하나의 서버에 과부화가 생길 수 있기 때문에 조정해줘야 합니다.
- 여덟 개의 서버에서 골고루 처리하면 넉넉히 가능하게 됩니다!
- 이와 같이 클라이언트의 수많은 요청을 여러 대의 서버가 나눠 처리하기 때문에 빠르게 응답 가능하고 이에 따라 성능 향상이 이루어지게 된다는 특징이 있습니다.
💡 안정성 향상
- 여러 EC2 인스턴스가 죽게 되어도 남은 EC2 인스턴스들이 요청을 처리할 수 있기에 안정성이 향상됩니다.
💡 서버 장애 예방
- 예상치 못한 트래픽이 갑자기 대량 추가되거나, 여러 개의 EC2 인스턴스가 중간에 중지되더라도, ELB의 백업 플랜에 따라 EC2 인스턴스를 미리 더 생성해 서버의 장애를 예방하는 역할을 합니다.
- 이 역할이 추후에 배울 Auto Scaling입니다.
💡 고가용성
- 서버 관점에서 가용성이 높다는 것은 장애가 나지 않고(Auto Scaling과 유사) 지속적으로 서버가 정상적으로 잘 작동하는 것이라고 볼 수 있습니다.
💡 성능 향상 기반 제공
- ELB가 없으면 요청은 EC2로 직접 가게 되지만, ELB가 있으면 ELB를 거쳐 요청이 가게 됩니다.
✨ ELB 관련 용어
💡 Load Balancing 알고리즘
- 트래픽을 각 서버에 분배하는 방법을 뜻합니다.
💡 Health Check
- 서버가 살아있는지 확인하는 과정을 말합니다.
- 만약 서버가 중단되었다면 트래픽을 해당 서버로 분배하지 않게 됩니다.
💡 Connection Draining (등록 취소 지연)
- Auto Scaling과 밀접한 관련을 가지는 용어입니다.
- 사용자의 요청을 처리 중인 서버를 곧바로 삭제하지 못하도록 방지하는 역할을 합니다.
- 트래픽이 줄어 늘렸던 인스턴스 중 몇 개를 삭제하려고 할 때, 삭제될 인스턴스에 연결 중인 사용자가 있을 수 있기 때문에 지정한 시간만큼 기다린 이후에 인스턴스를 삭제하게 됩니다.
💡 Latency
- Load Balancer와 서버(EC2) 사이의 지연 시간을 뜻합니다.
✨ 유형
💡 ALB
- Application Load Balancer의 약자로, 요청 수준(L7 switch)에서 작동하는 Load Balancer입니다.
- HTTP 및 HTTPS 트래픽을 사용하는 Application을 위한 유연한 기능이 필요한 경우에 사용하는 유형입니다.
- HTTP 헤더를 기준으로 트래픽을 분배해줍니다.
- html의 head 정보는 눈에 보이지 않기 때문에 HTTP를 통한 헤더 정보를 기준으로 트래픽을 분배합니다.
💡 NLB
- Network Load Balancer의 약자로, 연결 수준(L4 switch)에서 작동하는 Load Balancer입니다.
- Application에 초고성능, 대규모 TLS 오프로딩, 중앙 집중화 된 인증서 배포, UDP에 대한 지원 및 고정 IP 주소가 필요한 경우에 사용하는 유형입니다.
- IP 주소와 포트 번호를 기준으로 트래픽을 분배해줍니다.
- 여기서 포트 번호는 일종의 게이트웨이로 생각하시면 되는데,
- Windows에서는 포트 번호 중에서도 0~1000를 운영 체제 자체에서 사용하기 때문에 1001~6000 중 하나를 사용하는 것이 좋습니다.
💡 CLB
- Classic Load Balancer의 약자로, 과거에 사용하던 Load Balancer입니다.
- 기존에 Application이 있는 경우에 사용되지만, 현재는 흔히 사용되지는 않습니다.
- HTTP 헤더 및 IP 주소와 포트 번호를 기준으로 트래픽을 분배합니다.
⚒️ EC2와의 연결 작업
- 특정 EC2와 ELB를 연결하기 위해서는,
- 우선 가장 중요한 EC2를 먼저 생성해줍니다.
- ELB를 생성해주는데, 생성 과정 중에서 대상 그룹을 생성하는 과정이 포함되어 있습니다.
- 대상 그룹을 만들 때, 생성한 EC2를 포함시켜 생성합니다.
- ELB와 대상 그룹을 연결한 후, ELB가 생성되었으면 ELB의 DNS를 통해 브라우저에 접근할 수 있게 됩니다.
- 만약, 대상 그룹에서 해당 EC2의 세부 정보에 ‘Target is in an Availability Zone that is not enabled for the load balancer’ 라는 문구가 떠있다면, 로드 밸런서의 서브넷을 수정하여 해당 EC2의 가용 영역도 포함시켜주어야 합니다.
- 연결을 확인하기 위해서는 또 다른 EC2를 생성하여(다른 가용 영역으로 설정) 대상 그룹에 추가하고, ELB의 DNS를 통해 들어가 본 뒤, 추가 작업을 통해 연결이 되었음을 확인할 수 있습니다.
😯 ELB 작동 상태 확인
- 오늘 실습에서는 AMI를 WordPress로 설정해 두 개의 블로그 EC2를 만들고,
- 하나의 EC2에는 블로그 글을 포스팅, 나머지 하나에는 포스팅 하지 않은 상태에서 이 둘을 대상 그룹에 추가하였습니다.
- 그런 다음, ELB의 DNS를 통해 페이지를 요청하고, 해당 페이지에서 새로 고침을 지속하는 작업을 통해 ELB의 작동 상태를 확인할 수 있었습니다.
- 새로 고침을 진행했을 때, 위에서 작성된 글이 나오지 않는다면, 이는 로드밸런서가 첫 번째 EC2가 아닌, 두 번째 EC2로 부하를 분산시켜주었기 때문입니다.
🤔 2일차 회고
- 어제 EC2를 배울 때만 해도 'AWS 이거 별 거 아닌데?'라고 생각했었는데, 깊게 들어가면 갈수록 생각해야 할 내용들이 많아지는 것 같습니다. 근데 어려울수록 흥미가 생기는 건 왜일까요... 🤔
- 오늘 수업에서는 AWS에서 제공하는 EBS와 ELB 서비스에 대한 실습을 진행하였고, WordPress를 통해 블로그 EC2도 생성해보았습니다.
- 제가 이 블로그를 개설할 때만 해도 현재 사용하고 있는 티스토리와 WordPress, 둘 중 하나의 플랫폼에서 진행하려고 했었는데 WordPress도 많이 배워두면 좀 더 깔끔한 나만의 블로그를 만들어낼 수 있을 듯 합니다. 나중에 꼭 시도해보겠습니다!
- 내일은 Python 기초 지식들에 대해서 살펴볼 예정입니다.
728x90
LIST
'부트캠프 > LG U+' 카테고리의 다른 글
🤔 함수와 모듈 그리고 클래스 (15) | 2025.02.04 |
---|---|
🤔 Python Programming Basics (w. Spyder) (2) | 2025.02.03 |
🤔 Jupyter, folium 그리고 tkinter (2) | 2025.01.24 |
🤔 Python과 데이터 분석의 기초 (4) | 2025.01.23 |
🤔 클라우드와 AWS 그리고 EC2 (2) | 2025.01.21 |