Application Load Balancer
안녕하세요. Application Load Balancer에 대한 소개를 시작하겠습니다. 이 동영상에서는 Elastic Load Balancing 서비스의 두 번째 로드 밸런서 유형을 소개합니다. 바로 Application Load Balancer입니다.
저는 Seph이며 5년 넘게 AWS와 함께하고 있습니다. 현재 Amazon Web Services를 사용하는 고객에게 교육을 제공하는 기술 강사로 근무하고 있습니다.
이 동영상에서는 Application Load Balancer의 개요를 살펴보고 이 서비스에 포함된 주요 기능 중 일부를 소개합니다. 그런 다음 Application Load Balancer를 사용할 수 있는 몇 가지 사용 시나리오에 대해 설명합니다. 마지막으로 로드 밸런서에 대한 간략한 데모를 살펴보겠습니다.
로드 밸런서란
먼저 로드 밸런서란 무엇일까요? Application Load Balancer는 앞서 설명한 것처럼 Elastic Load Balancing 서비스의 일부로 도입된 두 번째 유형의 로드 밸런서입니다. Classic Load Balancer가 제공하는 대부분의 기능을 여전히 제공하지만 고유한 사용 사례에 맞는 몇 가지 중요한 기능과 개선 사항이 추가되었습니다.
간략히 보면 새롭게 향상된 기능에는 추가 지원되는 요청 프로토콜, 향상된 지표 및 액세스 로그, 더 많은 대상 상태 확인이 포함됩니다. Application Load Balancer의 추가 기능은 경로 또는 호스트 기반 라우팅, VPC의 기본 IPv6 지원, AWS 웹 애플리케이션 방화벽 통합 등을 사용하여 요청에 대한 추가 라우팅 메커니즘을 활성화하는 기능 등입니다.
시나리오
Application Load Balancer 사용에 대한 수많은 시나리오가 있습니다.
하나는 컨테이너를 사용하여 마이크로서비스를 호스팅하고 단일 로드 밸런서에서 해당 애플리케이션으로 라우팅하는 기능입니다. Application Load Balancer를 사용하면 여러 요청을 동일한 인스턴스로 라우팅할 수 있지만 포트 기준의 경로는 다를 수 있습니다. 다양한 포트에서 수신하는 다른 컨테이너가 있는 경우 원하는 백엔드 애플리케이션에만 트래픽을 배포하는 라우팅 규칙을 설정할 수 있습니다.
새로운 용어
Application Load Balancer를 살펴볼 때 알아볼 새로운 용어가 있습니다.
리스너
리스너는 본질적으로 동일하지만 이제 목적지 또는 대상을 대상 그룹으로 그룹화할 수 있습니다. Application Load Balancer는 인스턴스 대신 대상을 등록하므로 대상 그룹은 대상을 로드 밸런서에 등록하는 방법입니다. 여기에서 Application Load Balancer가 백엔드 대상을 라우팅하고 구성하는 방법을 볼 수 있습니다. 로드 밸런서에 대한 리스너를 구성할 때 로드 밸런서가 수신한 요청을 백엔드 대상으로 라우팅하는 방법을 지정하기 위한 규칙을 만듭니다. 이러한 대상을 로드 밸런서에 등록하고 로드 밸런서가 대상에 사용할 상태 확인을 구성하려면 대상 그룹을 만듭니다. 여기에서 볼 수 있듯이, 대상은 여러 대상 그룹에 속할 수도 있습니다.
향상된 기능
앞서 설명한 것처럼 Application Load Balancer는 향상된 기능과 추가된 기능을 모두 포함합니다. Application Load Balancer는 HTTP2 및 WebSocket 지원을 추가하여 이러한 지원 프로토콜을 개선했습니다. 또한 지표 차원을 추가하고, 세부적인 상태 확인을 수행하고, 액세스 로그에 세부 정보를 추가하여, 모니터링 기능이 향상되었습니다.
현재 지원되는 추가 기능에는 경로와 호스트 기반 라우팅이 있습니다. 경로 기반 라우팅을 통해 요청의 URL을 기반으로 대상 그룹에 라우팅하는 규칙을 만들 수 있습니다. 호스트 기반 라우팅을 사용하면 동일한 로드 밸런서가 여러 도메인을 지원할 수 있고 요청한 도메인을 기반으로 대상 그룹에 요청을 라우팅할 수 있습니다.
또한 요청 추적을 사용하여 클라이언트에서 대상으로 요청을 추적하고 EC2 Container Service 예약 컨테이너를 사용할 때 동적 호스트 포트를 활성화하는 기능을 사용할 수 있습니다.
데모
이제 Application Load Balancer에 대한 간단한 데모를 살펴보겠습니다. AWS Management Console에서 시작하여 로드 밸런서를 생성하려면 EC2 콘솔로 이동합니다. EC2 콘솔에서 이미 두 개의 인스턴스가 실행되고 있음을 알 수 있습니다. 이 데모를 진행하는 동안 시작될 때까지 기다릴 필요가 없도록 먼저 인스턴스를 시작했습니다. 설정한 내용을 테스트하고 확인하기 위해 앞서 생성한 어플리케이션 ELB 테스트 인스턴스를 살펴보겠습니다. 이 인스턴스를 볼 때 두 개의 다른 포트에서 수신하는 두 개의 컨테이너가 있다고 표시하겠습니다. 그러기 위해 인스턴스의 퍼블릭 IP 주소를 복사합니다. 그런 다음 웹 브라우저 탭에서 데모용으로 설정한 페이지로 이동합니다. 첫 번째 페이지는 포트 80에서 수신 중이며 test.html입니다. 해당 사이트를 방문하면 컨테이너 1이 작동하고 있음을 알 수 있습니다. 수신 중인 다른 포트를 보고 싶은 경우 포트 443으로 가서 동일한 페이지 위치로 이동하면 두 번째 컨테이너가 작동하고 있음이 표시됩니다. 이렇게 작업을 수행했으니 이제 Application Load Balancer를 생성해 보겠습니다. 그러려면 측면 탐색 창에서 로드 밸런서를 선택합니다. 현재 생성된 로드 밸런서가 없는 것을 볼 수 있습니다. Application Load Balancer를 생성하려면 로드 밸런서 생성을 클릭합니다. 그런 다음 기본 선택 항목을 Application Load Balancer로 둡니다. 그런 다음, 계속을 클릭합니다. 여기에서 로드 밸런서를 구성하기 시작합니다. 먼저 로드 밸런서의 이름을 지정하겠습니다. 여기에 입력한 이름은 이 로드 밸런서의 DNS 엔드포인트에 포함됩니다. 이제 Application Load Balancer에 대해 이 ALB 이름을 지정하고 테스트합니다. 이것은 인터넷 연결 로드 밸런서가 되는데, 공개적으로 참조할 수 있는 DNS 엔드포인트를 갖는다는 의미입니다. 주소 유형을 기본값인 IPv4로 두겠습니다. 로드 밸런서에 대한 리스너를 구성할 때 기본 설정은 이미 포트 80을 수신하지만 동일한 로드 밸런서에서 두 번째 컨테이너로 라우팅할 수 있도록 추가 리스너를 추가합니다. 이건 포트 443에 대한 간단한 HTTP 요청입니다. 그런 다음 로드 밸런서에서 실행할 가용 영역을 선택해야 합니다. Application Load Balancer를 사용하려면 최소한 두 개의 가용 영역을 선택해야 합니다. 따라서 이 데모용으로 만든 VPC를 선택하겠습니다. 그리고 서브넷을 생성한 두 가용 영역을 선택합니다. 그 다음, 로드 밸런서에 태그를 지정할 수 있는 옵션이 있습니다. 로드 밸런서에 태그를 지정하려면 이 로드 밸런서를 참조할 키와 값을 설정하기만 하면 됩니다. 여기에서 구축하고 있는 항목에 대해 키를 Name으로 설정하겠습니다. 그리고 값을 Application Load Balancer로 설정합니다. 그런 다음 보안 설정을 구성할 수 있습니다. 이 페이지에서는 SSL 리스너를 사용하는 경우 보안 설정을 구성합니다. 지금은 그렇지 않기 때문에 보안 그룹을 구성하는 다음 페이지로 이동합니다. 로드 밸런서의 경우 기본 보안 그룹을 선택 해제하고 이 로드 밸런서에 대해 설정한 TestWebServer 보안 그룹을 선택합니다. 그 이후 계속 진행하여 라우팅을 구성할 수 있습니다. 이렇게 하면 로드 밸런서의 백엔드 대상에 대한 라우팅 규칙을 구성할 수 있습니다. 그러기 위해 계속 진행해서 새 대상 그룹 세트를 유지하겠습니다. 대상 그룹을 미리 생성하지 않았기 때문입니다. 그리고 대상 그룹의 이름을 지정하겠습니다. 이 대상 그룹 이름은 demo1입니다. 사용하는 프로토콜은 HTTP이고 포트는 80이 됩니다. 상태 확인을 위해 HTTP 요청을 유지합니다. 상태 확인 대상은 앞서 설정한 간단한 웹 페이지인 test.html입니다. 또한 고급 상태 확인 설정으로 이동할 수 있는데, 여기에서 상태 확인의 수행 방법을 조정할 수 있습니다. 대상이 정상 상태인지 조기에 확인하기 위해 상태 확인 간격을 매 10초로 낮추겠습니다. 하지만 제한 시간과 정상 및 비정상 임계값은 동일하게 유지합니다. 그런 다음, 대상을 등록하기 시작합니다. 대상을 등록하면 로드 밸런서는 해당 포트에 도달하게 하려는 인스턴스를 알 수 있습니다. 그래서 여기에 인스턴스를 설정합니다. 그리고 설정을 마친 ApplicationELB Test 인스턴스를 선택합니다. 인스턴스를 선택한 후 등록된 항목에 추가를 클릭합니다. 그런 다음 인스턴스가 등록된 대상 중 하나로 나열되어 있음을 알 수 있습니다. 계속 진행하여 Review(검토) 페이지를 확인합니다. Review(검토) 페이지에서 모든 구성 내용을 확인할 수 있습니다. 로드 밸런서의 이름이 표시되고, 설정한 리스너와 라우팅 규칙이 표시됩니다. 또한 demo1로 설정한 새로운 대상 그룹도 표시되고 있습니다. 계속 진행하여 생성을 클릭합니다. 로드 밸런서가 성공적으로 생성되었으므로 이 화면을 닫고 로드 밸런서 대시보드로 이동합니다. 이 로드 밸런서로 확인하려는 두 개의 대상이 있으므로 두 번째 대상을 등록하려면 먼저 대상 그룹을 생성해야 합니다. 이를 위해 대상 그룹에서 대상 그룹 생성을 선택합니다. 이 새 대상 그룹은 앞서 설정한 두 번째 컨테이너로 이동합니다. 대상 그룹 이름은 demo2이고 HTTP 요청이 될 것입니다. 그러나 요청은 포트 443으로 전달됩니다. 동일한 VPC에 있게 됩니다. 상태 확인은 동일한 대상이지만 별도의 컨테이너에서 존재하게 됩니다. 즉, test.html이 됩니다. 고급 상태 확인 설정에서 다시 상태 확인을 조정할 수 있는 옵션이 있습니다. 그리고 다시 간격을 매 10초로 낮춥니다. 그런 다음 대상 그룹을 생성할 수 있으며 두 번째 대상 그룹이 성공적으로 생성된 것이 표시됩니다. 이 두 번째 대상 그룹에서, 인스턴스를 해당 대상 그룹의 대상으로 등록했는지 확인해야 합니다. 확인했으니 이제 로드 밸런서로 이동하여 두 포트를 로드 밸런서에서 수신하도록 설정했는지 확인할 수 있습니다. 하지만 로드 밸런서를 만들 때 443을 설정했으므로 현재 demo1로 전달되는 중입니다. 이를 변경하려면 규칙 보기/편집을 클릭합니다. 그리고 THEN에서 demo1로 전달하는 대신 앞서 생성한 이 규칙을 편집하여 demo2로 전달합니다. 그런 다음 업데이트를 클릭합니다. 로드 밸런서에서 포트 443에 도달하는 트래픽을 라우팅하는 규칙이 대상 그룹 demo2로 전달됩니다. 이제 다시 로드 밸런서를 볼 수 있습니다. 이제 두 번째 대상 그룹을 생성하여 로드 밸런서에 등록했으므로 각 컨테이너로 트래픽이 전송되는지 테스트할 수 있습니다. 그러기 위해 다시 DNS 이름을 복사합니다. 첫 번째 컨테이너의 새 탭에서 DNS 이름을 붙여넣고 데모용으로 설정한 대상인 test.html로 이동합니다. 컨테이너 1이 사용 가능하다는 것을 알 수 있습니다. 두 번째 컨테이너를 테스트하기 위해 포트 443에서 수신하는 로드 밸런서가 있습니다. 따라서 포트 443으로 이동하여 컨테이너 2가 수신 중인 인스턴스에서 트래픽을 443으로 전달해야 합니다. Enter를 누르면 컨테이너 2가 실행 중임을 알 수 있습니다. 로드 밸런서의 수신을 조정하려면 언제든 리스너 탭으로 이동하여 실행 중인 리스너를 추가하거나 편집할 수 있습니다. 복습하자면 이 데모에서는 Application Load Balancer를 시작하고, 라우팅 규칙을 구성하고, 대상을 로드 밸런서에 등록하고, Application Load Balancer의 라우팅 작업을 확인하는 작업에 대해 다루었습니다. 학습에 도움이 되었기를 바랍니다. 다른 동영상을 살펴보면서 계속 학습해 보세요. 저는 AWS 교육 및 자격증 팀의 Seph였습니다. 시청해 주셔서 감사합니다.