학습주제
네트워크
Elastic Load Balancing
학습내용
ec2 로드 밸런서 - ELB라 한다
네트워크 트래픽을 균등하게 배포하는 방법
L7, L4 단계 등 이용단계에 따라 여러 방법의 로드 밸런서가 있음
엘라스틱 빈스톡 사용시에도 ELB 가 연결됨
auto scaling
앞단에 ELB가 있어 모니터링도 가능함.
로드 밸런서는 OSI(Open Systems Interconnection) 7계층 모델의 특정 계층에서 작동합니다. OSI 7계층 모델은 네트워크 통신을 이해하고 설명하는데 사용되는 표준 모델이며, 다음의 7개 계층으로 구성됩니다:
1. 물리 계층
2. 데이터 링크 계층
3. 네트워크 계층
4. 전송 계층
5. 세션 계층
6. 표현 계층
7. 응용 계층
4계층 로드 밸런서 (L4 Load Balancer): 이 종류의 로드 밸런서는 전송 계층에서 작동하며, IP 주소와 포트를 기반으로 트래픽을 분산시킵니다. 이는 상대적으로 단순한 방식의 로드 밸런싱이며, 데이터 패킷의 내용은 고려하지 않습니다.
7계층 로드 밸런서 (L7 Load Balancer): 이 종류의 로드 밸런서는 응용 계층에서 작동하며, HTTP/HTTPS 헤더, 쿠키, URL 등의 내용을 바탕으로 트래픽을 분산시킵니다. 이는 더 복잡하고 세밀한 로드 밸런싱이 가능하게 하지만, 처리해야 할 정보가 더 많기 때문에 일반적으로 4계층 로드 밸런서보다 더 많은 자원을 소비합니다
OSI(Open Systems Interconnection) 7계층 모델은 네트워크 통신이 어떻게 이루어지는지를 설명하기 위한 표준 모델입니다. 각 계층은 서로 다른 기능을 수행하며, 하위 계층에서 상위 계층으로 통신 데이터가 전달됩니다. 아래는 각 계층에 대한 간단한 설명입니다:
전송 계층 (Transport Layer): 이 계층은 데이터가 신뢰성 있게, 순서대로, 에러 없이 전달되는 것을 보장합니다. TCP 및 UDP 프로토콜을 사용하여 데이터의 전송을 관리합니다.
응용 계층 (Application Layer) 은 사용자가 네트워크에 접근하게 하고, 네트워크 서비스와 사용자 사이의 인터페이스를 제공합니다. 이 계층은 웹 브라우저, 이메일 클라이언트, 메신저 등의 응용 프로그램들이 사용자와 네트워크 사이에서 데이터를 주고 받는 방식을 담당합니다. 이 계층에서는 HTTP, HTTPS, FTP, SMTP, POP3 등과 같은 프로토콜이 주로 사용됩니다.
응용 계층은 사용자가 네트워크 서비스를 이용하게 하는 가장 중요한 계층입니다. 예를 들어, 웹 브라우저를 사용하여 웹 페이지를 열거나, 이메일 클라이언트를 사용하여 이메일을 보내는 등의 작업은 모두 응용 계층에서 이루어집니다.
간단히 말하면, OSI 7계층 모델은 네트워크 통신의 다양한 측면을 서로 다른 7개 계층으로 분리하여, 각각의 계층이 특정 기능에 집중하도록 돕는 구조입니다. 이를 통해 각 계층은 독립적으로 개발되고, 이해되며, 문제가 발생했을 때 해당 계층만을 쉽게 진단하고 수정할 수 있게 됩니다.
L4 로드밸런서의 경우
어플리케이션 단계까지 가지 않고 네트워크 단에서 패킷을 분산함
L7 로드밸런서는
어플리케이션 단에서 분산시켜 더 섬세함
대상그룹을 먼저 만들어도 되고, 로드밸런서를 먼저 만들어도 됨
대상그룹을 먼저 만드는게 편함
이름 제외하고 기본값으로 생성함
아직 인스턴스가 없어 그대로 생성함
선택 후 대상 탭으로 들어가
어느곳에 연결할 것인지 선택함
나의 경우 하나도 안뜸
ec2, 빈스톡이 있으면 뜬다고 한다.
버지니아 북부로 바뀌어 있었음-> 왜바뀌지???
서울로 리전을 변경하자 다시 뜸
마찬가지로 대상 그룹도 비워져 있다. -> EC2는 리전에 종속됨.
그 후 아래 보류중인 것으로 포함을 누른다
보류 중인 대상 등록
ELB가 구성이 되었다.
이제 로드밸런서를 만들어본다
저 대상그룹을 가져와 본다.
이전에 SSL 인증과 관련해서 로드 밸런서를 사용했었다
클래식은 이제 안씀
IP 대역에서 쓰려면 네트워크 로드 밸런서
만일 SSL 이 생성되었다면 ACM에서 생성한 SSL인증서를 연결해주면 된다
보안그룹은 기존에 있던 그룹으로 생성했다
들어가보니 지난번에 MySQL연결할 때 사용한 보안그룹이 있었다
실제 현업에서 사용할때 이 로드밸런서를 사용하기 위한 전용 보안그룹을 새로 만드는 것이 좋다.
나의 경우 기존에 있는걸 바로 추가해서 리스너에 보면 대상그룹이 등록되어 있음
일단 로드밸런서 까지 생성했는데
대상그룹에 연결한 ec2 인스턴스 my-server가 unhealthy 하다고 한다. 원인은
1. 로드밸런서가 인스턴스에 접근을 못함
2. 인스턴스가 80번 포트를 열어놓지 않음.
정도로 판단된다.
my-server는 launch-wizerd-2의 인바운드 규칙을 따른다
규칙을 보니 80포트 HTTP, 모든 IP에 대해 열려있다고 한다.
launch-wizerd-2 포트도 80번으로 잘 열려있는거 같은데 왜그럴까
https://may9noy.tistory.com/661
현재 서버에 정상적인 호출이 되지 않는상태로 안나오는 것 같다.
서버만 생성한 상태라 어떤 웹페이지도 만들고 있지 않은 상태.
인증서, 트래픽 분산일 때
ELB를 달아주기 위해 로드 밸런서로 작업
클라우드가 아니러다로
기존 인프라 내에서 ELB라는 스위치를 두고서 앞단에서 장애대응을 하면서
로드 밸런서를 이용