OpenStack 클라우드 NGINX Load Balancer

애플리케이션의 성능과 탄력성은 사용하는 클라우드 Load Balancer에 따라 크게 달라집니다. 이 포스트에서는 NGINX Plus가 OpenStack 에 배포하는 애플리케이션에 고급 Load Balancing을 제공하는 방법에 대해 설명합니다. 또한 NGINX Plus와 OpenStack 의 기본 제공 Load Balancer를 비교합니다. 이 포스트의 마지막에는 기본 제공 OpenStack 오케스트레이션 서비스인 Heat를 사용하여 웹 애플리케이션의 Load Balancing을 위해 NGINX Plus를 배포하고 구성하는 방법을 보여드립니다.

점점 더 많은 조직이 클라우드 컴퓨팅을 도입하고 있습니다. 애플리케이션을 클라우드로 이전하면 비용 절감과 민첩성 등 여러 가지 이점이 있습니다. 하지만 동시에 어려운 작업이 될 수도 있습니다.

많은 조직이 퍼블릭 클라우드 제품을 사용하는 대신 사내 또는 클라우드 제공업체에서 호스팅하는 자체 Private 클라우드를 구축하기로 선택합니다. 조직이 Private 클라우드를 효과적으로 구축하고 관리할 수 있는 Open Source 소프트웨어를 보유하는 것은 매우 중요합니다. OpenStack 이 바로 그러한 소프트웨어입니다. 전 세계에 걸쳐 거대한 사용자 커뮤니티를 보유한 많은 기업과 개인의 공동 개발 노력의 산물입니다.

목차

1. 내장형 OpenStack Load Balancer, LBaaS
2. OpenStack Load Balancer로 NGINX Plus를 선택해야 하는 이유는 무엇인가요?
2-1. LBaaS API와 NGINX Plus의 기능 비교
2-2. 유연한 배포 옵션
2-3. DevOps 친화적 구성
2-4. 이식성 및 재사용성
2-5. Microservices 환경에서의 Service Discovery
3. 예시 – OpenStack Heat로 NGINX Plus 배포하기
4. 요약

1. 내장형 OpenStack Load Balancer, LBaaS

OpenStack 의 기본 제공 클라우드 Load Balancer는 Neutron 프로젝트의 Load Balancer as a Service(LBaaS)입니다. LBaaS는 Load Balancing을 구성하기 위한 API를 정의합니다. 공급업체는 사용자가 특정 Load Balancer를 사용하기 위해 설치 및 구성하는 특수 드라이버를 생성하여 클라우드 Load Balancer를 LBaaS와 통합할 수 있습니다. OpenStack 은 HAProxy Load Balancer용 드라이버의 기본 참조 구현을 제공합니다.

올해 초 고급 HTTP Load Balancing 기능이 추가된 버전 2로 발전한 LBaaS API입니다. 이제 기본 구현은 Octavia 프로젝트에서 제공하며, Load Balancing 배포에 견고성과 유연성을 더했습니다.

2. OpenStack Load Balancer로 NGINX Plus를 선택해야 하는 이유는 무엇인가요?

고급 기능, 고성능, 유연한 배포 및 구성 옵션 등 OpenStack 에서 애플리케이션을 위한 클라우드 Load Balancer로 NGINX Plus를 사용하면 여러 가지 이점이 있습니다.

2-1. LBaaS API와 NGINX Plus의 기능 비교

표는 NGINX Plus와 LBaaS API의 Load Balancing 기능을 비교한 것입니다.

특징NGINX PlusLBaaS v2
HTTP Load Balancing
TCP Load Balancing
UDP Load Balancing
Content 기반 라우팅 1
세션 지속성
SSL/TLS Termination
A/B Testing
고급 연결 및 요청 제한
고급 Health Checks
인증 및 Access 제어
로깅 및 모니터링
URL 재작성(Rewrite)
Web Application Firewall (WAF)

1 Host 헤더, 쿠키 또는 URI와 같은 HTTP 요청 헤더의 값을 기반으로 라우팅합니다.

표에서 볼 수 있듯이 NGINX Plus에는 LBaaS에 없는 몇 가지 중요한 Load Balancing 기능이 포함되어 있습니다.

  • 고급 애플리케이션 Health Check – NGINX Plus는 애플리케이션 Backend 서버의 상태를 지속적으로 확인하고 상태가 좋지 않은 Backend로의 클라이언트 요청 전송을 즉시 중단하여 클라이언트가 오류를 발생하지 않도록 보장합니다. NGINX Plus는 Backend에 가상 요청을 보내고 각 Backend의 정상 응답을 예상하여 Health Check을 수행합니다. Synthetic 요청과 정상적인 응답은 HTTP 및 TCP/UDP Load Balancing 모두에 대해 구성할 수 있습니다. Health Check 응답 헤더와 본문에서 특정 문자열 값을 검사하거나 Health Check 요청 헤더를 설정하는 기능(HTTP Load Balancing의 경우)과 같은 고급 Health Check은 LBaaS에서 사용할 수 없습니다.
  • 고급 HTTP Load Balancing – NGINX Plus는 HTTP Load Balancing에 탁월합니다. 헤더, URI, Source IP 주소 등과 같은 요청 매개변수의 값을 기반으로 Load Balancing 결정을 구성할 수 있습니다. 최근 LBaaS에 추가된 Layer 7 규칙을 통해 콘텐츠 기반 라우팅을 구성할 수 있지만, URL 재작성(Rewrite) 및 헤더 조작과 같은 고급 기능은 사용할 수 없습니다.
  • 고급 연결 및 요청 제한 – NGINX Plus에서 제공되는 연결 및 요청 제한 기능을 사용하면 애플리케이션에 대한 DDoS 공격을 완화할 수 있습니다.
  • 인증 및 Access 제어 – 애플리케이션에 보안을 강화하기 위해 NGINX Plus는 JSON Web Token(JWT) 지원을 비롯한 여러 인증 메커니즘을 제공합니다. 또한 NGINX Plus는 인증 요청을 외부 서비스로 전달할 수 있습니다. 예를 들어, NGINX Plus를 Microsoft® Windows® Server Active Directory와 통합할 수 있습니다. 또한 클라이언트 IP 주소 또는 클라이언트 요청 헤더의 기타 값(예: 사용자 Agent)을 기반으로 애플리케이션에 대한 Access를 제어할 수도 있습니다.
  • 로깅 및 모니터링 – NGINX Plus 실시간 Activity 모니터링 API와 대시보드는 애플리케이션의 성능을 반영하는 실시간 지표를 제공합니다. 최근 NGINX Plus 및 NGINX Open Source 모니터링을 위한 새로운 제품인 NGINX Amplify의 베타 버전을 발표했습니다.
  • Web Application Firewall (WAF) – NGINX Plus 은 다양한 공격으로부터 애플리케이션을 보호하는 데 도움이 되는 Web Application Firewall(WAF)을 도입했습니다.
  • A/B Testing – NGINX Plus는 애플리케이션의 A/B 테스트를 단순화합니다.

NGINX Plus는 웹 서버이자 캐시이기도 합니다. NGINX Plus가 정적 파일을 제공하고 Backend의 응답을 캐싱하여 애플리케이션의 성능을 크게 향상시킬 수 있습니다.

2-2. 유연한 배포 옵션

소프트웨어 Load Balancer인 NGINX Plus는 배포 옵션이 유연합니다. 엄청난 수의 요청을 처리하는 동시에 시스템 Footprint가 적기 때문에 상용 하드웨어나 가상 머신 또는 컨테이너에서도 실행할 수 있습니다.

NGINX Plus는 keepalived와 함께 VRRP를 사용하여 고가용성 배포를 지원합니다.

2-3. DevOps 친화적 구성

텍스트 구성 파일을 작성하여 NGINX Plus를 구성하면 Chef, Ansible 또는 Puppet과 같은 자동화 소프트웨어로 구성 프로세스를 자동화할 수 있습니다. 이 포스트의 마지막에는 기본 제공 OpenStack 오케스트레이션 서비스인 Heat를 사용하여 NGINX Plus를 배포하고 구성하는 방법을 보여드립니다.

또한 NGINX Plus에는 동적 재구성 API가 함께 제공되므로 간단한 HTTP API를 통해 Upstream 그룹에서 Backend 서버를 추가하거나 제거할 수 있습니다.

2-4. 이식성 및 재사용성

NGINX Plus를 사용하면 플랫폼별 Load Balancing API에 종속되지 않습니다. OpenStack 에서 다른 클라우드 플랫폼으로 전환하거나 여러 플랫폼을 동시에 사용하는 경우, 모든 플랫폼에서 Load Balancing 구성을 재사용할 수 있습니다.

2-5. Microservices 환경에서의 Service Discovery

Service Discovery은 Microservices 애플리케이션을 구축할 때 매우 중요합니다. NGINX Plus는 DNS 기반 Service Discovery을 완벽하게 지원합니다. DNS 프로토콜을 통해 Backend 서버의 IP 주소를 동적으로 검색할 수 있습니다. 나중에 IP 주소가 변경되면 NGINX Plus는 자동으로 모든 업데이트를 수신합니다. NGINX Plus 릴리스 9 이상은 DNS SRV 레코드를 지원하므로 IP 주소와 함께 포트를 검색할 수 있습니다. 이 기능은 Service Discovery을 위해 Consul 또는 SkyDNS를 사용하는 경우 매우 유용합니다.

3. 예시 – OpenStack Heat로 NGINX Plus 배포하기

자동화 소프트웨어를 통해 NGINX Plus를 OpenStack 용 클라우드 Load Balancer로 배포하고 구성하는 방법의 예로, 여기서는 OpenStack Heat를 사용하여 NGINX Plus를 배포하는 방법을 보여드립니다. Heat를 사용하여 배포하는 간단한 웹 애플리케이션의 Load Balancing을 위해 NGINX Plus를 구성합니다. Github Repository에서 예제 실행을 위한 지침과 함께 Heat 템플릿을 찾을 수 있습니다.

예제를 실행하면 Heat는 다음 단계를 수행합니다.

1. 두 개의 기본 이미지를 생성합니다.

  1. 웹 애플리케이션이 설치된 기본 이미지
  2. NGINX Plus가 설치된 기본 이미지

2. 웹 애플리케이션 기본 이미지를 사용하여 3개의 가상 머신(또는 인스턴스)을 생성하여 웹 애플리케이션을 배포합니다.

3. Load Balancing을 배포하고 구성합니다.

  1. NGINX Plus 기본 이미지를 사용하여 인스턴스를 생성합니다.
  2. 들어오는 요청을 웹 애플리케이션 인스턴스 간에 분산하도록 NGINX Plus를 구성합니다.
  3. 인스턴스에 공용 플로팅 IP 주소를 연결하여 외부 클라이언트가 액세스할 수 있도록 합니다.

아래 다이어그램은 Heat가 실행된 후의 배포를 보여줍니다.

Diagram shows the topology of a OpenStack cloud computing deployment, where NGINX Plus is the cloud load balancer for three backend servers

테스트한 것처럼 NGINX Plus는 클라이언트의 요청을 Backend 인스턴스 간에 분산합니다.

이 예제에서는 웹 애플리케이션의 각 인스턴스가 어떻게 작동하는지 확인할 수 있는 실시간 Activity 모니터링 대시보드를 제공하도록 NGINX Plus를 구성했습니다. 대시보드는 포트 8080에 있는 NGINX Plus 인스턴스의 공용 IP 주소를 통해 액세스할 수 있습니다.

After you use OpenStack Heat to deploy NGINX Plus as the load balancer in your OpenStack cloud computing infrastructure, NGINX Plus instances appear on the live activity monitoring dashboard

이 예제에서 중요한 부분은 웹 애플리케이션을 확장하는 것입니다. 이를 위해 Heat를 사용합니다. 애플리케이션을 확장한 후 NGINX Plus가 즉시 재구성됩니다. 이 작업은 동적 재구성 API를 통해 NGINX Plus와 함께 설치된 간단한 Python 스크립트에 의해 수행됩니다. 이 스크립트는 웹 애플리케이션의 인스턴스 수를 지속적으로 모니터링하고 해당 인스턴스가 NGINX Plus 구성에 존재하는지 확인합니다.

Python 스크립트를 포함한 모든 샘플 파일은 Github Repository에서 사용할 수 있습니다. Devstack 환경을 사용하여 로컬에서 예제를 실행할 수 있습니다.

4. 요약

OpenStack 은 클라우드 컴퓨팅의 강력한 성능을 데이터센터에 제공합니다. 개발자 및 사용자로 구성된 방대한 커뮤니티와 상업적 지원을 제공하는 많은 회사를 통해 Private 클라우드를 효과적으로 구축하고 관리할 수 있습니다. 많은 고객이 애플리케이션을 클라우드로 이전하고 있습니다. 이들은 고급 기능, 배포 및 구성의 유연성, 고성능으로 인해 OpenStack LBaaS 또는 AWS ELB와 같은 다른 클라우드 Load Balancer 대신 NGINX Plus를 선택합니다.

OpenStack 배포에서 NGINX Plus를 직접 사용해 보거나 테스트해 보려면 지금 30일 무료 평가판을 신청하거나 사용 사례에 대해 최신 소식을 빠르게 전달받고 싶으시면 아래 뉴스레터를 구독하세요.