Sun Java System Application Server 9.1 고가용성 관리 설명서

5장 HTTP 로드 균형 조정 구성

이 장에서는 HTTP 로드 밸런서 플러그인에 대해 설명합니다. 다음 항목으로 구성됩니다.

다른 유형의 로드 균형 조정에 대한 자세한 내용은 10 장, Java Message Service 로드 균형 조정 및 페일오버11 장, RMI-IIOP 로드 균형 조정 및 페일오버을 참조하십시오.

이 절에서는 Application Server에 포함된 HTTP 로드 균형 조정 플러그인을 사용하는 방법에 대해 설명합니다. 또 다른 HTTP 로드 균형 조정 옵션은 하드웨어 기반 로드 균형 조정 솔루션을 위해 Application Server와 함께 Sun Secure Application Switch를 사용하는 것입니다. 이 솔루션을 구성하는 방법에 대한 자습서는 Clustering and Securing Web Applications: A Tutorial 기사를 참조하십시오.

로드 밸런서 플러그인의 새로운 기능

Sun Java System Application Server 9.1에서는 로드 밸런서의 기능이 더욱 강화되어, 다음과 같은 기능을 통한 향상된 유연성 및 사용 편의성을 제공합니다.

자동 적용

Application Server에서는 관리 콘솔에서 수행한 로드 밸런서의 구성 변경 내용을 자동으로 웹 서버 구성 디렉토리로 전송할 수 있습니다. 이전 버전의 Application Server에서는 로드 밸런서 구성을 내보낸 후 웹 서버 구성 디렉토리로 다시 복사해야 했습니다.

가중 라운드 로빈

로드 밸런서를 사용하면 HTTP 요청 배포를 향상시킬 수 있습니다. 관리자는 '가중치'라는 속성을 사용하여 요청이 비례적으로 인스턴스에 라우팅되는 방법을 지정할 수 있습니다. 예를 들어 클러스터에 두 개의 인스턴스가 있고 관리자가 인스턴스 x에 가중치 100을, 인스턴스 y에 가중치 400을 할당했다고 가정하면100개의 요청 중 20개는 인스턴스 x로 가고 80개는 인스턴스 y로 갑니다.

사용자 정의 로드 균형 조정

Application Server에서는 관리자가 HTTP 요청 배포 정책을 사용자 정의할 수 있습니다. 사용자 정의 정책은 로드 밸런서 플러그인이 사용해야 할 로드 균형 조정 알고리즘을 정의합니다. 즉, HTTP 요청을 처리할 Application Server 인스턴스를 관리자가 정의할 수 있습니다. 이 기능을 사용하려면 공유 라이브러리를 개발해야 하는데, 이 라이브러리는 라이브러리에 제공된 들어오는 요청의 헤더를 특정 기준에 따라 평가하고 요청을 처리할 수 있는 인스턴스를 선택하는 등의 용도로 사용됩니다. 로드 밸런서가 이 공유 라이브러리를 로드합니다.

공유 라이브러리는 appserver_install_dir/lib/install/templates에서 찾을 수 있는 loadbalancer.h에 정의된 대로 인터페이스를 구현해야 합니다.

또한 Application Server는 기본 라운드 로빈 알고리즘을 구현하는 샘플 모듈 roundrobin.c와 함께 제공됩니다. 관리자는 이 샘플 모듈을 템플리트로 사용하여 공유 라이브러리를 구성할 수 있습니다. 이 샘플 모듈은 appserver_install_dir/lib/install/templates에서도 찾을 수 있습니다.

Procedure사용자 정의 로드 균형 조정 구성

  1. appserver_install_dir/lib/install/templatesroundrobin.c를 작업 디렉토리(예: /home/user/workspacelb)로 복사합니다.

  2. roundrobin.c를 ANSI C/C++ 컴파일러(예: Sun Studio 컴파일러 또는 GCC)로 컴파일합니다. 정적 실행 파일이 아니라 동적 공유 라이브러리를 빌드해야 합니다.

    1. Sun Studio CC 컴파일러를 사용하는 경우 다음 명령을 사용하여 컴파일합니다.

      cc -G -I<appserver install dir>/lib/install/templates roundrobin.c -o roundrobin.so
    2. GCC를 사용하는 경우 다음 명령으로 공유 라이브러리를 컴파일합니다.

      gcc -shared -I<appserver install dir>/lib/install/templates 
      roundrobin.c -o roundrobin.so

      주 –

      재배치 오류가 발생하면 "-fPIC" 옵션을 사용하여 다시 컴파일합니다. 명령은 다음과 같습니다.

      gcc -shared -fPIC -I <appserver install dir>/lib/install/templates 
      roundrobin.c -o roundrobin.so

      Microsoft Windows의 경우 http://www.redhat.com/services/custom/cygwin에서 Cygwin 유틸리티를 다운로드합니다. 이 유틸리티에는 GCC가 번들로 함께 제공됩니다. 다음 GCC 명령을 사용하여 동적 링크 라이브러리(dll)를 만듭니다.

      gcc -shared -I<appserver_install_dir>/lib/install/templates 
      roundrobin.c -o roundrobin.dll
  3. loadbalancer.xml이 새로 빌드된 모듈을 가리키도록 변경합니다. 편집한 후 loadbalancer.xml은 다음과 같습니다.

    <cluster name="cluster1" policy="user-defined" 
    policy-module="home/user/workspacelb/roundrobin.so">
  4. roundrobin.so를 웹 서버 인스턴스 디렉토리로 복사합니다.

  5. 웹 서버를 시작하거나(실행 중이 아닐 경우) 로드 밸런서가 다시 구성될 때까지 기다립니다.

HTTP 로드 밸런서 작동 방식

로드 밸런서는 여러 Application Server 인스턴스(독립 실행형 또는 클러스터링) 간에 작업 로드를 균일하게 분산시켜 시스템의 전반적인 처리량을 늘립니다.

HTTP 로드 밸런서를 사용하면 Java EE Application Server에 배포된 서비스의 고가용성을 구현할 수 있습니다. 로드 밸런서는 원래 서비스를 제공하던 인스턴스가 사용 불가능한 상태이거나 상태가 좋지 않아 요청을 처리할 수 없는 상태임을 발견하면 세션 요청을 다른 서버 인스턴스로 페일오버합니다. HTTP 세션 정보를 유지하려면 클러스터 프로필을 사용하고, HADB가 설치 및 설정되고, HTTP 세션 지속성이 구성되어야 합니다. 자세한 내용은 9 장, 고가용성 세션 지속성 및 페일오버 구성을 참조하십시오.


주 –

로드 밸런서는 8k보다 큰 URI/URL을 처리하지 않습니다.


HTTP 로드 균형 조정 알고리즘

Sun Java System Application Server 로드 밸런서는 기본적으로 고정 라운드 로빈 알고리즘을 사용하여 들어오는 HTTP 및 HTTPS 요청의 로드 균형을 조정합니다.

새 HTTP 요청이 로드 밸런서 플러그인으로 보내지면 경량 라운드 로빈 체계에 따라 Application Server 인스턴스로 전달됩니다. 세션 기반 응용 프로그램용 요청의 경우 새 세션에 대한 요청도 포함됩니다. 동일한 클라이언트의 동일한 세션 기반 응용 프로그램에 대한 후속 요청은 할당된 요청 또는 고정 요청으로 간주되어 로드 밸런서에 의해 같은 인스턴스로 라우팅됩니다. 따라서, 고정 라운드 로빈이라는 이름이 사용됩니다. 비 세션 기반 응용 프로그램에 대한 요청과 세션 기반 응용 프로그램에 대한 첫 요청을 할당되지 않은 요청이라고 합니다. 고정은 쿠키 또는 명시적 URL 다시 쓰기를 사용하여 구현됩니다. 로드 밸런서는 고정 방법을 자동으로 결정합니다.

로드 밸런서 플러그인은 다음 방법을 사용하여 세션 고정을 판별합니다.

고정 정보를 사용해서 로드 밸런서 플러그인은 먼저 이전에 요청을 전달했던 인스턴스를 판별합니다. 해당 인스턴스가 정상일 경우 로드 밸런서 플러그인은 특정 Application Server 인스턴스에 그 요청을 전달합니다. 따라서 지정한 세션의 모든 요청이 동일한 Application Server 인스턴스로 전달됩니다.

HTTP 로드 균형 조정 설정

이 절에서는 로드 밸런서 플러그인을 설정하는 방법을 설명하며 다음 내용으로 구성됩니다.

로드 균형 조정 설정을 위한 필수 조건

로드 밸런서를 구성하기 전에 다음을 수행해야 합니다.


주 –

Application Server 인스턴스와 로드 밸런서가 여러 네트워크 도메인에 설치되는 배포 환경에서는 --agentproperties 옵션으로 정규화된 도메인 이름을 지정하여 노드 에이전트를 생성해야 합니다. 예: asadmin create-node-agent --agentproperties remoteclientaddress=machine1.server.example.com test-na이 명령에 대한 자세한 내용은 create-node-agent(1)를 참조하십시오.


로드 균형 조정 설정 절차

관리 콘솔 GUI 또는 asadmin 도구를 사용하여 사용자 환경에 로드 균형 조정을 구성합니다. 다음 절에서 자세한 정보를 제공합니다.

Procedure관리 콘솔을 사용하여 로드 균형 조정 설정

  1. 로드 밸런서 구성을 만듭니다.

    관리 콘솔의 왼쪽 프레임에서 HTTP 로드 밸런서를 누른 다음 새로 만들기를 누릅니다. 새 HTTP 로드 밸런서 페이지에서 장치 세부 사항을 제공하고 대상 클러스터 또는 인스턴스를 선택합니다.

  2. 로드 밸런서가 관리할 클러스터 또는 독립 실행형 서버 인스턴스에 대한 참조를 추가합니다.

    관리 콘솔을 사용하여 이 작업을 수행하려면 왼쪽 프레임에서 HTTP 로드 밸런서 노드를 누른 다음 노드 아래에 나열된 로드 밸런서 중 원하는 로드 밸런서를 누릅니다. 대상 탭에서 대상 관리를 누르고 대상 관리 페이지에서 필요한 대상을 선택합니다.

    대상과 함께 로드 밸런서 구성을 만들었고 그 대상이 로드 밸런서가 참조하는 클러스터나 독립 실행형 서버 인스턴스일 경우 이 단계를 생략합니다.

  3. 로드 밸런서에서 참조하는 클러스터 또는 독립 실행형 서버 인스턴스를 활성화합니다.

    관리 콘솔을 사용하여 독립 실행형 서버 인스턴스를 활성화하려면 왼쪽 프레임에서 HTTP 로드 밸런서 노드를 누른 다음 노드 아래에 나열된 로드 밸런서 중 원하는 로드 밸런서를 누릅니다. 대상 탭을 열고 대상 테이블에서 활성화할 인스턴스 옆의 확인란을 누른 다음 활성화를 누릅니다.

    클러스터에서 서버 인스턴스를 활성화하려면 위의 설명에 따라 로드 밸런서를 선택하고 대상 탭에서 원하는 클러스터를 누릅니다. 이제 인스턴스 탭을 열고, 원하는 인스턴스를 선택한 다음 로드 밸런서 작업 드롭다운 목록에서 로드 균형 조정 활성화를 선택합니다.

    클러스터 또는 독립 실행형 인스턴스를 활성화하는 명령은 asadmin enable-http-lb-server입니다.

  4. 로드 균형 조정을 위해 응용 프로그램을 활성화합니다.

    관리 콘솔을 사용하여 이 작업을 수행하려면 위의 설명에 따라 대상 탭을 열고 필요한 클러스터를 누릅니다. 이제 응용 프로그램 탭을 열고 원하는 응용 프로그램을 선택한 다음 추가 작업 드롭다운 목록에서 로드 밸런서 활성화를 선택합니다.

    로드 밸런서에서 참조하는 클러스터나 독립 실행형 인스턴스에서 사용할 수 있도록 응용 프로그램을 이미 배포하여 활성화되어 있어야 합니다. 로드 균형 조정을 위한 응용 프로그램 활성화는 사용을 위한 활성화와 다른 단계입니다.

  5. 상태 검사기를 만듭니다.

    관리 콘솔을 사용하여 이 작업을 수행하려면 이전 단계의 설명에 따라 로드 밸런서의 대상 탭을 열고 대상 테이블에서 상태 검사기 편집을 누릅니다.

    상태 검사기는 비정상적인 서버 인스턴스가 다시 정상적이 되면 로드 밸런서가 새로운 요청을 전송할 수 있도록 이들을 모니터링합니다.


    주 –

    Sun Java System Web Server(6.1 또는 7.0)를 사용하는 경우에는 단계 6 및 7을 수행하는 대신, 로드 밸런서 구성 파일을 생성하고 데이터를 Web Server로 전송하는 작업을 한 단계로 수행할 수 있습니다.

    관리 콘솔을 사용하여 이 작업을 수행하려면 원하는 로드 밸런서를 누르고 내보내기 탭을 엽니다. 이 탭에서 지금 변경 사항 적용을 누릅니다. 그러면 Web Server 구성 디렉토리로 데이터가 전송됩니다.


  6. 로드 밸런서 구성 파일을 생성합니다.

    관리 콘솔을 사용하여 이 작업을 수행하려면 로드 밸런서를 누르고 내보내기 탭을 엽니다. 이 탭에서 지금 내보내기를 누릅니다.

    이 명령을 사용하면 Sun Java System Application Server에 포함되어 있는 로드 밸런서 플러그인과 함께 사용할 수 있는 구성 파일이 생성됩니다.

  7. 로그 밸런서 플러그인 구성 파일이 저장되는 웹 서버 config 디렉토리로 로드 밸런서 구성 파일을 복사합니다.


    주 –

    로드 밸런서 구성 파일을 자동으로 생성하고 Web Server로 데이터를 전송하는 작업을 한 단계로 수행하기 위해서는 Web Server에서 SSL 설정을 구성하고 DAS 인증서를 가져와야 합니다. Sun Java System Web Server 구성에 대한 자세한 내용은 Sun Java System Web Server 구성을 참조하십시오.


Procedureasadmin 도구를 사용하여 로드 균형 조정 설정

  1. 로드 밸런서 구성을 만듭니다.

    이 작업을 수행하려면 asadmin create-http-lb-config 명령을 사용합니다.


    주 –

    다음의 모든 단계(2-7 단계)를 asadmin 명령, create-http-lb 및 해당 옵션을 단 한번 사용하여 수행할 수 있습니다. 이 명령에 대한 자세한 내용은 create-http-lb(1)를 참조하십시오.


  2. 로드 밸런서가 관리할 클러스터 또는 독립 실행형 서버 인스턴스에 대한 참조를 추가합니다.

    asadmin create-http-lb-ref를 사용합니다. 이 명령에 대한 자세한 내용은 create-http-lb-ref(1)를 참조하십시오.

    대상과 함께 로드 밸런서 구성을 만들었고 그 대상이 로드 밸런서가 참조하는 클러스터나 독립 실행형 서버 인스턴스일 경우 이 단계를 생략합니다.

  3. 로드 밸런서에서 참조하는 클러스터 또는 독립 실행형 서버 인스턴스를 활성화합니다.

    이 작업을 수행하려면 asadmin enable-http-lb-server 명령을 사용합니다. 이 명령에 대한 자세한 내용은 enable-http-lb-server(1)를 참조하십시오.

  4. 로드 균형 조정을 위해 응용 프로그램을 활성화합니다.

    이 작업을 수행하려면 asadmin enable-http-lb-application 명령을 사용합니다. 이 명령에 대한 자세한 내용은 enable-http-lb-application(1)을 참조하십시오.

    로드 밸런서에서 참조하는 클러스터나 독립 실행형 인스턴스에서 사용할 수 있도록 응용 프로그램을 이미 배포하여 활성화되어 있어야 합니다. 로드 균형 조정을 위한 응용 프로그램 활성화는 사용을 위한 활성화와 다른 단계입니다.

  5. 상태 검사기를 만듭니다.

    이 작업을 수행하려면 asadmin create-http-health-checker 명령을 사용합니다. 이 명령에 대한 자세한 내용은 create-http-health-checker(1)를 참조하십시오.

    상태 검사기는 비정상적인 서버 인스턴스가 다시 정상적이 되면 로드 밸런서가 새로운 요청을 전송할 수 있도록 이들을 모니터링합니다.


    주 –

    Sun Java System Web Server(6.1 또는 7.0)를 사용하는 경우에는 단계 6 및 7을 수행하는 대신, 로드 밸런서 구성 파일을 생성하고 데이터를 웹 서버로 전송하는 작업을 한 단계로 수행할 수 있습니다.

    asadmin 도구를 사용하여 이 작업을 수행하려면 create-http-lb 명령의 --autoapplyenabled 옵션을 true로 설정합니다. 이 명령에 대한 자세한 내용은 create-http-lb(1)를 참조하십시오.


  6. 로드 밸런서 구성 파일을 생성합니다.

    이 작업을 수행하려면 asadmin export-http-lb-config 명령을 사용합니다. 이 명령에 대한 자세한 내용은 export-http-lb-config(1)를 참조하십시오. 이 명령을 사용하면 Sun Java System Application Server에 포함되어 있는 로드 밸런서 플러그인과 함께 사용할 수 있는 구성 파일이 생성됩니다.

  7. 로그 밸런서 플러그인 구성 파일이 저장되는 웹 서버 config 디렉토리로 로드 밸런서 구성 파일을 복사합니다.


    주 –

    로드 밸런서 구성 파일을 자동으로 생성하고 Web Server로 데이터를 전송하는 작업을 한 단계로 수행하기 위해서는 Web Server에서 SSL 설정을 구성하고 DAS 인증서를 가져와야 합니다. Sun Java System Web Server 구성에 대한 자세한 내용은 Sun Java System Web Server 구성을 참조하십시오.


HTTP 로드 밸런서 배포

다음 절에 설명된 것처럼 작업 목표 및 환경에 따라 여러 다른 방법으로 로드 밸런서를 구성할 수 있습니다.

클러스터링된 서버 인스턴스 사용

로드 밸런서를 배포하는 가장 일반적인 방법은 서버 인스턴스 클러스터를 사용하는 것입니다. 기본적으로 클러스터의 모든 인스턴스는 동일한 구성을 가지며 동일한 응용 프로그램이 배포됩니다. 로드 밸런서는 서버 인스턴스 간에 작업 로드를 분산시키며 상태가 나쁜 인스턴스에서 상태가 좋은 인스턴스로 요청이 페일오버됩니다. HTTP 세션 지속성을 구성한 경우 요청이 페일오버될 때 세션 정보가 유지됩니다.

클러스터가 여러 개인 경우 요청의 클러스터 간 로드 균형 조정은 가능하지만 페일오버는 단일 클러스터에 속한 인스턴스 사이에서만 가능합니다. 로드 밸런서의 여러 클러스터를 사용하여 응용 프로그램의 롤링 업그레이드를 쉽게 수행할 수 있습니다. 자세한 내용은 가용성 손실 없이 응용 프로그램 업그레이드 를 참조하십시오.


주 –

클러스터 및 독립 실행형 인스턴스 간에는 요청의 로드 균형이 조정될 수 없습니다.


여러 독립 실행형 인스턴스 사용

여러 독립 실행형 인스턴스를 사용하고 인스턴스 간에 로드 균형 조정 및 요청을 페일오버하도록 로드 밸런서를 구성할 수도 있습니다. 그러나 이 구성에서 독립 실행형 인스턴스가 동기종 환경을 가지며 동일한 응용 프로그램이 배포되도록 직접 확인해야 합니다. 클러스터는 자동으로 동기종 환경을 유지하므로 대부분의 환경에서는 클러스터를 사용하는 것이 더 쉽고 적절합니다.

로드 밸런서 구성

로드 밸런서 구성은 domain.xml 파일에 유지됩니다. 로드 밸런서 구성은 매우 유연합니다.

이 절에서는 로드 밸런서 구성을 만들고, 수정하고, 사용하는 방법에 대해 자세히 설명합니다.

DAS에서 HTTP 로드 밸런서 구성

Application Server 9.1에서 관리 콘솔 또는 asadmin 명령 create-http-lb를 사용하여 DAS에 로드 밸런서 구성을 만들 수 있습니다. 이 작업은 다음과 같은 단계로 수행됩니다. asadmin 명령 create-http-lb, delete-http-lblist-http-lbs에 대한 자세한 내용을 보려면 Sun Java System Application Server 9.1 Reference Manual을 참조하십시오.

관리 콘솔에서 왼쪽 프레임을 아래로 스크롤하여 HTTP 로드 밸런서 노드를 누른 다음 HTTP 로드 밸런서 페이지 오른쪽에서 새로 만들기를 누릅니다. 새 HTTP 로드 밸런서 페이지에서 로드 밸런서를 호스팅하는 시스템에 대해 다음과 같은 세부 사항을 제공합니다.

필드 

설명 

이름 

로드 밸런서 구성의 이름입니다. 

사용 가능 

로드 밸런서 구성 변경 내용을 자동으로 웹 서버 구성 디렉토리에 있는 물리적 로드 밸런서로 전송하려면 사용 가능 확인란을 누릅니다. 

호스트 

웹 서버 인스턴스가 설치된 서버입니다. 

관리 포트 

웹 서버 인스턴스에서 사용하는 관리 포트 번호입니다. 

프록시 호스트 

프록시 서버 인스턴스가 설치된 서버입니다. 

프록시 포트 

프록시 서버에서 사용하는 포트 번호입니다.  

asadmin 명령 create-http-lb-config를 사용하여 로드 밸런서 구성을 만들 수도 있습니다. 표 5–1에서 매개 변수에 대해 설명합니다. create-http-lb-config, delete-http-lb-configlist-http-lb-configs에 대한 자세한 내용은 Sun Java System Application Server 9.1 Reference Manual을 참조하십시오.

표 5–1 로드 밸런서 구성 매개 변수

매개 변수 

설명 

response timeout 

서버 인스턴스에서 응답을 반환해야 하는 시간(초)입니다. 기간 내에 응답을 받지 못하면 서버가 비정상인 것으로 간주됩니다. 기본값은 60입니다.

HTTPS routing 

로드 밸런서에 대한 HTTPS 요청으로 서버 인스턴스에 대한 HTTPS 또는 HTTP 요청이 발생하는지 여부입니다. 자세한 내용은 HTTPS 라우팅 구성을 참조하십시오.

reload interval 

로드 밸런서 구성 파일 loadbalancer.xml의 변경 사항을 확인하는 간격입니다. 변경 사항이 확인되면 구성 파일을 다시 로드합니다. 값 0은 다시 로드를 비활성화합니다. 자세한 내용은 동적 재구성 활성화를 참조하십시오.

monitor 

로드 밸런서에 대한 모니터링을 활성화할지 여부입니다. 

routecookie 

경로 정보를 기록할 때 로드 밸런서 플러그인에서 사용하는 쿠키 이름입니다. HTTP 클라이언트가 쿠키를 지원해야 합니다. 쿠키를 저장하기 전에 확인하도록 브라우저를 설정한 경우 쿠키 이름은 JROUTE입니다.

target 

로드 밸런서 구성의 대상입니다. 대상을 지정한 경우 대상에 대한 참조를 추가한 것과 같습니다. 클러스터나 독립 실행형 인스턴스가 대상이 될 수 있습니다.

HTTP 로드 밸런서 참조 만들기

로드 밸런서에 독립 실행형 서버나 클러스터에 대한 참조를 만들면 로드 밸런서를 통해 제어되는 대상 서버나 클러스터 목록에 해당 서버나 클러스터가 추가됩니다. 참조되는 서버 또는 클러스터가 활성화되어야 해당 요청의 로드 균형이 조정됩니다. 대상과 함께 로드 밸런서 구성을 만들었다면 해당 대상이 이미 참조로 추가되어 있습니다.

관리 콘솔을 사용하여 참조를 만들려면 왼쪽 프레임에서 HTTP 로드 밸런서 노드를 누른 다음 노드 아래에 나열된 로드 밸런서 중 원하는 로드 밸런서를 누릅니다. 대상 탭에서 대상 관리를 누르고 대상 관리 페이지에서 필요한 대상을 선택합니다. create-http-lb-ref를 사용하여 참조를 만드는 방법도 있습니다. 로드 밸런서 구성 이름과 대상 서버 인스턴스 또는 클러스터를 제공해야 합니다.

참조를 삭제하려면 delete-http-lb-ref를 사용합니다. 참조를 삭제하려면 disable-http-lb-server를 사용하여 참조된 서버나 클러스터를 비활성화해야 합니다.

이러한 명령에 대한 자세한 내용은 Sun Java System Application Server 9.1 Reference Manual을 참조하십시오.

로드 균형 조정을 위해 서버 인스턴스 활성화

서버 인스턴스나 클러스터에 대한 참조를 만든 후에 enable-http-lb-server를 사용하여 서버 인스턴스나 클러스터를 활성화합니다. 로드 밸런서 구성을 만들 때 서버 인스턴스나 클러스터를 대상으로 사용한 경우 이를 활성화해야 합니다. 관리 콘솔을 사용하여 이 작업을 수행하려면 왼쪽 프레임에서 HTTP 로드 밸런서 노드를 누른 다음 노드 아래에 나열된 로드 밸런서 중 원하는 로드 밸런서를 누릅니다. 이제 대상 탭을 열고 대상 테이블에서 활성화할 인스턴스 옆의 확인란을 누른 다음 활성화를 누릅니다.

이 명령에 대한 자세한 내용은 enable-http-lb-server(1)를 참조하십시오.

로드 균형 조정을 위해 응용 프로그램 활성화

로드 밸런서를 통해 관리되는 모든 서버는 동기종 구성을 가져야 하며 동일한 응용 프로그램들이 배포되어야 합니다. 응용 프로그램을 배포하고 액세스할 수 있도록 활성화한 경우(배포 단계 중 또는 이후에 발생함) 로드 균형 조정을 위해 응용 프로그램을 활성화해야 합니다. 로드 균형 조정을 위해 응용 프로그램을 활성화하지 않은 경우 응용 프로그램이 배포된 서버에 대한 요청은 로드 균형 조정되고 페일오버되더라도 이 응용 프로그램에 대한 요청은 로드 균형 조정되지 않고 페일오버됩니다.

응용 프로그램을 활성화할 경우 응용 프로그램 이름과 대상을 지정합니다. 로드 밸런서에서 여러 대상(예: 두 개의 클러스터)을 관리할 경우 모든 대상에서 응용 프로그램을 활성화합니다.

관리 콘솔을 사용하여 응용 프로그램을 활성화하려면 왼쪽 프레임에서 HTTP 로드 밸런서 노드를 누른 다음 노드 아래에 나열된 로드 밸런서 중 원하는 로드 밸런서를 누릅니다. 위의 설명에 따라 대상 탭을 열고 필요한 클러스터를 누릅니다. 이제 응용 프로그램 탭을 열고 원하는 응용 프로그램을 선택한 다음 추가 작업 드롭다운 목록에서 로드 밸런서 활성화를 선택합니다. 명령줄에서 이 작업을 수행하려면 asadmin enable-http-lb-application 명령을 사용합니다. 자세한 내용은 enable-http-lb-application(1)을 참조하십시오.

새로운 응용 프로그램을 배포할 경우 로드 균형 조정을 위해 응용 프로그램을 활성화하고 로드 밸런서 구성을 다시 내보내야 합니다.

HTTP 상태 검사기 만들기

로드 밸런서의 상태 검사기는 비정상으로 표시되는 모든 구성된 Application Server 인스턴스를 주기적으로 검사합니다. 상태 검사기는 필수가 아닙니다. 그러나 상태 검사기가 없거나 상태 검사기가 비활성화된 경우 비정상 인스턴스의 정기적인 상태 검사가 수행되지 않습니다. 로드 밸런서는 비정상 인스턴스가 정상이 되는 시점을 확인할 수 없습니다.

로드 밸런서의 상태 검사 메커니즘은 HTTP를 사용하여 Application Server 인스턴스와 통신합니다. 상태 검사기는 지정한 URL에 HTTP 요청을 보내고 응답을 기다립니다. HTTP 응답 헤더의 상태 코드가 100과 500 사이에 있으면 인스턴스가 정상임을 의미합니다.


주 –

로드 밸런서가 클라이언트 인증서 인증이 활성화된 보안 포트 사용 인스턴스가 있는 클러스터의 프런트엔드인 배포 시나리오에서는 상태 검사기가 인스턴스의 상태 검사를 수행할 수 없습니다. 따라서 해당 인스턴스는 항상 비정상 상태로 표시되고 요청이 전송되지 않습니다.


상태 검사기 만들기

상태 검사기 등록 정보를 지정하려면 관리 콘솔 또는 asadmin create-http-health-checker 명령을 사용할 수 있습니다. 관리 콘솔에서 이 작업을 수행하려면 HTTP 로드 밸런서 노드로 이동하여 노드를 확장하고 로드 밸런서를 선택합니다. 그런 다음 대상 탭을 열고 대상 테이블에서 원하는 대상의 상태 검사기 편집 링크를 누릅니다. 다음 매개 변수를 지정합니다.

표 5–2 상태 검사기 매개 변수

매개 변수 

설명 

기본값 

로드 밸런서 

선택한 서버를 로드 균형 조정에 사용할 수 있게 하려면 사용 가능 확인란을 누릅니다. 

False/사용 안 함 

비활성화 시간 초과 

이 서버가 비활성화된 후 정지 상태에 도달하는 데 걸리는 시간(분)입니다. 

30분 

url 

로드 밸런서가 검사하여 상태를 확인할 수신기의 URL을 지정합니다.  

“/” 

interval 

인스턴스의 상태 검사가 발생하는 간격(초)을 지정합니다. 0을 지정하면 상태 검사기가 비활성화됩니다. 

30초 

timeout 

수신기를 정상으로 간주하기 위해 응답을 받아야 하는 시간 초과 간격(초)을 지정합니다.  

10초 

Application Server 인스턴스가 비정상으로 표시되면 상태 검사기는 비정상 인스턴스를 폴링하여 인스턴스가 정상적으로 되었는지 확인합니다. 상태 검사기는 지정된 URL을 사용하여 모든 비정상 Application Server 인스턴스를 검사하고 정상 상태로 되었는지 확인합니다.

상태 검사기에 비정상 인스턴스가 정상이 되었음을 확인하면 해당 인스턴스는 정상 인스턴스 목록에 추가됩니다.

명령에 대한 자세한 내용은 create-http-health-checker(1)delete-http-health-checker(1)를 참조하십시오.

정상 인스턴스에 대한 추가 상태 검사 등록 정보

create-http-health-checker로 만든 상태 검사기만 비정상 인스턴스를 검사합니다. 정상 인스턴스를 정기적으로 검사하려면 내보낸 loadbalancer.xml 파일에 추가 등록 정보를 설정합니다.


주 –

이러한 등록 정보는 loadbalancer.xml을 내보낸 후에 수동으로 편집해야만 설정할 수 있습니다. 사용할 수 있는 동등한 asadmin 명령이 없습니다.


정상 인스턴스를 검사하려면 다음 등록 정보를 설정합니다.

표 5–3 상태 검사기 수동 등록 정보

등록 정보 

정의 

active-healthcheck-enabled

정상 서버 인스턴스를 핑하여 정상인지 확인할지 여부를 나타내는 True/false 플래그입니다. 서버 인스턴스를 핑하려면 플래그를 true로 설정합니다. 

number-healthcheck-retries

서버 인스턴스를 비정상으로 표시하기 전에 로드 밸런서의 상태 검사기가 응답이 없는 서버 인스턴스를 핑하는 횟수를 지정합니다. 유효한 값은 1과 1000 사이입니다. 설정된 기본값은 3입니다. 

loadbalancer.xml 파일을 편집하여 등록 정보를 설정합니다. 예를 들면 다음과 같습니다.

<property name="active-healthcheck-enabled" value="true"/>
<property name="number-healthcheck-retries" value="3"/>

이러한 등록 정보를 추가한 다음 loadbalancer.xml 파일을 편집하여 다시 내보낼 경우 새로 내보낸 구성에는 이러한 등록 정보가 없습니다. 새로 내보낸 구성에 이러한 등록 정보를 다시 추가해야 합니다.

로드 밸런서 구성 파일 내보내기

Sun Java System Application Server에서 사용할 수 있는 로드 밸런서 플러그인은 loadbalancer.xml이라는 구성 파일을 사용합니다. 로드 밸런서를 구성한 뒤에는 domain.xml의 구성 세부 사항을 loadbalancer.xml 파일로 내보낼 수 있습니다. 관리 콘솔이나 asadmin 유틸리티를 사용하여 이 작업을 수행할 수 있습니다.

Procedure관리 콘솔을 사용하여 로드 밸런서 구성 내보내기

  1. HTTP 로드 밸런서 노드로 이동하여 노드를 확장합니다.

  2. 원하는 로드 밸런서를 누릅니다.

    모든 로드 밸런서 구성 세부 사항이 일반, 설정 및 대상 탭에 표시됩니다.

  3. 내보내기 탭을 열고 지금 내보내기를 누릅니다.

  4. 내보낸 로드 밸런서 구성 파일을 웹 서버의 구성 디렉토리에 복사합니다.

Procedure관리 콘솔을 사용하여 로드 밸런서 구성 내보내기

  1. asadmin 명령 export-http-lb-config를 사용하여 loadbalancer.xml 파일을 내보냅니다. 명령에 대한 자세한 내용은 export-http-lb-config(1)를 참조하십시오.

    특정 로드 밸런서 구성에 대한 loadbalancer.xml 파일을 내보냅니다. 경로 및 다른 파일 이름을 지정할 수 있습니다. 파일 이름을 지정하지 않으면 loadbalancer.xml.load-balancer-config-name으로 이름이 지정됩니다. 경로를 지정하지 않을 경우 파일은 domain-dir/generated 디렉토리에 만들어집니다.

    Windows에서 경로를 지정하려면 경로를 따옴표로 묶습니다. 예를 들면 "C:\Sun\AppServer\loadbalancer.xml"과 같습니다.

  2. 내보낸 로드 밸런서 구성 파일을 웹 서버의 구성 디렉토리에 복사합니다.

    예를 들어, Sun Java System Web Server의 경우 일반적인 위치는 web-server-root/config입니다.

    웹 서버의 구성 디렉토리에 있는 로드 밸런서 구성 파일의 이름은 loadbalancer.xml입니다. 파일 이름이 다를 경우(예: loadbalancer.xml.load-balancer-config-name) 이름을 변경해야 합니다.

로드 밸런서 구성 변경

서버에 대한 참조를 만들거나 삭제하고, 새 응용 프로그램을 배포하고, 서버나 응용 프로그램을 활성화 또는 비활성화하는 등의 작업을 수행하여 로드 밸런서 구성을 변경할 경우 로드 밸런서 파일을 다시 내보낸 후 웹 서버의 config 디렉토리에 복사합니다. 자세한 내용은 로드 밸런서 구성 파일 내보내기를 참조하십시오.

로드 밸런서 플러그인은 로드 밸런서 구성에 지정한 다시 로드 간격을 기반으로 정기적으로 업데이트된 구성이 있는지 확인합니다. 지정한 시간 후 로드 밸런서가 새로운 구성 파일을 발견하면 해당 구성을 사용하기 시작합니다.

동적 재구성 활성화

동적 재구성을 사용할 경우 로드 밸런서 플러그인은 업데이트된 구성을 주기적으로 확인합니다.

동적 재구성을 활성화하려면 다음 작업을 수행합니다.


주 –

재구성하는 중 로드 밸런서에 하드 디스크 읽기 오류가 발생하는 경우 현재 메모리에 있는 구성을 사용합니다. 로드 밸런서는 기존 구성을 덮어쓰기 전에 수정된 구성 데이터가 DTD와 호환되는지 확인합니다.

디스크 읽기 오류가 발생한 경우 경고 메시지가 웹 서버의 오류 로그 파일에 로깅됩니다.

Sun Java System Web Server의 오류 로그는 다음 위치에 있습니다. web-server-install-dir/web-server-instance /logs/


서버 인스턴스 또는 클러스터 비활성화(정지)

여타의 이유로 응용 프로그램 서버를 중지하기 전에 인스턴스는 요청 처리를 완료해야 합니다. 서버 인스턴스나 클러스터를 적절하게 비활성화하는 프로세스를 정지라고 합니다.

로드 밸런서는 Application Server 인스턴스를 정지하는 데 다음과 같은 정책을 사용합니다.

Procedure서버 인스턴스나 클러스터 비활성화

  1. asadmin disable-http-lb-server를 실행하여 시간 초과(분)를 설정합니다. 명령에 대한 자세한 내용은 disable-http-lb-server(1)를 참조하십시오.

  2. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다. 명령에 대한 자세한 내용은 export-http-lb-config(1)를 참조하십시오.

  3. 내보낸 구성을 웹 서버 config 디렉토리에 복사합니다.

  4. 서버 인스턴스나 인스턴스를 중지합니다.

응용 프로그램 비활성화(정지)

웹 응용 프로그램의 배포를 취소하기 전에 응용 프로그램은 요청 처리를 완료해야 합니다. 응용 프로그램을 적절하게 비활성화하는 프로세스를 정지라고 합니다. 응용 프로그램을 정지할 경우 시간 초과 기간을 지정해야 합니다. 시간 초과 기간에 따라 로드 밸런서는 응용 프로그램 정지를 위해 다음 정책을 사용합니다.

Procedure응용 프로그램 비활성화

  1. 다음을 지정하여 asadmin disable-http-lb-application을 사용합니다.

    • 시간 초과(분)

    • 비활성화할 응용 프로그램의 이름

    • 비활성화할 대상 클러스터 또는 인스턴스

    명령에 대한 자세한 내용은 disable-http-lb-application(1)을 참조하십시오.

  2. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다. 명령에 대한 자세한 내용은 export-http-lb-config(1)를 참조하십시오.

  3. 내보낸 구성을 웹 서버 config 디렉토리에 복사합니다.

HTTP 및 HTTPS 페일오버 구성

세션이 연결된 원래 Application Server 인스턴스를 사용할 수 없게 된 경우 로드 밸런서 플러그인은 HTTP/HTTPS 세션을 다른 Application Server 인스턴스로 페일오버합니다. 이 절에서는 HTTP/HTTPS 라우팅 및 세션 페일오버를 활성화하도록 로드 밸런서 플러그인을 구성하는 방법에 대해 설명합니다.

HTTPS 라우팅

로드 밸런서 플러그인은 들어오는 모든 HTTP 또는 HTTPS 요청의 경로를 Application Server 인스턴스로 지정합니다. 그러나 HTTPS 라우팅이 활성화된 경우 로드 밸런서 플러그인은 HTTPS 포트만 사용하는 Application Server로 HTTPS 요청을 전달합니다. 새로운 요청과 고정된 요청 모두에 대해 HTTPS 라우팅을 수행합니다.

HTTPS 요청을 수신하고 진행 중인 세션이 없을 경우 로드 밸런서 플러그인은 HTTPS 포트가 구성된 사용 가능한 Application Server 인스턴스를 선택하고 요청을 인스턴스로 전달합니다.

진행 중인 HTTP 세션에서 동일한 세션에 대한 새로운 HTTPS 요청을 받으면 세션과 HTTP 세션 중에 저장된 고정된 정보를 사용하여 HTTPS 요청을 라우팅합니다. 마지막 HTTP 요청이 처리된 동일한 서버로 새로운 HTTP S 요청 경로가 지정되지만 HTTPS 포트에 지정됩니다.

HTTPS 라우팅 구성

create-http-lb-config 명령의 httpsrouting 옵션은 로드 균형 조정에 참여하는 모든 Application Server에 대해 HTTPS 라우팅의 설정 또는 해제 여부를 제어합니다. 이 옵션을 false로 설정하면 모든 HTTP 및 HTTPS 요청이 HTTP로 전달됩니다. true로 설정하면 HTTPS가 HTTPS 요청으로 전달됩니다. 로드 밸런서 구성을 새로 만들 경우 HTTPS 라우팅을 설정하거나 나중에 asadmin set 명령을 사용하여 변경합니다.


주 –

알려진 문제점

로드 밸런서를 사용하여 HTTP/HTTPS 요청을 처리할 때 다음과 같은 제한이 적용됩니다.

로드 밸런서와 함께 리디렉션 사용

리디렉션을 사용하여 한 URL에서 다른 URL로 요청을 리디렉션합니다. 예를 들어, 리디렉션을 사용하여 사용자를 다른 웹 사이트로 보내거나(예: 이전 버전의 응용 프로그램에서 새 버전으로 리디렉션) HTTP에서 HTTPS로 또는 HTTPS에서 HTTP로 보냅니다. 응용 프로그램에서 다양한 방법으로 리디렉션을 활성화할 수 있습니다(예: 서블릿 기반 리디렉션, web.xml 리디렉션). 그러나 로드 밸런서를 통해 리디렉션 URL을 보내려면 Application Server 또는 로드 밸런서의 일부 추가 구성이 필요할 수 있습니다. 리디렉션은 HTTPS 라우팅을 사용하여 전달되는 요청과 다릅니다. 리디렉션을 사용할 경우 httpsrouting을 false로 설정합니다. HTTP에 전달할 HTTPS 요청을 구성할 경우 HTTPS 라우팅을 사용합니다.

리디렉션에 영향을 주는 등록 정보는HTTP 서비스 또는 HTTP Listener의 authPassthroughEnabledproxyHandler 등록 정보와 loadbalancer.xml 파일의 rewrite-location 등록 정보입니다.

authPassthroughEnabled 등록 정보

Application Server authPassthroughEnabled 등록 정보가 true로 설정된 경우 원래 클라이언트 요청에 대한 정보(예: 클라이언트 IP 주소, SSL 키 크기 및 인증된 클라이언트 인증서 체인)가 사용자 요청 헤더를 사용하여 HTTP Listener에 보내집니다. authPassThroughEnabled 등록 정보를 사용하면 더 빠른 SSL 인증을 위해 하드웨어 가속기(설치되어 있는 경우)를 활용할 수 있습니다. 클러스터링된 각 Application Server 인스턴스 대신에 로드 밸런서에서 하드웨어 가속기를 구성하는 것이 더 쉽습니다.


주의 – 주의 –

Application Server가 방화벽 뒤에 있는 경우에만 authPassthroughEnabled를 true로 설정합니다.


asadmin set 명령을 사용하여 HTTP 서비스 또는 개별 HTTP Listener에서 authPassthroughEnabled 등록 정보를 설정합니다. 개별 HTTP Listener에 대한 설정은 HTTP 서비스에 대한 설정보다 우선합니다.

모든 HTTP/HTTPS Listener에서 authPassthroughEnabled 등록 정보를 설정하려면 다음 명령을 사용합니다.

asadmin set cluster-name-config.http-service.property.authPassthroughEnabled=true

개별 수신기에서 설정하려면 다음 명령을 사용합니다.

asadmin set cluster-name-config.http-service.http-listener. listener-name.property.authPassthroughEnabled=true

proxyHandler 등록 정보

Application Server에 대한 프록시 처리기는 프록시 서버(이 경우에는 로드 밸런서)에서 인터셉트하여 Application Server에 전달한 원래 클라이언트 요청에 대한 정보를 검색하고 클라이언트 요청의 대상인 웹 응용 프로그램(Application Server에 배포된)에서 이 정보를 사용할 수 있게 만드는 역할을 수행합니다. 인터셉트 프록시 서버가 SSL 종단인 경우 프록시 처리기는 원래 요청에 대한 추가 정보(예: 원래 요청이 HTTPS 요청이었는지 여부 및 SSL 클라이언트 인증이 활성화되었는지 여부)를 검색하여 사용할 수 있게 만듭니다. authPassThroughEnabled가 true로 설정된 경우에만 proxyHandler 등록 정보를 사용합니다.

프록시 처리기는 들어오는 요청에서 프록시 서버가 원래 클라이언트 요청에 대한 정보를 전달하는 데 사용하는 사용자 정의 요청 헤더를 검사하고 표준 ServletRequest API를 사용하여 Application Server의 웹 응용 프로그램에서 이 정보를 사용할 수 있게 만듭니다.

프록시 처리기 구현은 proxyHandler 등록 정보를 사용하여 HTTP 서비스 수준에서 전역적으로 구성하거나 개별 HTTP Listener에 대해 구성할 수 있습니다. 이 등록 정보의 값은 com.sun.appserv.ProxyHandler 추상 클래스의 구현에 대한 정규화된 클래스 이름을 지정합니다. 구성 가능한 프록시 처리기 구현을 사용하면 Application Server에서 모든 프록시 서버를 사용할 수 있습니다. 단, 이 경우 프록시 처리기 구현은 HTTP 요청 헤더 이름과 해당 값의 형식을 알고 있어야 합니다. 이를 통해 프록시 서버는 원래 클라이언트 요청에 대한 정보를 전달합니다.

Application Server에 대한 프록시 처리기는 요청 헤더에서 SSL 인증서 체인을 읽고 구문 분석합니다. 따라서 백엔드 Application Server 인스턴스는 SSL 종단 프록시 서버(이 경우, 로드 밸런서)가 인터셉트한 원래 클라이언트 요청에 대한 정보를 검색할 수 있습니다. 기본 프록시 처리기 설정을 사용하거나 HTTP 서비스 또는 HTTP/HTTPS Listener의 proxyHandler 등록 정보를 사용하여 고유한 설정을 구성할 수 있습니다. proxyHandler 등록 정보는 이 수신기나 모든 수신기에 사용되는 com.sun.appserv.ProxyHandler 추상 클래스의 사용자 구현에 대한 정규화된 클래스 이름을 지정합니다.

이 추상 클래스 구현은 지정된 요청에서 사용자 요청 헤더를 검사합니다. 사용자 요청 헤더를 통해 프록시 서버는 원래 클라이언트 요청에 대한 정보를 Application Server 인스턴스에 전달하고 해당 정보를 호출자에게 반환합니다. 기본 구현은 Proxy-ip라는 HTTP 요청 헤더에서 클라이언트 IP 주소를, Proxy-keysize라는 HTTP 요청 헤더에서 SSL 키 크기를, Proxy-auth-cert라는 HTTP 요청 헤더에서 SSL 클라이언트 인증서 체인을 읽습니다. Proxy-auth-cert 값은 BEGIN CERTIFICATE 및 END CERTIFICATE 경계가 없고 % d% a로 바뀌는 \n이 있는 BASE-64로 인코딩된 클라이언트 인증서 체인을 포함해야 합니다.

authPassThroughEnabled가 true로 설정된 경우에만 이 등록 정보를 사용할 수 있습니다. 개별 HTTP 또는 HTTPS Listener에서 proxyHandler 등록 정보를 설정한 경우 모든 수신기에 대한 기본 설정을 대체합니다.

asadmin set 명령을 사용하여 HTTP 서비스 또는 개별 HTTP Listener에서 proxyHandler 등록 정보를 설정합니다.

proxyHandler 등록 정보를 모든 HTTP/HTTPS Listener에서 설정하려면 다음 명령을 사용합니다.

asadmin set cluster-name-config.http-service.property.proxyHandler= classname

개별 수신기에서 설정하려면 다음 명령을 사용합니다.

asadmin set cluster-name-config.http-service.http-listener. listener-name.property.proxyHandler= classname

rewrite-location 등록 정보

true로 설정된 경우 rewrite-location 등록 정보는 원래 요청 정보를 다시 쓰고 프로토콜(HTTP 또는 HTTPS), 호스트 및 포트 정보를 포함합니다. 기본적으로 rewrite-location 등록 정보는 이전 Application Server 릴리스와의 호환성을 유지하기 위해 true로 설정됩니다.

rewrite-location 등록 정보는 asadmin create-http-lb-config 또는 asadmin set 명령을 통해 사용할 수 없습니다. 이 등록 정보를 사용하려면 로드 밸런서 구성을 내보낸 후에 loadbalancer.xml 파일에 수동으로 추가합니다. 예를 들어, 내보낸 loadbalancer.xml 파일에 다음을 추가합니다.

<property name="rewrite-location" value="false"/>

rewrite-location 등록 정보를 설정할 때 다음 사항에 주의합니다.

멱등원(Idempotent) URL 구성

멱등원(idempotent) 요청은 다시 시도할 때 응용 프로그램에 변경이나 불일치를 일으키지 않는 요청입니다. HTTP의 경우 일부 메소드(예: GET)는 멱등원(Idempotent)이지만 다른 메소드(예: POST)는 멱등원(Idempotent)이 아닙니다. 멱등원(Idempotent) URL을 재시도할 경우 값이 서버나 데이터베이스에서 변경되지 않습니다. 사용자가 수신한 응답의 변화만이 유일한 차이점입니다.

멱등원(Idempotent) 요청의 예에는 검색 엔진 쿼리와 데이터베이스 쿼리가 포함됩니다. 다시 시도할 때 데이터가 업데이트되거나 수정되지 않는 것이 기본 원칙입니다.

배포된 응용 프로그램의 가용성을 향상시키려면 로드 밸런서가 사용되는 모든 Application Server 인스턴스에서 실패한 멱등원(Idempotent) HTTP 요청을 다시 시도하도록 환경을 구성합니다. 예를 들어, 검색 요청을 다시 시도하려면 읽기 전용 요청에 대해 이 옵션을 사용합니다.

sun-web.xml 파일에 멱등원(Idempotent) URL을 구성합니다. 로드 밸런서 구성을 내보낼 때 멱등원(Idempotent) URL 정보가 loadbalancer.xml 파일에 자동으로 추가됩니다.

멱등원(Idempotent) URL 구성에 대한 자세한 내용은 Sun Java System Application Server 9.1 Developer’s GuideConfiguring Idempotent URL Requests를 참조하십시오.

다중 웹 서버 인스턴스 구성

Sun Java System Application Server 설치 프로그램을 사용할 경우 단일 시스템에 여러 로드 밸런서 플러그인을 설치할 수 없습니다. 단일 시스템에 로드 밸런서 플러그인과 함께 복수 웹 서버를 두려면 단일 클러스터 또는 복수 클러스터든 상관없이 로드 밸런서 플러그인을 구성하기 위한 몇 가지 수동 단계가 필요합니다.

Procedure다중 웹 서버 인스턴스 구성

  1. 로드 밸런서 플러그인을 사용하도록 새 웹 서버 인스턴스를 구성합니다.

    자세한 지침은 Sun Java System Web Server 구성을 참조하십시오.

  2. DTD 파일 sun-loadbalancer_1_1.dtd를 기존 웹 서버 인스턴스의 config 디렉토리에서 새 인스턴스의 config 디렉토리로 복사합니다.

  3. 로드 밸런서 구성 파일을 설정합니다. 다음의 두 가지 방법 중 하나를 사용합니다.

    • 기존 로드 밸런서 구성을 복사합니다.

      기존 로드 밸런서 구성을 사용하여 기존 웹 서버 인스턴스의 config 디렉토리에서 새 인스턴스의 config 디렉토리로 loadbalancer.xml 파일을 복사합니다.

    • 새 로드 밸런서 구성을 만듭니다.

      1. asadmin create-http-lb-config를 사용하여 새 로드 밸런서 구성을 만듭니다.

      2. asadmin export http-lb-config를 사용하여 새 구성을 loadbalancer.xml 파일로 내보냅니다.

      3. 해당 loadbalancer.xml 파일을 새 웹 서버의 config 디렉토리로 복사합니다.

        로드 밸런서 구성을 만든 후 loadbalancer.xml 파일로 내보내는 방법에 대한 자세한 내용은 DAS에서 HTTP 로드 밸런서 구성을 참조하십시오.

가용성 손실 없이 응용 프로그램 업그레이드

사용자에 대한 가용성 손실 없이 응용 프로그램을 새 버전으로 업그레이드하는 것을 롤링 업그레이드라고 합니다. 업그레이드 중에 응용 프로그램의 두 버전을 주의해서 관리하면 응용 프로그램의 현재 사용자가 중단 없이 작업을 완료하면서 새로운 사용자가 새 버전의 응용 프로그램을 투명하게 가져올 수 있습니다. 롤링 업그레이드 수행 시 사용자는 업그레이드가 발생하는지 모릅니다.

응용 프로그램 호환성

롤링 업그레이드는 두 응용 프로그램 버전 간 변경 사항의 정도에 따라 간단할 수도 있고 복잡할 수도 있습니다.

정적 텍스트나 이미지가 변경된 경우처럼 표면적인 부분만 변경되면 응용 프로그램의 두 버전은 호환되며 동일한 클러스터에서 실행될 수 있습니다.

호환되는 응용 프로그램은 다음과 같아야 합니다.

단일 클러스터나 다중 클러스터에서 호환되는 응용 프로그램의 롤링 업그레이드를 수행할 수 있습니다. 자세한 내용은 단일 클러스터에서 업그레이드를 참조하십시오.

응용 프로그램의 두 버전이 위의 기준을 만족하지 않으면 응용 프로그램은 호환되지 않는 것으로 간주됩니다. 한 클러스터에서 응용 프로그램의 호환되지 않는 버전을 실행하면 응용 프로그램 데이터가 손상되고 세션 페일오버가 제대로 작동하지 않을 수 있습니다. 이러한 문제는 비호환 상태의 유형 및 정도에 따라 다릅니다. 새 버전을 배포할 "섀도우 클러스터"를 만들어 호환되지 않는 응용 프로그램을 업그레이드하고 이전 클러스터 및 응용 프로그램을 천천히 정지하는 것이 좋습니다. 자세한 내용은 호환되지 않는 응용 프로그램 업그레이드를 참조하십시오.

응용 프로그램 버전의 호환 여부는 응용 프로그램 개발자 및 관리자는 판단하는 것이 가장 좋습니다. 호환 여부가 불확실하면 안전하게 호환되지 않는 것으로 간주합니다.

단일 클러스터에서 업그레이드

클러스터 구성이 다른 클러스터와 공유되지 않을 경우, 단일 클러스터에 배포된 응용 프로그램의 롤링 업그레이드를 수행할 수 있습니다.

Procedure단일 클러스터에서 응용 프로그램 업그레이드

  1. 이전 버전의 응용 프로그램을 저장하거나 도메인을 백업합니다.

    도메인을 백업하려면 asadmin backup-domain 명령을 사용합니다. 명령에 대한 자세한 내용은 backup-domain(1)을 참조하십시오.

  2. 클러스터에 대해 동적 재구성(활성화된 경우)을 해제합니다.

    관리 콘솔에서 다음 작업을 수행합니다.

    1. 구성 노드를 확장합니다.

    2. 클러스터의 구성 이름을 누릅니다.

    3. 구성 시스템 등록 정보 페이지에서 동적 재구성 사용 가능 확인란을 선택 해제합니다.

    4. 저장을 누릅니다.

    또는 다음 명령을 사용합니다.

    asadmin set --user user --passwordfile password-file cluster-name-config.dynamic-reconfiguration-enabled=false

  3. 업그레이드된 응용 프로그램을 대상 domain에 다시 배포합니다.

    관리 콘솔을 사용하여 재배포할 경우 도메인이 자동으로 대상이 됩니다. asadmin을 사용할 경우 대상 domain을 지정합니다. 동적 재구성을 사용할 수 없기 때문에 이전 응용 프로그램은 계속해서 클러스터에서 실행됩니다.

  4. asadmin enable-http-lb-application을 사용하여 인스턴스에 재배포된 응용 프로그램을 활성화합니다. 명령에 대한 자세한 내용은 enable-http-lb-application(1)을 참조하십시오.

  5. 로드 밸런서에서 클러스터에 있는 한 서버 인스턴스를 정지합니다.

    다음 단계를 수행합니다.

    1. asadmin disable-http-lb-server를 사용하여 서버 인스턴스를 비활성화합니다. 명령에 대한 자세한 내용은 disable-http-lb-server(1)를 참조하십시오.

    2. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다. 명령에 대한 자세한 내용은 export-http-lb-config(1)를 참조하십시오.

    3. 내보낸 구성 파일을 웹 서버 인스턴스의 구성 디렉토리에 복사합니다.

      예를 들어, Sun Java System Web Server의 경우 위치는 web-server-install-dir/https-host-name/config/loadbalancer.xml입니다. 로드 밸런서가 새 구성 파일을 로드하게 하려면 로드 밸런서 구성에서 reloadinterval을 설정하여 동적 재구성이 활성화되도록 합니다.

    4. 시간 초과가 만료될 때까지 대기합니다.

      로드 밸런서의 로그 파일을 모니터링하여 인스턴스가 오프라인인지 확인합니다. 재시도 URL을 만나면 정지 기간을 건너뛰고 서버를 즉시 다시 시작합니다.

  6. 클러스터의 다른 인스턴스가 계속 실행되는 동안 비활성화된 서버 인스턴스를 다시 시작합니다.

    다시 시작하면 서버가 도메인과 동기화되고 응용 프로그램이 업데이트됩니다.

  7. 다시 시작한 서버의 응용 프로그램을 테스트하여 제대로 실행되는지 확인합니다.

  8. 로드 밸런서에서 서버 인스턴스를 다시 활성화합니다.

    다음 단계를 수행합니다.

    1. asadmin enable-http-lb-server를 사용하여 서버 인스턴스를 활성화합니다. 명령에 대한 자세한 내용은 enable-http-lb-server(1)를 참조하십시오.

    2. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다. 명령에 대한 자세한 내용은 export-http-lb-config(1)를 참조하십시오.

    3. 구성 파일을 웹 서버의 구성 디렉토리에 복사합니다.

  9. 클러스터의 각 인스턴스에 대해 5-8 단계를 반복합니다.

  10. 모든 서버 인스턴스에 새로운 응용 프로그램이 있고 실행 중인 경우 클러스터에 대한 동적 재구성을 활성화할 수 있습니다.

여러 클러스터에서 업그레이드

Procedure두 개 이상의 클러스터에서 호환되는 응용 프로그램 업그레이드

  1. 이전 버전의 응용 프로그램을 저장하거나 도메인을 백업합니다.

    도메인을 백업하려면 asadmin backup-domain 명령을 사용합니다. 명령에 대한 자세한 내용은 backup-domain(1)을 참조하십시오.

  2. 모든 클러스터에 대해 동적 재구성(활성화된 경우)을 해제합니다.

    관리 콘솔에서 다음 작업을 수행합니다.

    1. 구성 노드를 확장합니다.

    2. 한 클러스터의 구성 이름을 누릅니다.

    3. 구성 시스템 등록 정보 페이지에서 동적 재구성 사용 가능 확인란을 선택 해제합니다.

    4. 저장을 누릅니다.

    5. 다른 클러스터에 대해서도 반복합니다.

    또는 다음 명령을 사용합니다.

    asadmin set --user user --passwordfile password-file cluster-name -config.dynamic-reconfiguration-enabled=false

  3. 업그레이드된 응용 프로그램을 대상 domain에 다시 배포합니다.

    관리 콘솔을 사용하여 재배포할 경우 도메인이 자동으로 대상이 됩니다. asadmin을 사용할 경우 대상 domain을 지정합니다. 동적 재구성이 비활성화되어 있기 때문에 이전 응용 프로그램은 계속해서 클러스터에서 실행됩니다.

  4. asadmin enable-http-lb-application을 사용하여 클러스터에 재배포된 응용 프로그램을 활성화합니다. 명령에 대한 자세한 내용은 enable-http-lb-application(1)을 참조하십시오.

  5. 로드 밸런서에서 한 클러스터를 정지합니다.

    1. asadmin disable-http-lb-server를 사용하여 클러스터를 비활성화합니다. 명령에 대한 자세한 내용은 disable-http-lb-server(1)를 참조하십시오.

    2. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다. 명령에 대한 자세한 내용은 export-http-lb-config(1)를 참조하십시오.

    3. 내보낸 구성 파일을 웹 서버 인스턴스의 구성 디렉토리에 복사합니다.

      예를 들어, Sun Java System Web Server의 경우 위치는 web-server-install-dir/https-host-name/config/loadbalancer.xml입니다. 로드 밸런서 구성에서 reloadinterval을 설정하여 로드 밸런서에 대해 동적 재구성을 활성화해야 합니다. 이렇게 해야 새 로드 밸런서 구성 파일이 자동으로 로드됩니다.

    4. 시간 초과가 만료될 때까지 대기합니다.

      로드 밸런서의 로그 파일을 모니터링하여 인스턴스가 오프라인인지 확인합니다. 재시도 URL을 만나면 정지 기간을 건너뛰고 서버를 즉시 다시 시작합니다.

  6. 다른 클러스터를 계속 실행하면서 비활성화된 클러스터를 다시 시작합니다.

    다시 시작하면 클러스터가 도메인과 동기화되고 응용 프로그램이 업데이트됩니다.

  7. 다시 시작한 클러스터의 응용 프로그램을 테스트하여 제대로 실행되는지 확인합니다.

  8. 로드 밸런서에서 클러스터를 활성화합니다.

    1. asadmin enable-http-lb-server를 사용하여 클러스터를 활성화합니다. 명령에 대한 자세한 내용은 enable-http-lb-server(1)를 참조하십시오.

    2. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다. 명령에 대한 자세한 내용은 export-http-lb-config(1)를 참조하십시오.

    3. 구성 파일을 웹 서버의 구성 디렉토리에 복사합니다.

  9. 다른 클러스터에 대해서도 5-8단계를 반복합니다.

  10. 모든 서버 인스턴스에 새로운 응용 프로그램이 있고 실행 중인 경우 모든 클러스터에 대한 동적 재구성을 활성화할 수 있습니다.

호환되지 않는 응용 프로그램 업그레이드

새 버전의 응용 프로그램이 이전 버전과 호환되지 않는 경우 다음 절차를 수행합니다. 응용 프로그램을 호환되게 만드는 방법에 대한 자세한 내용은 응용 프로그램 호환성을 참조하십시오. 또한 두 개 이상의 클러스터에서 호환되지 않는 응용 프로그램을 업그레이드해야 합니다. 클러스터가 하나만 있으면 아래에 설명된 것처럼 업그레이드를 위해 "섀도우 클러스터"를 만듭니다.

호환되지 않는 응용 프로그램을 업그레이드할 경우:

Procedure또 다른 클러스터를 만들어 호환되지 않는 응용 프로그램 업그레이드

  1. 이전 버전의 응용 프로그램을 저장하거나 도메인을 백업합니다.

    도메인을 백업하려면 asadmin backup-domain 명령을 사용합니다. 명령에 대한 자세한 내용은 backup-domain(1)을 참조하십시오.

  2. 기존 클러스터와 동일하거나 다른 시스템 집합에 "섀도우 클러스터"를 만듭니다. 또 다른 클러스터가 이미 있는 경우 이 단계를 건너뜁니다.

    1. 관리 콘솔을 사용하여 새 클러스터를 만들고 기존 클러스터의 명명된 구성을 참조합니다.

      각 시스템에서 새 인스턴스에 대한 포트를 사용자 정의하여 기존 활성 포트와 충돌하지 않도록 합니다.

    2. 클러스터와 관련된 모든 자원에 대해 asadmin create-resource-ref를 사용하여 새로 만들어진 클러스터에 대한 자원 참조를 추가합니다. 명령에 대한 자세한 내용은 create-resource-ref(1)를 참조하십시오.

    3. asadmin create-application-ref를 사용하여 새로 만들어진 클러스터에서 해당 클러스터로 배포된 다른 모든 응용 프로그램(현재 재배포된 응용 프로그램 제외)에 대한 참조를 만듭니다. 명령에 대한 자세한 내용은 create-application-ref(1)를 참조하십시오.

    4. asadmin configure-ha-cluster를 사용하여 클러스터를 고가용성 클러스터로 구성합니다. 명령에 대한 자세한 내용은 configure-ha-cluster(1)를 참조하십시오.

    5. asadmin create-http-lb-ref를 사용하여 로드 밸런서 구성 파일에 새로 만들어진 클러스터에 대한 참조를 만듭니다. 명령에 대한 자세한 내용은 create-http-lb-ref(1)를 참조하십시오.

  3. 새 버전의 응용 프로그램에 이전 버전과는 다른 이름을 지정합니다.

  4. 새 클러스터에 새 응용 프로그램을 대상으로 배포합니다. 다른 컨텍스트 루트를 사용합니다.

  5. asadmin enable-http-lb-application을 사용하여 클러스터에 배포된 응용 프로그램을 활성화합니다. 명령에 대한 자세한 내용은 enable-http-lb-application(1)을 참조하십시오.

  6. 다른 클러스터를 계속 실행하면서 새 클러스터를 시작합니다.

    시작하면 클러스터가 도메인과 동기화되고 새 응용 프로그램으로 업데이트됩니다.

  7. 새 클러스터의 응용 프로그램을 테스트하여 제대로 실행되는지 확인합니다.

  8. asadmin disable-http-lb-server를 사용하여 로드 밸런서에서 이전 클러스터를 비활성화합니다. 명령에 대한 자세한 내용은 disable-http-lb-server(1)를 참조하십시오.

  9. 느린 세션이 지속되는 기간에 대한 시간 초과를 설정합니다.

  10. asadmin enable-http-lb-server를 사용하여 로드 밸런서에서 새 클러스터를 활성화합니다. 명령에 대한 자세한 내용은 enable-http-lb-server(1)를 참조하십시오.

  11. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다. 명령에 대한 자세한 내용은 export-http-lb-config(1)를 참조하십시오.

  12. 내보낸 구성 파일을 웹 서버 인스턴스의 구성 디렉토리에 복사합니다.

    예를 들어, Sun Java System Web Server의 경우 위치는 web-server-install-dir/https-host-name/config/loadbalancer.xml입니다. 로드 밸런서 구성에서 reloadinterval을 설정하여 로드 밸런서에 대해 동적 재구성을 활성화해야 합니다. 이렇게 해야 새 로드 밸런서 구성 파일이 자동으로 로드됩니다.

  13. 시간 초과 기간이 만료되거나 이전 응용 프로그램의 모든 사용자가 종료하면 이전 클러스터를 중지하고 이전 응용 프로그램을 삭제하십시오.

HTTP 로드 밸런서 플러그인 모니터링

로그 메시지 구성

로드 밸런서 플러그인은 웹 서버의 로깅 메커니즘을 사용하여 로그 메시지를 씁니다. Application Server의 기본 로그 수준은 Sun Java System Web Server의 기본 로깅 수준(INFO), Apache Web Server의 기본 로깅 수준(WARN) 및 Microsoft IIS의 기본 로깅 수준(INFO)으로 설정됩니다. Application Server의 로그 수준 FINE, FINERFINEST는 웹 서버의 DEBUG 수준에 매핑됩니다.

이 로그 메시지는 웹 서버 로그 파일에 기록되고, 스크립트를 사용하여 구문 분석하거나 스프레드시트로 가져와서 필수 메트릭을 계산할 수 있는 원시 데이터 형식입니다.

로그 메시지 유형

로드 밸런서 플러그인은 다음과 같은 로그 메시지 유형을 생성합니다.

로드 밸런서 구성 프로그램 로그 메시지

멱등원(Idempotent) URL과 오류 페이지 설정을 사용할 경우 이 메시지가 기록됩니다.

멱등원(Idempotent) URL 패턴 구성 출력에는 다음 정보가 포함됩니다.

요청 디스패치 및 런타임 로그 메시지

요청을 로드 균형 조정하고 디스패치하는 동안 이 로그 메시지가 생성됩니다.

구성 프로그램 오류 메시지

구성 문제가 있을 경우, 예를 들어 참조하는 사용자 정의 오류 페이지가 누락된 경우 이 오류가 표시됩니다.

로드 밸런서 로깅 활성화

로드 밸런서 플러그인은 다음 정보를 기록합니다.


주 –

로드 밸런서에서 로깅이 활성화된 경우, 그리고 웹 서버 로그 수준을 DEBUG로 설정하거나 자세한 메시지를 인쇄할 경우 로드 밸런서는 HTTP 세션 아이디를 웹 서버 로그 파일에 기록합니다. 따라서 로드 밸런서 플러그인을 호스트하는 웹 서버가 DMZ에 있을 경우 프로덕션 환경에서 DEBUG 또는 유사한 로그 수준을 사용하지 마십시오.

DEBUG 로그 수준을 사용해야 할 경우 loadbalancer.xml에서 require-monitor-data 등록 정보를 false로 설정하여 로드 밸런서 로깅을 해제하십시오.


Procedure로드 밸런서 로깅 설정

  1. 웹 서버에 로깅 옵션을 설정합니다. 절차는 웹 서버에 따라 다릅니다.

    • Sun Java System Web Server를 사용할 경우

      서버의 관리 콘솔에서 Magnus Editor 탭으로 이동하여 Log Verbose 옵션을 On으로 설정합니다.

    • Apache Web Server의 경우 로그 수준을 DEBUG로 설정합니다.

    • Microsoft IIS의 경우 sun-passthrough.properties 파일에서 로그 수준을 FINE으로 설정합니다.

  2. 로드 밸런서 구성의 monitor 옵션을 true로 설정합니다.

    로드 밸런서 구성을 처음 만들 경우 asadmin create-http-lb-config 명령을 사용하여 모니터링을 true로 설정하거나, asadmin set 명령을 사용하여 나중에 true로 설정합니다. 모니터링은 기본적으로 비활성화되어 있습니다.

모니터링 메시지

로드 밸런서 플러그인 로그 메시지의 형식은 다음과 같습니다.