본문 바로가기

Rookies 9기/클라우드 보안

클라우드 보안 5일차

728x90

• 로드밸런서의 부하 분산 방법

‣ Round Robin(순차 분배) : 1 --> 2 --> 3 --> 4 --> 1 ---> 2 --->.....

- 서버들의 스펙이 모두 동일한 경우에만 공평

 

‣ Weighted Round Robin (가중치를 고려한 순차 분배)

- 1 : 1 : 1.5 : 1.5 , 1 : 2 : 4 : 4

- 서버들의 스펙이 차이가 있을 때 적절한 방법

 

‣ Least Response Time (응답 시간이 빠른 쪽에 우선 분배)

- 평소에 Load Balancer가 서버들의 응답 시간을 주기적으로 체크해서 응답 시간이 빠른 쪽에 우선 분배

 

‣ Least Connection (연결 개수가 가장 작은 쪽에 우선 분배)

- 인터넷 쇼핑을 오랫동안 하는 Browser ---> Connection이 계속 유지됨

- 바로 검색해보고 바로 나가는 Browser ---> Connection이 빨리 끝남

- Connection이 작은 쪽에 부여함

 

‣ Hash Function을 활용하는 방법

- 출IP, 출Port, 목IP, 목Port 등을 고려해서 Hash값을 계산 ---> 일치되는 경우에는 같은 서버에 계속 고정해서 연결 유지

- Sticky Session (세션이 고정됨)

 

• ALB와 NLB

- ALB는 URL, HTTP 헤더에 따라서 부하를 분산, Round Robin 지원

- NLB는 목적지 Port를 보고 부하를 분산, Hash Function 지원(Sticky Session), EIP(고정 IP)를 부여할 수 있음

 

• EIP (Elastic IP Address, 탄력적 IP 주소)

- 탄력적이라는 것은 "변하지 않는다"는 의미 ----> 고정 IP라는 뜻

- 탄력적이라는 것은 원래대로 돌아옴(원래 모양을 되찾음)

 ⇒ IP주소가 바뀌지 않고 계속 같은 IP를 사용할 수 있는 서비스 (변동 IP의 반대말)

- 용도 : 도메인 네임에 고정해놓을 때 

 

NLB 실습

1. Bastion host를 만들고 웹 서버로 설정

Bastionhost-hcm 이름으로 EC2를 생성을 해준다.

서브넷을 Public Subnet으로 설정을 해준다.

Bastionhost-hcm의 SSH클라이언트 주소를 확인해 복사를 해준다.

 

2. 아파치 서버 설치

SSH로 EC2연결
아파치 설치
index.html 제거 및 생성
index.html 소스코드

3. EC2(Bastion host-hcm) 이미지 만들기

Bastion-hcm에 마우스 오른쪽 버튼을 눌러 이미지 생성을 눌러준다.

webserver-hcm 이름으로 이미지를 생성해준다.

AMI

AMI에 들어가면 만든 이미지를 볼 수 있다. "AMI로 인스턴스 시작" 버튼을 눌러 Redserver, Yellowserver, Blueserver 이렇게 3개의 EC2를 만들어 보자.

 

4. AIM을 이용하여 EC2 생성하기

Redserver

카탈로그의 AMI에서 AMI가 내가 만든 이미지가 맞는지 확인을 한다.

Redserver

서브넷을 프라이빗 서브넷으로 설정을 하고 보안 그룹은 web_server로 지정을 해준다.

Yellowserver

카탈로그의 AMI에서 AMI가 내가 만든 이미지가 맞는지 확인을 한다.

Yellowserver

Yellowserver도 서브넷은 프라이빗 서브넷으로 설정을 해주고 보안그룹은 web_server로 지정을 해준다.

Buleserver

카탈로그의 AMI에서 AMI가 내가 만든 이미지가 맞는지 확인을 한다.

Blueserver

Blueserver도 서브넷은 프라이빗 서브넷으로 설정을 해주고 보안그룹은 web_server로 지정을 해준다.

EC2

4개의 EC2를 확인할 수 있다. 그중 Bastionhost-hcm만 퍼블릭 IP를 가지고 있다.

 

5. 보안 그룹 수정

EC2에서 설정한 web_server의 규칙을 수정하자.

지금 인바운드 규칙 SSH는 로컬 PC에서만 접속이 가능하다 그러면 Bashost에서 접속이 불가능하다.

SSH를 Public Subnet IP를 지정해 규칙을 만들어준다.

 

6. 키 페어 업로드(Bastionhost-hcm에 접속된 상태에서 Yellowserver, Blueserver의 사설 IP로 접속하기 위해서)

키 페어를 Bucket에 업로드해준다.

퍼블릭 설정을 일시적으로 퍼블릭으로 한다(매우 위험)

bastinohost-hcm

Bucket에 있는 키 페어를 다운로드한다.

※ 다운로드하였으면 바로 Bucket에 들어가서 반드시 삭제를 한다.

키 페어에 권한을 준다. (사용자만 읽기 가능)

키 페어를 ubuntu로 소유권을 변경해준다.

 

7. Yellowserver와 Blueserver 바탕화면 바꾸기

‣ Yellowserver

Yellowserver

Yellowserver의 SSH클라이언트에 들어가 주소를 복사를 한다.

SSH클라이언트 root을 ubnutu로 수정을 해준다.

index.html를 생성해준다.

index.html

Redserver와 다르게 수정을 해준다.

 

‣ Blueserver 

Blueserver

Blueserver의 SSH클라이언트의 주소를 복사해준다.

Blueserver에 연결을 해준다.

index.html

Yellowserver와 똑같이 명령어를 입력해준다.(index.html 코드는 수정)

 

8. NLB 설정하기

‣ 탄력적 IP 설정

왼쪽 화면을 보면 탄력적 IP를 볼 수가 있다.

탄력적 IP 생성은 아무 설정 없이 생성을 해준다.

 

‣ 로드밸런서

왼쪽 화면에 로드 밸런서가 있다.

Load Balancer

Network Load Balancer를 만들어준다.

Load Balancer

NLB-hcm 이름으로 만들어준다.

Load Balancer

두 개의 리전, 두개의 서브넷을 사용한다. 프라이빗 서브넷을 설정한 리전에 EIP(Elastic IP Address)를 지정해준다.

Load Balancer

target group를 새로 만들어 설정을 해준다.

Load Balancer

만든 로드밸런서를 보면 탄력적 IP 주소가 보인다.

Yellowserver
Blueserver
Redserver

웹 브라우저에 탄력적 IP를 주소창에 넣으면 들어갈 때마다 EC2가 바뀌는 걸 알 수 있다.

 

• 로드밸런서 정리

- ALB : DNS 경로를 통해서 접속 

- NLB : 탄력적 IP 주소가 우선 적용 -> DNS 경로를 통해서 접속 ( 탄력적 IP가 안되면 DNS 경로가 됨)

 

• 오토스케일링

- EC2등을 필요한 만큼 숫자를 자동으로 늘리거나 줄이는 것 (개수 제한 설정 가능 : Max ~ Min) ----> 관리자의 개입 없이 자동으로 증감

- 가상 머신이기 때문에 빠르게 늘릴 수 있음

- 오토스케일링을 적용 사례 : 티켓 예매(KTS, 공연표 등), 게임, 블랙프라이데이, 수강신청 등 

- Scale out : 서버의 개수를 늘리는 것 (양적 증대, 양적 확장)

- Scale in : 서버의 개수를 줄이는 것 (양적 감소, 양적 축소)

- Scale up : 고사양 스펙으로 변경하는 것  (질적 증대)

- Scale down : 저사양 스펙으로 변경하는 것 (질적 감소)

 

• EC2의 요금제

- On Demand (온디맨드) : 사용자가 필요할 때 시작해서 필요 없을 때 삭제하는 것

ex) 이벤트(월드컵, 올림픽 행사), 프로젝트

- Spot Instance (스폿 인스턴스)  : 사용자가 구매 가격을 제시하면 가장 높은 가격을 제시한 고객한테 EC2를 사용하게 해 줌(경매)

⇒ 자주 중단될 수 있음, 작업이 계속 미뤄질 수 있음 

ex) 급하지 않은 일 : 데이터 변환작업, 빅데이터를 분석 등

   NTY(170년) : 필름(사진)을 PDF로 변환하는 작업 --> 스폿 인스턴스를 활용해서 저렴하게 처리

- 예약 인스턴스 : 약정을 하고 요금을 지불하는 것 (선불, 월별 납부 가능)

⇒ 장기간 사용하는 서비스, 할인 적용 가능, 선불이면 추가 할인 

ex) 웹서비스

 

오토스케일링 WIth Load balancer (ALB) 실습

1. EC2를 생성 (Amazon Linux로 EC2를 생성하고, Apache2만 설치)

Amazon Linux인 EC2를 생성을 해준다.

Autohcm의 SSH클라이트 주소에 접속을 한다.

sudo yum install httpd
sudo systemctl start httpd
sudo systemctl enable httpd
sudo usermod -a -G apache ec2-user, sudo chown -R ec2-user:apache /var/www, sudo chmod 2775  /var/www
sudo  vi  index.html
index.html

잘 동작이 되는지 퍼블릭 IP 주소로 들어가 확인을 해준다.

 

2. 스냅샷

스냅샷 생성을 해준다.

인스턴스를 선택을 하고 Autohcm인스턴스를 선택해준다.

만든 스냅샷을 사용해 이미지를 생성해보자.

img-amazon-webserver 이름으로 스냅샷 이미지를 생성해준다.

 

3. 시작 구성

시작 구성 생성을 해준다.

스냅샷에서 만든 이미지를 지정을 해주고 인스턴스 유형을 프리티어인 tc.micro를 선택해준다.

보안 그룹은 web_server로 지정을 해준다.

시작 구성

4. 오토 스캐닝 그룹

Auto Scaling 그룹

시작 템플릿에서 시작 구성으로 전환을 해주고 시작 구성을 지정을 해준다.

Auto Scaling 그룹
Auto Scaling 그룹

로그 밸런서가 없기 때문에 새로 만들어준다. 

Auto Scaling 그룹
Auto Scaling 그룹

두 개의 인스턴스가 생성되고 최소 1개의 인스턴스가 실행이 되면 최대 3개까지 인스턴스가 생성이 되게 자동으로 생성하게 개수를 지정한다.

Load Balancer
EC2

총 3개의 EC2가 있다.

EC2

EC2를 종료시켜보자

원하는 크기 용량이 2개이기 때문에 자동으로 인스턴스가 생성이 된다.

 

• Auto Scaling을 사용하는 이유

- 장애가 발생하거나 혹은 해킹을 당해서 인스턴스가 응답하지 않는 경우에도 새로운 인스턴스를 생성해서 항상 서비스 가능한 상태를 유지

- 트래픽이 높아지면 추가로 인스턴스를 실행할 수 있도록 설정 가능  ---> Target Tracking(티켓 구매)

 

• Target Tracking 기법

- 트래픽이 높아지는 경우 사용

- 예측 크기 조정 정책을 사용하는 사례 : 예상이 충분히 가능할 경우

사례) 로또 구매 서버 : 토요일 13시 ~19시까지 높아지는 것이 예상되는 경우 ---> 예측 크기 조정 정책

사례) 합격자 발표 : 합격자 발표 당일

CPU 사용률을 70% 지정하는 경우 70%를 넘으면 인스턴스를 추가로 늘림 ---> 개수 제한 설정 가능

반대로 CPU 사용률이 70% 이하로 내려가면 인스턴스를 줄이도록 설정하면 비용 절감됨

Quiz) 티켓판매를 하려고 하는데, 예측 크기 조정 정책으로 설정해도 될까요?  (예상보다 더 많이 접속하면.... XXXX)
----> Target Tracking 기법을 사용해야 함

 

종합실습

Ubuntu EC2를 하나 만들어서 웹서버를 만들고 스냅샷, 이미지를 생성, Private Subnet에 오토스케일링으로 생성되도록 하고, NLB에 EIP 붙이고(Private Subnet 배치) 오토스케일링 그룹을 타깃으로 지정하세요.

(기존에 만들었던 것은 모두삭제하고 새로 실습합니다)
(색깔로 서버 구분은 어려우니까 그냥 한가지로 생성될겁니다.)

 

Bastion-hcm 인스턴스를 생성한다.

Bastion-hcm의 SSH클라이언트 주소를 복사해 접속을 한다.

아차피 설치
index.html

index.html를 수정을 해준다.

스냅샷 생성

Bastion-hcm를 인스턴스 ID에 지정을 해주고 생성을 해준다.

AMI 생성

Bastion-hcm에서 이미지를 생성을 해준다.

AMI

AMI에 들어가면 생성한 이미지를 볼 수 있다.

탄력적 IP주소 할당
시작 구석 생성

생성한 이미지를 통해 시작 구성을 생성해준다.

Load Balancer

Network Load Balancer를 선택해준다.

Load Balancer

두 개의 서브넷을 설정을 해준다 (Privatr Subnet인 hcmsub02에 EIP를 지정해준다.)

Auto Scaling

시작 템플릿에서 시작 구성으로 전환을 해준다.

Auto Scaling
Auto Scaling

만들어 놓은 로드 밸런서를 선택을 해준다.

그룹의 크기를 선택해준다.

Auto Scaling 그룹
Load Balancer

웹 브라우저에 탄력적 IP 주소로 들어간 결과 화면이다.

 

NACL과 Security Group의 차이점

1) NACL

- 서브넷에 배치

- 방화벽 룰셋과 동일 (허용과 거부 설정)

- 위에서부터 내려가면서 적용(번호 작을수록 우선순위 높음)

 

2) Security Gruop

- 허용만 설정

- Stateful방식(방화벽의 3세대 방식)

- 리턴 트래픽이 허용됨

- EC2, RDS, NLB/ALB, ECS 등에 적용

'Rookies 9기 > 클라우드 보안' 카테고리의 다른 글

클라우드 보안 7일차  (0) 2022.10.06
클라우드 보안 6일차  (0) 2022.10.05
클라우드 보안 4일차  (0) 2022.09.29
클라우드 보안 3일차  (0) 2022.09.28
클라우드 보안 2일차  (0) 2022.09.27