본문 바로가기
개발/AWS

EC2앞에 Network Load Balancer 추가하기 삽질

by 문둘기 2019. 11. 7.

IOT 장비가 EC2로 보내는 부하를 분산하기위해 로드밸런서를 새로 도입하기로했다

그과정에서 수많은 삽질이 있었는데 ,, 이번글은 내가겪은 순서대로 삽질한것을 그냥 쭉써보려고한다 

 

 

맨처음에 ELB 서비스를 이용하기위해.. 

AWS 서비스 검색창에 Elastic Load Balancing ( ELB )을 검색했는데 안나오고
EC2만 나와서 뭐지..??? 싶었는데 ELB 생성을 EC2 대시보드에서 하는거였다 .. ㅋㅋ.. 

 

대시보드 하단에보면 로드밸런싱이라는 항목이있다

저기서 로드밸런서를 클릭하고 상단을 보면 로드밸런서 생성이 가능하다

 

로드밸런서는 하나만있는줄알았더니 이렇게 3종류가있다 .. 

Application Load Balancer
Network Load Balancer(신규)
Classic Load Balancer  

공식문서에서 로드밸런서 3개의 세부정보를 비교해볼수있다 

 

나는 EC2에서 TCP 소켓서버가 돌고있고, 클라이언트도 TCP로 데이터를 보내기때문에 Network Load Balancer를 사용하기로했다

 

-기본구성- 
체계는 인터넷 연결로 했다

-리스너-
리스너는 말그대로 listen하는것이다,
원하는 프로토콜과 포트번호를 적어주면된다 TCP와 현재 돌고 있는 노드서버의 포트를 입력했다

-가용영역-
VPC는 기본VPC로하고 가용영역은 EC2 인스턴스가 생성된곳으로 정했다.
IPv4주소는 EIP 하나생성해서 적용했다

 

보안설정구성은 TLS가 아니면 생략가능하다
보안통신하라고 경고가 뜨긴하는데 아직 TLS까지 신경쓸 수준이 아니기때문에, 무시하고 다음단계로갔다

라우팅구성에서는 대상그룹(target group)을만들어야된다
새 대상그룹을 선택하고, 이름도 적었다

대상유형에서 EC2 인스턴스 or IP 를 고를수있는데 여기서 차이가 있다.

일단은 인스턴스로 만들었다
프로토콜은 당연히 TCP, 그리고 포트는 아까랑 동일하게 입력했다

상태검사는 TCP로 재정의 80 포트로 진행했다

TCP 헬스체크(상태검사)라서 포트를 EC2에서 리스닝해줘야한다.
아파치나 nginx 를 설치해야하는데 나는 아차피 설치했다

 

설치후 바로 healthy 상태가됐다

 

 

참고한글,영상 

 

 

 

[초보자를 위한 AWS웹 구축] 4. 네트워크 구성하기(VPC, Subnet, Route Table, Internet Gateway)

이번 페이지에서는 네트워크 구성에 대한 VPC, Subnet, Route Table, Internet Gateway 구축에 대해 알아보고자 합니다. 그전에 먼저 AWS에서 제공하는 VPC와 Subnet의 개념에 대해 간단히 살펴 보도록 하겠습니

tech.cloud.nongshim.co.kr

 

What is a Network Load Balancer? - Elastic Load Balancing

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

[AWS] 가장쉽게 VPC 개념잡기

가장쉽게 VPC 알아보기

medium.com

 

만들면서 배우는 아마존 VPC(Amazon VPC) 입문: AWS 네트워크의 기초

아마존 버추얼 프라이빗 클라우드(Amazon VPC)는 아마존 웹 서비스(Amazon Web Service)의 가장 기본이 되는 네트워크 서비스이자 리소스입니다. AWS에서 제공하는 대부분의 리소스들은 아마존 VPC를 기반

www.44bits.io

 

AWS NLB(Network Load Balancer)

AWS NLB는 AWS Load Balancer에 Elastic IP(고정)을 부여할 수 있는 현재까진 유일한 Load Balancer 이다. TCP 레이어까지만 지원한다. 따라서 http cookie 방식의 sticky는 지원하지 않으며, tcp 세션을 350초 유..

blog.leedoing.com

 

 

특히 아래문서가 핵심이었다 

 

Target groups for your Application Load Balancer - Elastic Load Balancing

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

 

 

 

 

ps. 그외 새로 알게된 지식들

VPC는 11년8월에 정식으로 나옴,
그전에는 EC2 클래식이라는 네트워크환경이 사용됐는데 그냥 단일네트워크엿음

13년12월이후에는 이제 EC2클래식을 사용할수없고 VPC를 강제로 사용하게만듬,
VPC를 이용해서 사용자가 직접 네트워크환경을 설계하는것은 큰장점이지만, 
EC2하나 테스트해보려는데 네트워크환경을 직접구축해야되는건 상당히 복잡하고 귀찮고 초보자에겐 어려운일이다
그래서 AWS는 계정생성할때 리전별로 바로 VPC를 default로생성해줌 , 
그래서 우리는 EC2하나만 생성했다고 생각할수있는데 사실 VPC가 이미있어서 그위에 생성해서 사용하고있는거임 

 

CIDR은 아이피주소범위를 지정하는 방식이다, 
예를 들어 192.168.0.0/32 192.168.0.0을 가리킵니다. 범위는 지정된 IP부터 2^(32-n)개가 됩니다. 예를 들어 뒤의 숫자가 24라면, 2^(32-24)=256개의 IP 주소를 의미합니다. 예를 들어 192.168.0.0/24 192.168.0.0에서 192.168.1.255까지의 IP를 의미합니다

서브넷의 넷마스크 범위는 16(65535개)에서 28(16개)을 사용할 수 있으며, VPC CIDR 블럭 범위에 속하는 CIDR 블럭을 지정할 수 있습니다

하나의 서브넷은 하나의 가용존과 연결 됩니다

 

 라우팅 테이블에 인터넷 게이트웨이를 향하는 적절한 규칙을 추가해주면 특정 서브넷이 인터넷과 연결됩니다. 하지만 서브넷과 인터넷 게이트웨이를 연결하는 것만으로는 인터넷을 사용할 수 없습니다. 인터넷을 사용하고자 하는 리소스는 퍼블릭 IP를 가지고 있어야합니다.

DHCP 옵션셋은 TCP/IP 네트워크 상의 호스트로 설정 정보를 전달하는 DHCP 표준입니다. 이 기능을 사용하면 도메인 네임 서버, 도메인 네임, NTP 서버, NetBIOS 서버 등의 정보를 설정할 수 있습니다. 일반적으로 VPC 생성 시 만들어지는 DHCP 옵션셋을 그대로 사용합니다.

네트워크 ACL은 서브넷 앞단에서 트래픽 제어하는것, 보안그룹은 EC2 인스턴스앞단에서 트래픽제어하는것 ( 인바운드,아웃바운드 )