WEB01(AL2)
# EC2 인스턴스 만들고 사용자 정의 스크립트 수정이 어려워서 mobaXterm에서 수정
* 세션 생성 시 ec2-user라는 초기 사용자는 변경 불가능
* 호스트 이름을 IP로 설정하겠다고 EC2 인스턴스 생성할 때 체크했으므로 IP가 호스트 이름으로 표시됨
* 블록 스토리지 확인 명령어
* free 명령어는 메모리 확인 명령어
* 하이퍼바이저 타입1인 Xen서버를 이용
# WEB02
* bionic이 나오면 18.04 버전이라는 의미
* 프리티어 사용 가능인지 잘 확인하기
* 윈도우의 경우 라이선스 비용 때문에 더 비싼 것
* 기존에 생성했던 프라이빗 키 사용
* 2a 가용영역에 WEB01을 생성했기 때문에, 가용성을 높이기 위해 WEB02는 2c에 만드는 것
* WEB 서버가 동일한 용도이기 때문에 기존 보안 그룹으로 선택
* 콜드HDD는 느리다는 의미
* HDD는 데이터를 백업, 저장하는 경우에 사용
* 고급 세부 정보에서 사용자 데이터
* 우분투는 systemctl enable 명령어 필요 없음
# ELB(Elastic Load Balancer) : ALB, NLB, GALB
# backend : aws에서는 target group(대상 그룹)
# frontend : aws에서는 listener
# High Availability(HA) : 고가용성(무중단 서비스)
* ALB는 L7 스위치의 기능 : L7스위치는 포트로도 부하 분산 + 컨텐츠(URL, HTTP헤더) 이용해 부하 분산(컨텐츠의 헤더를 분석해서 분산)
* NLB는 L4 스위치의 기능 : L4는 IP, 포트만으로 부하 분산
# NLB(Network Load Balancer)
* 체계 : 접속해오는 방식을 의미
- 인터넷 경계 : 외부의 불특정 사용자들이 인터넷을 통해 접속할 때
- 내부 : 내부 네트워크에서 로드 밸런서를 이용해 접근할 때
* 로드 밸런서가 웹 서버와 같은 VPC 내에 존재해야 함 -> 웹 서버를 2a와 2c 가용영역에 위치시켰기에 같은 곳을 체크
* 172.31.0.0/16은 기본 VPC (어떤 리전이든 공통)
* 가용영역마다 subnet을 하나씩만 두었기 때문에 서브넷 드롭다운 메뉴 내려도 하나뿐
* 대상 그룹 선택이 백엔드(타겟그룹)
* 프로토콜과 포트가 프론트엔드(리스너)(IP와 포트 번호가 있음) -> 사용자가 해당 IP와 포트번호를 통해 접근
* 대상그룹 안 만들었으니 대상 그룹 생성 클릭
- NLB가 타겟그룹에 접속 시도했는데 타겟그룹이 응답하지 않으면 비정상
- 임계 값(3번)만큼 간격(30초)마다 신호를 보냄
- 제한시간(10초) 내에 정상적인 응답이 없으면 실패
- 상태검사(health check)에서 fail이 되면 NLB가 응답하지 않는 서버로는 신호를 보내지 않음
-> 서킷 브레이커(회로 차단) -> 불필요한 트래픽 낭비와 사용자의 불편을 최소화하기 위함
- 서버가 fail이라도 NLB는 계속해서 신호를 보내서 헬스체크 진행
- 임계 값(3번)만큼 연속으로 정상적인 응답이 오면 해당 서버가 정상이 되었다고 판단하고 타겟그룹의 멤버로서 포워 드 재개
- 헬스체크 간격을 너무 촘촘히 하면 서버에 부담을 줄 수 있고, 너무 늘리면 느슨해져서 실습에서는 임계 값 수정X
- 로드 밸런서의 특징에 따라 임계 값이나 제한시간이 달라질 수 있음
* ELB에서 트래픽을 라우팅할 인스턴스 선택
* 아래에 보류중인 것으로 포함 클릭
* 대상 그룹에 포함 클릭
* 새로 만든 대상 그룹을 추가
* 로드 밸런서 생성 버튼 클릭
* 상태확인에 initial은 아직 헬스체크가 되지 않은 상태 -> healthy로 바뀌어야 정상적이라는 의미
* 로드밸런서의 DNS이름 주소창에 입력하고 들어가도 NLB는 라운드로빈 알고리즘이 아니기에 새로고침 할 때마다 페이지가 바뀌지는 않음 -> NLB는 lesat connection방식(최소 연결 방식)
- 최소 연결 방식 : 한 쪽 서버에 세션이 많이 연결되어 있으면, 다른 쪽 서버로 트래픽 전송하는 방식
* ALB는 라운드로빈(순차적 접근 방식) 방식임
# ALB
* 네트워크 매핑에서는 가용영역 2a, 2c 체크
* NLB는 보안그룹이 없었음
-> WEB01, WEB02 각각 퍼블릭IP를 가짐
-> 각각의 IP로 브라우저에서 접속 가능
-> ALB 장치를 거치지 않고 직접 접속할 수 있다는 것은 문제
-> 코로나 백신 접종 예약에서 우회해서 바로 예약 사이트로 접속이 되었던 문제와 유사
-> 그래서 WEB01,WEB02에 퍼블릭IP 주면 안 됨
-> 무조건 ALB를 통해 들어오게 해야 하는 게 맞음
-> ALB의 보안 그룹에서 ALB를 거치지 않고 들어가는 트래픽 차단 가능
* default 보안그룹은 빼주기
* 새 보안 그룹 생성 클릭
* 각각의 VPC 안에 보안그룹이 위치해야 하기 때문에, 보안 그룹 생성 시 VPC 선택하는 것
* 아웃바운드는 보통 전부 허용
* ALB를 위한 보안 그룹이기에 ICMP, SSH를 오픈해도 해당 기능들을 사용할 수 없음
* ALB는 서버, 인스턴스가 아니고 서비스일 뿐이기 때문에 SSH로 접속을 하거나 Ping을 칠 수 있는 대상X
* HTTP만 열어주면 됨
* ALB의 80번 포트가 오픈되어 있는데 보안 그룹이 ALB를 감싸고 있어서 80포트를 오픈하지 않으면 트래픽이 전달X
* 새로고침 표시 누르고 SG-ALB만든 것 선택
* default 지우기
* 아까 만든 대상 그룹은 NLB와 연결해줘서 새로 만들어줘야 함
* 대상 그룹에는 한 개의 서비스만 연결
* 상태 검사 프로토콜이 NLB는 TCP였는데 ALB는 HTTP 사용
* 임계값도 NLB와 다름
* 상태 검사 경로의 / 의 의미 : /var/www/html/index.html(너무 기니까 /로 표현)
* 성공 코드 : 200을 성공 코드로 정하는데, 200-299입력하면 해당 범위는 정상적인 응답으로 보겠다는 의미
* 새로 생성한 대상 그룹 TG-ALB로 전달
# 보안 그룹
* 방화벽은 특정 네트워크나 IP를 차단X
* 방화벽은 특정 네트워크나 IP만 허용O
* 여기서는 HTTP의 해당 IP 외에는 접속 불가능
* SG-WEB에서 ALB를 거치지 않고 들어오는 것 차단 설정
* SG-WEB 보안그룹이 ALB의 트래픽만 받을 수 있도록 설정하면 됨
* SG-WEB에 들어갈 수 있는 src를 SG-ALB로 정해야 함
* SG-WEB에 들어갈 수 있는 src를 SG-ALB로 정함
* 우회해서 바로 웹 서버들로 접속 못하게 막음
* 경로 기반 라우팅
- L7 스위칭 기능
- 아래와 같이 URL(경로)기반으로 서버들을 라우팅해주는 것
- abc.com/food -> WEB01
- abc.com/sale -> WEB02
# WEB02 세션 생성해서 경로 기반 라우팅 준비
* xvf : x = extract, v = view, f : file명
* -C : 어디에 아카이브 풀고 싶은지
* /var/www/html/food/ 에 풀 것
* 이제 경로 기반 라우팅을 위한 대상 그룹 생성해야 함
* aws 콘솔에서 TG-FOOD 대상 그룹 생성
* FOOD 홈페이지 담고 있는 것이 WEB01이므로 WEB01을 대상 그룹에 등록
* aws 콘솔에서 TG_SALE 대상 그룹 생성
* SALE 홈페이지 담고 있는 것이 WEB02이므로 WEB02를 대상 그룹에 등록
* 로드 밸런서 -> 리스너 -> 규칙 보기/편집 -> 좌측 상단 + 아이콘 클릭
* IF /food* 경로로 들어 온다면 THEN 전달대상 TG-FOOD로 전달
* IF /sale* 경로로 들어 온다면 THEN 전달대상 TG-SALE로 전달
* food 사업부 홈페이지로 연결
* SALE 홈페이지로 연결
* url을 주지 않고 도메인만 주게 되면 default target group가 출력
# TG-FIREFOX, TG-MOBILE 이라는 이름으로 대상 그룹 생성
* 이전에 HAproxy 설정했던 메모장 참고
'KOSA 클라우드 솔루션즈 아키텍트 양성과정' 카테고리의 다른 글
[6.13] 퍼블릭 클라우드(AWS 복습) (0) | 2022.06.13 |
---|---|
[5.27] 퍼블릭 클라우드 스토리지 (0) | 2022.05.27 |
[5.24] 오픈스택 (0) | 2022.05.24 |
[5.23] 오픈스택 총정리(설치, 설정 등) (0) | 2022.05.23 |
[5.20] Go 5일차(복습) (0) | 2022.05.20 |