강좌
클라우드/리눅스에 관한 강좌입니다.
클라우드 분류

[KT클라우드]Load Balancer 기타가이드

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

Load Balancer IP(VIP)의 멀티포트 설정
멀티포트(1 개 VIP 에 대해 여러 개의 서비스 포트 설정) 지원
KT Cloud 로드밸런서는 로드밸런서가 사용하는 하나의 가상 IP(VIP)에 동시에 여러 개의 서비스 포트를 지정할 수 있습니다.
  • 위 그림은 멀티포트를 사용하는 적절한 예 중 하나로 실제 사용하시는 방식에 따라 다양한 형태로 구성될 수 있습니다.
  • 고객이 서비스 영역 내에서 웹 서비스를 http와 https를 동시에 운영 하고자 할 때, 로드밸런서에 동일한 VIP를 사용하고 PORT 숫자(e.g. 80/443)를 구분하여 back-end 서버와 매핑할 수 있습니다.
  • 같은 방식으로 전혀 다른 웹 서비스를 운영하면서 동일한 VIP를 사용하게 하고자 할 때에도 PORT 번호를 달리하여 사용할 수 있습니다.
  • 주의사항은 로드밸런서 신규 생성 시 같은 VIP에 같은 PORT가 중복이 되어서는 안됩니다.
  • 즉, VIP상위의 네트워크인 인터넷-로드밸런서 구간 사이에서는 IP와 PORT를 동시에 중복시킬 수 없습니다.
TCP OFFLOAD
TCP Multiplexing을 사용한 TCP Offload
KT Cloud 로드밸런서는 클라이언트의 전송 계층(TCP/IP)에 대한 요청을 back-end 서버를 대신하여 수행하며, 재사용 가능한 연결 유지 풀을 관리 합니다.
상세한 수행 과정은 다음과 같습니다.
  • 새로운 클라이언트 요청이 들어오면 로드밸런서는 직접 클라이언트와 3-way handshake를 진행하고, 풀 안에서 사용 가능한 back-end 연결 정보가 있는지 확인합니다.
  • back-end에 대한 연결(Connection)이 풀 안에서 사용 가능한 경우, 해당 연결을 통해 고객의 요청 처리요청을 보내고 처리 받은 데이터를 서버에서 받아 와 클라이언트에 전달합니다.
  • 만약, 풀 안에 사용 가능한 연결이 존재하지 않는 경우, 로드밸런서가 back-end 서버와 새 연결을 생성합니다.
  • 기존 연결을 재사용하거나 새로운 연결을 생성하고 해당 연결에 대한 요청 처리가 종료 되면, 해당 연결은 연결 유지 풀안에 일정 시간 유지되며 새로운 요청이 들어왔을 때 지속적으로 재사용합니다.
이와 같은 TCP Multiplexing 기술을 사용한 TCP Offload 수행과정은 클라이언트의 요청을 최적화 할 수 있습니다.
이 최적화는 TCP 연결을 진행하는 전송계층(Transport Layer)과 데이터를 교환하는 응용계층(Application Layer) 데이터에 대한 간섭을 최소화 할 수 있습니다.
기존 웹 서버가 처리해야 했던 전송 계층(TCP/IP)의 프로세스를 로드밸런서에 넘기게 되어(Offload) back-end 서버의 CPU 사용률을 현저히 낮추는 효과를 기대할 수 있습니다.
이 기능은 HTTP 로드밸런서 사용 시 자동으로 적용 되며, back-end 서버에서 OS 종류에 따라 아래의 환경 설정을 적용 하시기 바랍니다.
웹 서버에 TCP Offload 설정하기
MS Windows Server (IIS 7.0)
  • [서버 관리자] 실행 - [역할] 선택 - [IIS(인터넷 정보 서비스 관리자)] 선택 - 적용하고자하는 사이트 영역 선택 - [홈] 대쉬보드 에서 [HTTP 응답헤더] 선택 - [일반적인 헤더 설정] 선택 - 'HTTP 연결 유지' 선택 후 저장
Linux OS(Apache 2.0)
  • /etc/apache2/apache2.conf 에서 다음과 같이 설정합니다. (configuration 파일 경로는 설치 방법에 따라 다소 차이가 있을 수 있습니다.)
  • KeepAlive On
  • 설정 파일 편집 후, 데몬을 재기동해야 변경 사항이 정상적으로 적용 됩니다.
- Apache 1.3 이전 버전의 경우
  • StartServers 256
  • MinSpareServers 50
  • MaxSpareServers 100
  • ServerLimit 8192
  • MaxClients 5000
  • MaxRequestsPerChild 4000
- Apache 2.x 이후 버전의 경우
  • MaxRequestsPerChild 30
  • KeepAliveTimeout 5
X-Forwarded Header
개요
HTTP 헤더는 클라이언트의 요청에 대한 메타 정보를 포함하고 있습니다. HTTP 헤더에 대한 필드(Field) 종류는 표준/비표준을 혼용하여 사용할 수 있습니다.
클라이언트의 요청은 로드밸런서와 같은 프록시(Proxy)환경에서 클라이언트 IP(CIP)를 구분해야 하는 경우가 존재할 수 있습니다. 이에 대해 오랜 기간동안 클라이언트 IP정보를 담을 수 있는 Forwarded 헤더를 비표준으로 사용해 왔으며, 현재 사실상 표준(De Facto Standard)으로 인정 받고 있으며 RFC 7239로 정의 되어 있습니다.
  • KT Cloud 로드밸런서는 back-end 서버에 클라이언트의 요청을 전달할 때, 클라이언트의 요청을 받아 출발지 IP나 프로토콜에 대한 내용을 X-Fowarded 헤더로 저장하여 전달합니다.
X-Fowarded-For
X-Forwarded-For 헤더의 필드값 을 확인하여 클라이언트 IP를 확인할 수 있습니다.
로드밸런서는 클라우드 서버에서 최소의 세션으로 클라이언트의 요청에 응답할 수 있도록 세션을 새로 만들어 사용합니다.
서버에서 로드밸런서가 아닌 클라이언트의 IP를 확인할 수 있도록, 로드밸런서는 클라이언트 IP주소를 헤더에 저장하여 서버로 전달합니다.
X-Forwarded-For 헤더의 형식은 다음과 같습니다.
X-Forwarded-For: <client ip address>
X-Fowarded-Proto (지원예정)
X-Forwarded-Proto 헤더의 필드값 을 확인하여 클라이언트와 로드밸런서 간 사용된 프로토콜(HTTP 또는 HTTPS)를 확인할 수 있습니다.
이를 통해 최초 클라이언트가 요청한 프로토콜을 확인할 수 있습니다.
단, 로드밸런서의 타입을 SSL인증서를 로드밸런서에 직접 등록하는 HTTPS 방식으로 사용하시는 경우, back-end 서버에서는 X-Forwarded-Proto 헤더 안에 HTTP로 확인 됩니다.
X-Forwarded-Proto 헤더 형식은 다음과 같습니다.
X-Forwarded-Proto: <client origin protocol>

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  97 명