로드 밸런싱은 트래픽을 백엔드나 다운스트림 EC2 인스턴스 또는 다른 서버들로 전달하는 역할을 합니다. 이를 통해 시스템 성능과 안정성을 크게 향상시킬 수 있습니다.
로드 밸런서의 주요 역할은 트래픽을 여러 서버에 고르게 분산시키는 것입니다. 예를 들어, 세 개의 EC2 인스턴스가 있고, 그 앞에 일라스틱 로드 밸런서(ELB)가 있다고 가정해봅시다. 첫 번째 사용자의 요청은 ELB를 통해 특정 EC2 인스턴스로 전달됩니다. 두 번째 사용자의 요청은 또 다른 EC2 인스턴스로 전달되고, 세 번째 사용자의 요청도 마찬가지로 다른 인스턴스로 분배됩니다. 이를 통해 다수의 사용자가 접속하더라도 부하가 분산되어 각 인스턴스가 효율적으로 작동하게 됩니다.
사용자는 자신이 어느 백엔드 인스턴스에 연결되어 있는지 알 수 없습니다. 사용자는 단지 ELB를 통해 한 엔드포인트에 접속했다는 사실만 알게 됩니다. 이는 애플리케이션에 단일 액세스 지점(DNS)을 제공하고, 다운스트림 인스턴스의 장애를 효과적으로 처리할 수 있게 합니다.
로드 밸런서는 여러 다운스트림 인스턴스로 부하를 분산시키는 데 필요합니다. 이를 통해 애플리케이션의 가용성과 성능을 높일 수 있습니다. 단, 로드 밸런서 자체가 단일 실패 지점이 되지 않도록 고가용성 구성을 해야 합니다. 로드 밸런서는 상태 확인 매커니즘을 통해 어떤 인스턴스로 트래픽을 보낼 수 없는지 확인할 수 있습니다. 또한 SSL 종료를 통해 HTTPS 트래픽을 처리하고, 쿠키를 이용해 고정성을 강화하며, 영역 간 고가용성을 보장할 수 있습니다.
AWS의 일라스틱 로드 밸런서는 관리형 로드 밸런서로, AWS가 업그레이드와 유지 보수를 책임집니다. 자체 로드 밸런서를 마련하는 것보다 비용이 저렴하고, 확장성 측면에서도 더 효율적입니다. ELB는 EC2 인스턴스, 스케일링 그룹, Amazon ECS, 인증서 관리(ACM), CloudWatch, Route53, WAF, Global Accelerator 등 여러 AWS 서비스와 통합되어 있습니다.
로드 밸런서는 EC2 인스턴스의 상태를 확인하여 올바르게 작동하지 않는 인스턴스로는 트래픽을 보내지 않습니다. 상태 확인은 포트와 라우트를 통해 이루어집니다. 예를 들어, HTTP 프로토콜의 포트 4567과 /health
엔드포인트를 통해 상태를 확인할 수 있습니다. 만약 EC2 인스턴스가 HTTP 상태 코드 200으로 응답하지 않으면 해당 인스턴스는 비정상 상태로 간주되어 트래픽이 전달되지 않습니다.
AWS에는 네 가지 관리형 로드 밸런서가 있습니다.
로드 밸런서는 HTTP나 HTTPS를 통해 어디서든 접근이 가능합니다. 따라서 보안 그룹의 규칙을 적절히 설정하는 것이 중요합니다. EC2 인스턴스는 로드 밸런서를 통해 들어오는 트래픽만을 허용하도록 보안 그룹을 구성해야 합니다. 이를 통해 강화된 보안 메커니즘을 제공할 수 있습니다.
로드 밸런서는 서버 부하를 효율적으로 분산시켜 시스템의 성능과 안정성을 높이는 핵심 기술입니다. AWS의 일래스틱 로드 밸런서를 활용하면 손쉽게 로드 밸런싱을 구현할 수 있으며, 다양한 AWS 서비스와의 통합을 통해 더욱 강력한 기능을 제공받을 수 있습니다. 로드 밸런서를 사용함으로써 확장성, 가용성, 보안성 모두를 향상시킬 수 있습니다.