220526

HyeonKi Jo·2022년 5월 26일
0
post-thumbnail

EC2 인스턴스 생성

EC2 인스턴스 생성 복습

WEB01 생성

  • AMI에서 제공하는 OS 이미지다.


  • ELB 스토리지를 추가한다.
  • 오른쪽, 종료시삭제에 체크가 되어있어도, ELB를 스토리지를 보관할 수 있는 방법이 있다.
  • 이후 MobaXterm으로 접속해준다.
  • 이때, 유저 이름을 ec2-user로해야 접속할 수 있다.
  • IP주소로 웹페이지에 접속도 가능하다.

WEB02생성

  • opt-in 해서 최근버전의 인스턴스생성 UI로 진행해본다.
  • 스크롤을 내려서 AMI를 설정한다.
  • 많은 Ubuntu버전을 사용할 수 있고 이중 18.04버전을 사용해준다.
  • 인스턴스유형을 프리티어인 t2를 사용한다.
  • 가용영역이 총 4가지가 있다.
  • 각각 100Km정도 떨어져 있다고 한다. 그래서 만약 천재지변으로 인한 이슈가 생겨도, 어느정도 거리로 떨어져있는 서버는 영향이 적을 것이다. 이는 모두 가용성을 위한 설정이다.
  • 보안그룹은 기존에 설정한 SG-WEB을 사용한다.
  • 스토리지를 위와 같이 설정한다.
  • 위 루트볼륨들을 사용할 수 있다.
  • 성능은 io2 > io1> gp3> gp2 순서대로 빠르다.
    • 위 4가지 루트볼륨이 SSD를 사용한다.
  • 편집을 누르면 파일시스템도 선택할 수 있다.

    사용자 정의 데이터에 apaache2 (httpd)를 설치해준다.
  • 인스턴스가 잘 생성되었다. 만약 화면에 안나온다면 새로고침 버튼을 누르면 된다.
  • 사용자명령어로 입력한 화면은 아니지만 아파치가 잘 설치되기는 했다.

로드밸런서

로드밸런스

  • 로드밸런서는 여러 서버의 상태를 체크하고, 부하가 너무 많다면 골고루 분배하여 부하를 줄이고, 서버가 작동불가상태라면 회선을 끊고, 서버가 복구되면, 다시 회선을 연결하여 멤버에 포함하는 작업을 한다.
  • 이는 서버의 무중단 서비스를 위함이며
  • 고가용성 (High Ability)를 위함이다.
  • EC2 콘솔에서의 로드밸런서 화면이다.

로드밸런서 종류

  • 로드밸런서의 종류는 현재 위 3가지가 있고,
  • 이전세대 로드밸런서 항목을 선택하면 Classic Load Balancer 한가지가 또 나온다.
    • 이 이전 로드밸런서는 곧 서비스 종료를 앞두고있기 떄문에 넘어가도록 한다.
  • (ALB) L7, Application Layer, 최상위 레이어에서 분산을 해주는 로드밸런서이다.
    • 이전 실습에서, Firefox, Chorme, InternetExplorer 등 어플리케이션을 구분해서 분산해줄 수 있다.
  • (NLB) L4, Transport Layer에서 데이터를 분산해주는 프로토콜이다.
    • Port번호로 부하를 분산해줄 수 있다. (L4스위칭 기능)
    • 이 NLB를 생성해본다.

로드 밸런서 생성

  • 이름은 Network Load Balancer라는 뜻으로 ELB-NLB로 설정한다.

Scheme 체계

  • Internet facing(인터넷 경계): 밖에서 들어오는 접속을 로드밸런싱한다.
  • Internet(내부) : 내부의 접속을 로드밸런싱한다.

IP주소 유형

  • IPv4 : IPv4 만 로드밸런싱한다
  • DualStack : IPv4, IPv6둘다 서비스

Network Mapping

  • 기본VPC는 전세계가 똑같이 가지는 기본설정 VPC이다.
  • NLB가 로드밸런싱 하기 위해서는, 가용역역이 같은 곳에 있어야 한다.
  • 현재 인스턴스는 2a와 2b에 존재햔다.
  • 두 영역을 체크해준다.

Listener and Routing

  • 현재 L4스위치기 때문에 Port스위칭를 설정하게 된다.
  • 오른쪽 Default Action(기본 작업) 에서 대상그룹을 설정할 수 있지만, 설정이 없다면 아래 링크를 눌러 생성할 수 있다.

    대상그룹 생성


    • 웹서버이기 떄문에, TCP포트 80(HTTP)를 로드밸런싱한다.
    • 현재 VPC는 하나밖에 없고, WEB01, WEB02가 존재하는 VPC를 설정한다.

    헬스체크

    • 접속신호를 보내서, 적합한 상태 신호로 반응하는지 확인한다.
    • 간격을 30초로해서 상태체크를 진행한다. 만약 3번 연속으로 반응에 실패하게 되면, Fail상태로 만든다.
    • Fail 상태에 빠지면, 문제가 생긴 서버와 Circuit breaker가 작동하여 불필요한 트래픽의 낭비를 최소화 시킨다.
    • 정상 임계값과 비정상입계값은 서버마다 다르고, 경력에 의한 경험으로 나오는 설정이다. 현재는 그냥 기본값으로 놔두도록 한다.
    • 아까 설정한 VPC의 인스턴스들이 나온다.
    • 두 인스턴스들을 체크하고 아래 보류중인 것으로 포함 버틍을 누른다.
    • 대상보기에 두 인스턴스가 올라옴을 확인하고, 대상그룹 생성을 진행한다.
    • 생성 확인
  • 이제 대상그룹을 만들었으니 새고로침을 누르고 설정해준다.
  • 나왔다.
  • 이제 요약(Summary)를 확인하고 로드밸런서를 생성한다.
  • 활성중인것을 확인하다.
  • 대상그룹 -> TG-NLB 체크박스 체크 -> 아래 화면에서 대상을 눌렀을 떄, 아래 두 인스턴스의 상태가 Healthy, Un healthy로 나온다.
  • 로드밸런서의 DNS이름을 복사해서 웹브라우저로 들어간다.
  • WEB01에 접속했다.
  • 새로고침을 눌러도 화면이 바뀌지 않는다.
  • 이것은 RoundRobin이 아니기 떄문이다. 우리는 실습때 RoundRobin으로 번갈아가며 접속되는것을 확인했지만 , AWS에서는 안되는것이 정상이다.
  • 여러 웹 브라우저를 시도해서 모바일 버전에서 WEB02에 들어갈 수 있었다.

ALB VS NLB

  • ALB
    • Round Robin : 순차적 접근 방식
  • NLB
    • Least Connection : 세션이 가장 적은쪽에 연결을 시도해주는 방식

대상그룹

  • Edit Attribute로 속성을 편집할 수 있다.
  • 여기서 Sticky Session을 설정할 수 있다.

ELB-ALB 생성

  • 이번엔 로드밸런서에서 ALB를 생성한다.
  • 또 대상그룹TG-ALB를 생성해서 연결해준다.
  • 위 이미지를 보면 두 인스턴스가 Healthy로 연결되어있다.
  • ALB는 특이하게 보안그룹이 필요하다. 그래서 인바운드 규칙으로 HTTP만 오픈한 SG-ALB를 생성하여 연결한다.
  • 로드밸런서 DNS주소로 접근하면 두 서버에 접근할 수 있다.

인스턴스IP주소로 직접접근

  • WEB01과 WEB02의 IP주소로 직접 들어가면 웹 서버에 접속할 수 있다.
  • 그러나 우리는 ALB를 통해서만 접속할 수 있는 웹서버를 만들어야 한다.
  • 따라서 HTTP 보안규칙을 모두 삭제하고, 새로 만들어준다.
  • HTTP를 모두 삭제하고 남은 규칙들이다.
  • 위와같이 HTTP 규칙을 새로 생성한다.
  • 접근 소스 설정을 보안그룹의 SG-ALB를 통해서만 접근할 수 있도록 만들어준다.
    • SG-ALB가 적용된 ELB-ALB를 통해서만 HTTP포트로 접근할 수 있게된다.
  • 직접 접근은 안되고 있다.

경로기반 라우팅

  • abc.com/food -> WEB01
  • abc.com/sale -> WEB02
  • 위와 같은 방법을 경로기반 라우팅인데, 주로 도커나 쿠버네티스에서 사용한다.

WEB02(Ubuntu)서버 접속

  • 서버에 접속할 때, 이름을 Ubuntu로 접속해야 한다.

WEB01

  • sudo mkdir /var/www/html/food : food 폴더를 만들었다. 이게 주소가 될 것이다.
  • sudo tar -xvf aws.tar -C /var/www/html/food/ : tar 아카이브 파일을 오른쪽 경로에 압축해제한다.
    • x : 압축 해제 옵션
    • v : 압축해제하는 과정출력
    • f : 파일 이름으로 파일 정의
    • -C : 목표 경로를 주겠다는 옵션

WEB02

  • sudo mkdir /var/www/html/sale
  • sudo tar -xvf azure.tar -C /var/www/html/
  • 똑같이 만들어준다.

대상그룹 생성

  • 이름은 TG-FOOD로 대상그룹을 만들어준다.
  • WEB01만 대상그룹으로 추가해준다!
  • 똑같이 WEB02도 TG-SALE로 만들어준다.

로드밸런서 수정


  • 규칙을 위와 같이 삽입한다.
  • 오타가 있다 foot -> food

결과 확인

  • DNS주소 + /food
  • DNS주소 + /sale
    • 주소에 경로를 추가하여 경로기반 라우팅을 설정하였다.

접속 브라우저 별 라우팅하기

대상그룹 생성

  • WEB01은 똑같이 설정하고 이름을 TG-FIREFOX로 한다.
  • 똑같이 WEB02를 설정하고 이름을 TG-MOBILE로 한다.

로드밸런서 설정


  • 아까는 경로였지만 이번에는 HTTP 헤더로 설정을 진행한다.
  • Mobile을 이렇게 설정하고 FIREFOX도 똑같이 해본다.

삭제

  • EC2 인스턴스 삭제
  • 로드밸런서 삭제
  • 대상 그룹 삭제
  • 사용자그룹 및 사용자 삭제
profile
Talking Potato

0개의 댓글