Sun Java System Application Server Enterprise Edition 8.1 2005Q2 고가용성 관리 설명서

4장 로드 균형 조정 및 페일오버 구성

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

로드 밸런서 작동 방식

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

로드 밸런서를 사용하면 서버 인스턴스 간에 요청을 페일오버할 수 있습니다. 지속할 HTTP 세션 정보의 경우 HTTP 세션 지속성을 구성합니다. 자세한 내용은 8 장, 고가용성 세션 지속성 및 페일오버 구성을 참조하십시오.

로드 균형 조정 구성에 대한 자세한 지침은 Sun Java System Application Server 고가용성 관리 설명서를 참조하십시오.

관리 콘솔이 아니라 asadmin 도구를 사용하여 HTTP 로드 균형 조정을 구성합니다.

참고 항목:

할당된 요청 및 할당되지 않은 요청

처음에 HTTP 클라이언트에서 로드 밸런서로 수행된 요청은 새로운 세션에 대한 요청에 해당합니다. 새로운 세션에 대한 요청을 할당되지 않은 요청이라고 합니다. 로드 밸런서는 라운드 로빈 알고리즘에 따라 클러스터의 Application Server 인스턴스로 이 요청을 보냅니다.

Application Server 인스턴스에 세션이 만들어지면 로드 밸런서는 이 세션에 대한 모든 후속 요청의 경로를 특정 인스턴스로만 지정합니다. 기존 세션에 대한 요청을 할당된 요청 또는 고정 요청이라고 합니다.

HTTP 로드 균형 조정 알고리즘

Sun Java System Application Server 로드 밸런서는 고정 라운드 로빈 알고리즘을 사용하여 들어오는 HTTP 및 HTTPS 요청의 로드 균형을 조정합니다. 지정한 세션의 모든 요청이 동일한 Application Server 인스턴스로 전송됩니다. 고정 로드 밸런서를 사용하면 세션 데이터가 클러스터의 모든 인스턴스에 분산되기 보다는 한 Application Server에 캐시됩니다.

따라서 고정 라운드 로빈 체계는 순수 라운드 로빈 체계가 주는 로드의 균형 분산이라는 이점을 뛰어난 성능 이점으로 대체합니다.

새 HTTP 요청이 로드 밸런서 플러그인으로 보내지면 경량 라운드 로빈 체계에 따라 응용 프로그램 서버 인스턴스로 전달됩니다. 계속해서 이 요청은 쿠키를 사용하거나 명시적 URL을 다시 작성하여 특정한 Application Server 인스턴스에 "고정"됩니다.

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

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

샘플 응용 프로그램

다음 디렉토리에는 로드 균형 조정 및 페일오버를 보여주는 샘플 응용 프로그램이 포함되어 있습니다.

install_dir/samples/ee-samples/highavailability
install_dir/samples/ee-samples/failover

ee-samples 디렉토리에는 샘플을 실행할 수 있도록 환경을 설정하는 데 필요한 정보도 포함되어 있습니다.

HTTP 로드 균형 조정 설정

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

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

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

HTTP 로드 밸런서 배포

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

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

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

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

역 프록시 플러그인으로 사용되는 로드 밸런서와 함께 단일 독립 실행형 인스턴스 사용

클러스터 대신 독립 실행형 서버 인스턴스를 사용하도록 로드 밸런서를 구성할 수도 있습니다. 이렇게 구성하면 로드 밸런서 플러그인이 역 프록시 플러그인(통과 플러그인이라고도 함)으로 작동합니다. 웹 서버가 로드 밸런서에서 활성화된 응용 프로그램에 대한 요청을 받으면 Application Server로 직접 요청을 전달합니다.

서버 인스턴스의 클러스터로 구성할 때와 동일한 절차에 따라 통과 플러그인에 대한 로드 밸런서를 구성합니다.

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

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

로드 균형 조정 설정 절차

asadmin 도구를 사용하여 작업 환경의 로드 균형 조정을 구성합니다. 이 단계에서 사용되는 asadmin 명령에 대한 자세한 내용은 로드 밸런서 구성을 참조하십시오.

Procedure로드 균형 조정 설정

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

  2. asadmin create-http-lb-ref를 사용하여 로드 밸런서에서 관리할 클러스터 또는 독립 실행형 서버 인스턴스에 대한 참조를 추가합니다.

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

  3. asadmin enable-http-lb-server를 사용하여 로드 밸런서가 참조하는 클러스터나 독립 실행형 서버 인스턴스를 활성화합니다.

  4. asadmin enable-http-lb-application을 사용하여 로드 균형 조정을 할 수 있도록 응용 프로그램을 활성화합니다.

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

  5. asadmin create-health-checker를 사용하여 상태 검사기를 만듭니다.

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

  6. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 생성합니다.

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

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

로드 균형 조정을 사용하도록 웹 서버 구성

로드 밸런서 플러그인 설치 프로그램은 웹 서버의 구성 파일을 일부 수정합니다. 변경 사항은 웹 서버에 따라 다릅니다.


주 –

로드 밸런서 플러그인은 Sun Java System Application Server Enterprise Edition과 함께 설치할 수도 있고 지원되는 웹 서버를 실행하는 시스템에 따로 설치할 수도 있습니다. 설치 절차에 대한 자세한 내용은 Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Installation Guide의 1 장, Installing Application Server Software 또는 Sun Java Enterprise System 2005Q5 설치 설명서(Java Enterprise System을 사용할 경우)를 참조하십시오.


Sun Java System Web Server 수정 사항

설치 프로그램은 Sun Java System Web Server의 구성 파일에 다음 항목을 추가합니다.

웹 서버 instance’s magnus.conf 파일에 다음이 추가됩니다.

##EE lb-pluginInit 
fn="load-modules"
shlib="web_server_install_dir/plugins/lbplugin/bin/libpassthrough.so" 
funcs="init-passthrough,service-passthrough,name-trans-passthrough" Thread="no"
Init fn="init-passthrough"
##end addition for EE lb-plugin

server instance’s obj.conf 파일에 다음이 추가됩니다.

<Object name=default>
NameTrans fn="name-trans-passthrough" name="lbplugin" 
config-file="web_server_install_dir/web_server_instance/config/loadbalancer.xml"
<Object name="lbplugin">
  ObjectType fn="force-type" type="magnus-internal/lbplugin"
  PathCheck fn="deny-existence" path="*/WEB-INF/*"
  Service type="magnus-internal/lbplugin" 
  fn="service-passthrough"
  Error reason="Bad Gateway" 
  fn="send-error" 
  uri="$docroot/badgateway.html"
</object>

위의 코드에서 lbpluginObject를 고유하게 식별하는 이름이고 web_server_install_dir/web_server_instance/config/loadbalancer.xml은 로드 밸런서가 실행되도록 구성된 가상 서버에 대한 XML 구성 파일의 위치입니다.

설치 후에 HTTP 로드 균형 조정 설정의 설명대로 로드 밸런서를 구성합니다.

Apache Web Server 사용

Apache Web Server를 사용하려면 로드 밸런서 플러그인을 설치하기 전에 특정 구성 단계를 수행해야 합니다. 로드 밸런서 플러그인을 설치하면 Apache Web Server가 다음과 같이 추가로 수정됩니다. 플러그인 설치 후에 추가 구성 단계를 수행해야 합니다.


주 –

Apache 1.3의 경우 여러 Apache 하위 프로세스를 실행할 경우 프로세스마다 고유한 로드 균형 조정 라운드 로빈 시퀀스가 있습니다. 예를 들어, 두 개의 Apache 하위 프로세스가 실행 중이고 로드 밸런서 플러그인이 두 개의 Application Server 인스턴스에 대해 로드 균형 조정을 할 경우 첫 번째 요청과 두 번째 요청은 인스턴스 #1로 보내며 세 번째 요청과 네 번째 요청은 인스턴스 #2로 보냅니다. 이 패턴은 instance1, instance1, instance2, instance2 등으로 반복되며 예상되는 동작, 즉 instance1, instance2, instance1, instance2 등의 패턴과는 다릅니다. Sun Java System Application Server에서 Apache용 로드 밸런서 플러그인은 각 Apache 프로세스에 대해 로드 밸런서 인스턴스를 인스턴스화하여 독립적인 로드 균형 조정 시퀀스를 만듭니다.

--with-mpm=worker 옵션을 사용하여 컴파일할 경우 Apache 2.0에는 멀티스레드된 동작이 발생합니다.


Apache Web Server 사용 요구 사항

Apache Web Server의 경우 Apache 버전에 따라 설치된 프로그램은 다음의 최소 요구 사항을 만족해야 합니다.

Apache 1.3 요구 사항

Apache 1.3을 사용할 경우 로드 밸런서 플러그인에는 다음이 필요합니다.


주 –

gcc 이외의 다른 C 컴파일러를 사용하려면 C 컴파일러의 경로를 설정하고 PATH 환경 변수에서 유틸리티를 작성합니다. 예를 들어, sh 쉘을 사용할 경우에는 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:appserver_installdir/lib를 사용합니다.


Apache 2의 최소 요구 사항

Apache 2.0을 사용할 경우 로드 밸런서 플러그인에는 다음이 필요합니다.

소프트웨어 소스는 http://www.sunfreeware.com에서 구할 수 있습니다.

Apache를 컴파일하기 전에 다음을 수행합니다.


주 –

gcc 이외의 다른 C 컴파일러를 사용하려면 C 컴파일러의 경로를 설정하고 PATH 환경 변수에서 유틸리티를 작성합니다. 예를 들어, sh 쉘을 사용할 경우에는 export LD_LIBRARY_PATH= app_server_install_dir/lib:$LD_LIBRARY_PATH를 사용합니다.


로드 밸런서 플러그인을 설치하기 전 구성

Apache용 로드 밸런서 플러그인을 설치하기 전에 Apache Web Server를 설치합니다. SSL과 함께 실행하려면 Apache 소스를 컴파일하고 빌드해야 합니다. 이 절에서는 로드 밸런서 플러그인을 실행할 수 있도록 Apache Web Server를 성공적으로 컴파일하는 데 필요한 최소 요구 사항 및 고급 단계를 설명합니다. 이러한 요구 사항 및 단계는 Solaris 및 Linux 버전의 소프트웨어에만 적용됩니다. Windows 버전의 Apache에 대한 자세한 내용은 Apache 웹 사이트를 참조하십시오.

ProcedureSSL 인식 Apache 설치

시작하기 전에

이미 Apache 소프트웨어를 다운로드하고 압축을 풀어놓은 상태여야 합니다.

  1. OpenSSL 소스를 다운로드하고 압축을 풉니다.

  2. OpenSSL을 컴파일하고 빌드합니다.

    OpenSSL 0.9.7.e가 설치된 경우 Lunux 플랫폼에서는 이 단계가 필요하지 않습니다.

    다음 명령을 입력합니다.


    cd openssl-0.9.7e
    make
    make install

    OpenSSL에 대한 자세한 내용은 http://www.openssl.org/를 참조하십시오.

  3. Apache 버전에 따라 다음 절차 중 하나를 수행하십시오.

    • Apache 1.3에서 다음 단계를 수행하여 mod_ssl을 사용하여 Apache를 구성합니다.

      1. mod_ssl 소스의 압축을 풉니다.

      2. cd mod_ssl-2.8.14–1.3.x

      3. ./configure –with-apache=../apache_1.3. x --with-ssl=../openssl-0.9.7e --prefix=install_path --enable-module=ssl --enable-shared=ssl --enable-rule=SHARED_CORE --enable-module=so

      위의 명령에서 x는 Apache 버전 번호이고 install_path는 Apache를 설치할 디렉토리입니다.

      mod_ssl에 대한 자세한 내용은 http://www.modssl.org를 참조하십시오.

    • Apache 2.0에 대해 소스 트리를 구성합니다.

      1. cd http-2.0_ x

      2. ./configure --with-ssl= open_ssl_install_path --prefix= install_path --enable-ssl --enable-so를 실행합니다.

        위의 명령에서 x는 Apache 버전 번호이고 open_ssl_install_path는 OpenSSL이 설치된 디렉토리이고 install_path는 Apache를 설치할 디렉토리입니다.

  4. Linux 2.1의 Apache에서 컴파일하기 전에

    1. src/MakeFile 파일을 열고 자동으로 생성된 절의 종료 부분을 찾습니다.

    2. 자동으로 생성된 절의 첫 번째 네 줄 이후에 다음 줄을 추가합니다.

      LIBS+= -licuuc -licui18n -lnspr4 -lpthread -lxerces-c 
      -lsupport -lnsprwrap -lns-httpd40
      LDFLAGS+= -L/appserver_installdir/lib -L/opt/sun/private/lib

      -L/opt/sun/private/lib는 Application Server를 Java Enterprise System 설치의 일부로 설치한 경우에만 필요합니다.

      예를 들면 다음과 같습니다.

      ##(자동으로 생성된 섹션의 끝)
      ## 
      CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS)
      LIBS=$(EXTRA_LIBS) $(LIBS1)
      INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES)
      LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS)
      "LIBS+= -licuuc -licui18n -lnspr4 -lpthread 
      -lxerces-c -lsupport -lnsprwrap -lns-httpd40
      LDFLAGS+= -L/appserver_installdir /lib -L/opt/sun/private/lib
    3. 환경 변수 LD_LIBRARY_PATH를 설정합니다.

      모든 설치에서 이 환경 변수를 다음으로 설정합니다. appserver_install_dir/lib

      Java Enterprise System 설치에서는 이 환경 변수를 appserver_install_dir/lib:opt/sun/private/lib로 설정합니다.

  5. Apache를 사용 중인 버전 설치 지침에 따라 컴파일합니다.

    자세한 내용은 http://httpd.apache.org/를 참조하십시오.

    일반적으로 단계는 다음과 같습니다.

    1. make

    2. make certificate(Apache 1.3용)

    3. make install

      make certificate 명령은 보안 비밀번호를 요청합니다. Apache를 안전하게 시작하려면 암호를 입력해야 하므로 암호를 기억하고 있어야 합니다.

  6. 사용자의 환경에 맞게 Apache를 구성합니다.

Application Server 설치 프로그램에 의한 수정 사항

로드 밸런서 플러그인 설치 프로그램은 웹 서버의 루트 디렉토리의 디렉토리에 필요한 파일의 압축을 풉니다.

웹 서버 인스턴스의 httpd.conf 파일에 다음 항목을 추가합니다.

<VirtualHost machine_name:443>
##Addition for EE lb-plugin
LoadFile /usr/lib/libCstd.so.1
LoadModule apachelbplugin_module libexec/mod_loadbalancer.so
#AddModule mod_apachelbplugin.cpp
<IfModule mod_apachelbplugin.cpp> 
  config-file webserver_instance/conf/loadbalancer.xml
  locale en
</IfModule>
<VirtualHost machine_ip_address>
  DocumentRoot "webserver_instance/htdocs"
  ServerName server_name
</VirtualHost>
##END EE LB Plugin ParametersVersion 7

Procedure로드 밸런서에서 작동하도록 Apache 보안 파일 구성

Apache Web Server가 로드 밸런서 플러그인에서 제대로 작동하려면 올바른 보안 파일이 필요합니다.

  1. apache_install_dir 아래에 sec_db_files라는 디렉토리를 만듭니다.

  2. application_server_domain_dir /config/*.db를 apache_install_dir /sec_db_files로 복사합니다.

  3. 플랫폼에 따라 추가 구성을 수행합니다.

    • Solaris 플랫폼의 경우:

      /usr/lib/mps/secv1 경로를 apache_install_dir/bin/apachectl 스크립트의 LD_LIBRARY_PATH에 추가합니다. 이 경로는 /usr/lib/mps 앞에 추가해야 합니다.

    • Linux의 경우:

      /opt/sun/private/lib 경로를 apache_install_dir/bin/apachectl 스크립트의 LD_LIBRARY_PATH에 추가합니다. 이 경로는 /usr/lib 앞에 추가해야 합니다.

    • Microsoft Windows의 경우:

      1. Path 환경 변수에 새 경로를 추가합니다.

        시작->설정->제어판->시스템->고급->환경 변수->시스템 변수를 누릅니다.

        Path 환경 변수에 application_server_install_dir /bin을 추가합니다.

      2. 환경 변수 NSPR_NATIVE_THREADS_ONLY를 1로 설정합니다.

        환경 변수 창의 시스템 변수에서 새로 만들기를 누릅니다. 변수 이름 NSPR_NATIVE_THREADS_ONLY와 변수 값 1을 입력합니다.

      3. 시스템을 다시 시작합니다.

Microsoft IIS의 수정 사항

로드 밸런서 플러그인을 사용하도록 Microsoft 인터넷 정보 서비스(IIS)를 구성하려면 Windows 인터넷 서비스 관리자에서 특정 등록 정보를 수정합니다. 인터넷 서비스 관리자는 제어판 폴더의 관리 도구 폴더에 있습니다.

Sun Java System Application Server를 설치한 후에 다음과 같이 수정합니다.

Procedure로드 밸런서 플러그인을 사용하도록 Microsoft IIS 구성

  1. 인터넷 서비스 관리자를 엽니다.

  2. 플러그인을 사용할 웹 사이트를 선택합니다.

    이 웹 사이트는 일반적으로 기본 웹 사이트로 명명됩니다.

  3. 웹 사이트를 마우스 오른쪽 버튼으로 누른 다음 속성을 선택하여 속성 노트북을 엽니다.

  4. 다음 단계에 따라 새 ISAPI 필터를 추가합니다.

    1. ISAPI 필터 탭을 엽니다.

    2. 추가를 누릅니다.

    3. 필터 이름 필드에 Application Server를 입력합니다.

    4. 실행 파일 필드에 C:\Inetpub\wwwroot\sun-passthrough\sun-passthrough.dll을 입력합니다.

    5. 확인을 누르고 속성 노트북을 닫습니다.

  5. 새로운 가상 디렉토리를 작성하고 구성합니다.

    1. 기본 웹 사이트를 마우스 오른쪽 버튼으로 누른 다음 가상 디렉토리를 선택합니다.

      가상 디렉토리 작성 마법사가 열립니다.

    2. 별칭 필드에 sun-passthrough를 입력합니다.

    3. 디렉토리 필드에 C:\Inetpub\wwwroot\sun-passthrough를 입력합니다.

    4. 실행 권한 확인란을 선택합니다.

      다른 모든 권한 관련 확인란은 선택 해제한 채로 둡니다.

    5. 마침을 누릅니다.

  6. sun-passthrough.dll 파일의 경로 및 application_server_install_dir/bin을 시스템의 PATH 환경 변수에 추가합니다.

  7. 시스템을 다시 시작합니다.

  8. 새로운 설정을 적용하려면 웹 서버를 중지했다가 다시 시작합니다.

    웹 서버를 중지하려면 웹 사이트를 마우스 오른쪽 버튼으로 누르고 중지를 선택합니다. 웹 서버를 시작하려면 웹 사이트를 마우스 오른쪽 버튼으로 누르고 시작을 선택합니다.

  9. 웹 서버, 로드 밸런서 플러그인 및 Application Server가 제대로 작동하는지 확인합니다.

    웹 브라우저에 다음 사항을 입력하여 웹 응용 프로그램 컨텍스트 루트에 액세스합니다. http://webserver_name/ web_application. 여기서 webserver_name은 웹 서버의 호스트 이름 또는 IP 주소이고 web_applicationC:\Inetpub\wwwroot\sun-passthrough\sun-passthrough.properties 파일에 나열한 컨텍스트 루트입니다.

자동으로 구성된 Sun-passthrough 등록 정보

설치 프로그램에서 sun-passthrough.properties의 다음 등록 정보를 자동으로 구성합니다. 기본값을 변경할 수 있습니다.

등록 정보 

정의 

기본값 

lb-config-file 

로드 밸런서 구성 파일 경로 

IIS_www_root\sun-passthrough\loadbalancer.xml

log-file 

로드 밸런서 로그 파일 경로 

IIS_www_root\sun-passthrough\lb.log

log-level 

웹 서버의 로그 수준 

INFO 

다중 웹 서버 인스턴스 구성

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

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

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

    Sun Java System Web Server 수정 사항, Apache Web Server 사용 또는 설치의 단계를 따릅니다.

  2. DTD 파일을 복사합니다.

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

  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 파일로 내보내는 방법에 대한 자세한 내용은 HTTP 로드 밸런서 구성 만들기를 참조하십시오.

로드 밸런서 구성

로드 밸런서 구성은 domain.xml 파일의 명명된 구성입니다. 로드 밸런서 구성은 매우 융통성이 있습니다.

이 절에서는 다음 내용을 비롯하여 로드 밸런서 구성을 만들고 수정하고 사용하는 방법을 설명합니다.

HTTP 로드 밸런서 구성 만들기

asadmin 명령 create-http-lb-config를 사용하여 로드 밸런서 구성을 만듭니다. HTTP 로드 밸런서 구성 만들기에 매개 변수가 설명되어 있습니다. 자세한 내용은 create-http-lb-config, delete-http-lb-configlist-http-lb-configs에 대한 설명서를 참조하십시오.

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

매개 변수 

설명 

response timeout 

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

HTTPS routing

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

reload interval 

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

monitor 

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

routecookie

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

target 

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

HTTP 로드 밸런서 참조 만들기

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

create-http-lb-ref를 사용하여 참조를 만듭니다. 로드 밸런서 구성 이름과 대상 서버 인스턴스 또는 클러스터를 제공해야 합니다.

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

자세한 내용은 create-http-lb-refdelete-http-lb-ref에 대한 설명서를 참조하십시오.

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

서버 인스턴스나 클러스터에 대한 참조를 만든 후에 enable-http-lb-server를 사용하여 서버 인스턴스나 클러스터를 활성화합니다. 로드 밸런서 구성을 만들 때 서버 인스턴스나 클러스터를 대상으로 사용한 경우 이를 활성화해야 합니다.

자세한 내용은 enable-http-lb-server에 대한 설명서를 참조하십시오.

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

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

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

자세한 내용은 enable-http-lb-application에 대한 온라인 도움말을 참조하십시오.

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

HTTP 상태 검사기 만들기

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

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

상태 검사기 만들기

상태 검사기를 만들려면 asadmin create-http-health-checker 명령을 사용합니다. 다음 매개 변수를 지정합니다.

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

매개 변수 

설명 

기본값 

url 

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

“/” 

interval 

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

30초 

timeout 

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

10초 

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

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

자세한 내용은 create-http-health-checker delete-http-health-checker에 대한 설명서를 참조하십시오.

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

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


주 –

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


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

표 4–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이라는 구성 파일을 사용합니다. asadmin 도구를 사용하여 domain.xml 파일에 로드 밸런서 구성을 만듭니다. 로드 균형 조정 환경을 구성한 후 파일로 내보냅니다.

Procedure로드 밸런서 구성 내보내기

  1. asadmin 명령 export-http-lb-config를 사용하여 loadbalancer.xml 파일을 내보냅니다.

    특정 로드 밸런서 구성에 대한 loadbalancer.xml 파일을 내보냅니다. 경로 및 다른 파일 이름을 지정할 수 있습니다. 파일 이름을 지정하지 않으면 loadbalancer.xml. load_balancer_config_name으로 이름이 지정됩니다. 경로를 지정하지 않으면 application_server_install_dir/domains/domain_name/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/webserver_instance /logs/


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

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

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

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

  1. asadmin disable-http-lb-server를 실행하여 시간 초과(분)를 설정합니다.

  2. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.

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

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

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

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

Procedure응용 프로그램 비활성화

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

    • 시간 초과(분)

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

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

  2. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.

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

HTTP 및 HTTPS 페일오버 구성

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

이 절은 다음 내용으로 구성되어 있습니다.

HTTPS 라우팅

HTTP Secure(HTTPS) 프로토콜은 Secure Sockets Layer(SSL)를 사용하여 보안 통신을 위해 HTTP 요청의 암호화 및 암호 해독을 제공합니다. HTTPS 라우팅을 사용하려면 HTTPS 수신기를 하나 이상 구성해야 합니다.

로드 밸런서 플러그인은 들어오는 모든 HTTP 또는 HTTPS 요청의 경로를 응용 프로그램 서버 인스턴스로 지정합니다. 그러나 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로 설정하거나 나중에 asadmin set 명령을 사용하여 변경합니다.


주 –

https-routingtrue로 설정한 경우 새로운 요청이나 고정된 요청이 들어오는데 클러스터에 정상적인 HTTPS 수신기가 없으면 그 요청에 대해 오류가 발생합니다.


알려진 문제점

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

멱등원(Idempotent) URL 구성

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

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

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

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

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

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

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

응용 프로그램 호환성

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

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

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

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

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

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

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

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

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

    도메인을 백업하려면 asadmin backup-domain 명령을 사용합니다.

  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을 사용하여 인스턴스에 재배포된 응용 프로그램을 활성화합니다.

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

    다음 단계를 수행합니다.

    1. asadmin disable-http-lb-server를 사용하여 서버 인스턴스를 비활성화합니다.

    2. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.

    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를 사용하여 서버 인스턴스를 활성화합니다.

    2. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.

    3. 단일 클러스터에서 업그레이드 단일 클러스터에서 업그레이드에 설명된 대로 웹 서버의 구성 디렉토리로 구성 파일을 복사합니다.

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

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

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

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

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

    도메인을 백업하려면 asadmin backup-domain 명령을 사용합니다.

  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을 사용하여 클러스터에 재배포된 응용 프로그램을 활성화합니다.

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

    1. asadmin disable-http-lb-server를 사용하여 클러스터를 비활성화합니다.

    2. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.

    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를 사용하여 클러스터를 활성화합니다.

    2. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.

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

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

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

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

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

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

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

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

    도메인을 백업하려면 asadmin backup-domain 명령을 사용합니다.

  2. 기존 클러스터와 동일하거나 다른 시스템 집합에 "섀도우 클러스터"를 만듭니다.

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

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

    2. 클러스터와 관련된 모든 자원에 대해 asadmin create-resource-ref를 사용하여 새로 만들어진 클러스터에 대한 자원 참조를 추가합니다.

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

    4. asadmin configure-ha-cluster를 사용하여 클러스터를 고가용성 클러스터로 구성합니다.

    5. asadmin create-http-lb-ref를 사용하여 로드 밸런서 구성 파일에 새로 만들어진 클러스터에 대한 참조를 만듭니다.

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

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

  5. asadmin enable-http-lb-application을 사용하여 클러스터에 배포된 응용 프로그램을 활성화합니다.

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

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

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

  8. asadmin disable-http-lb-server를 사용하여 로드 밸런서에서 이전 클러스터를 비활성화합니다.

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

  10. asadmin enable-http-lb-server를 사용하여 로드 밸런서에서 새 클러스터를 활성화합니다.

  11. asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.

  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로 설정합니다. 모니터링은 기본적으로 비활성화되어 있습니다.

모니터링 메시지

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