이 절에서는 HTTP 로드 밸런서 플러그인에 대해 설명합니다. 다음 항목으로 구성됩니다.
로드 밸런서는 여러 Application Server 인스턴스(독립 실행형 또는 클러스터링) 간에 작업 로드를 균일하게 분산시켜 시스템의 전반적인 처리량을 늘립니다.
로드 밸런서를 사용하면 서버 인스턴스 간에 요청을 페일오버할 수 있습니다. 지속할 HTTP 세션 정보의 경우 HTTP 세션 지속성을 구성합니다. 자세한 내용은 8 장, 고가용성 세션 지속성 및 페일오버 구성을 참조하십시오.
로드 균형 조정 구성에 대한 자세한 지침은 Sun Java System Application Server 고가용성 관리 설명서를 참조하십시오.
관리 콘솔이 아니라 asadmin 도구를 사용하여 HTTP 로드 균형 조정을 구성합니다.
참고 항목:
처음에 HTTP 클라이언트에서 로드 밸런서로 수행된 요청은 새로운 세션에 대한 요청에 해당합니다. 새로운 세션에 대한 요청을 할당되지 않은 요청이라고 합니다. 로드 밸런서는 라운드 로빈 알고리즘에 따라 클러스터의 Application Server 인스턴스로 이 요청을 보냅니다.
Application Server 인스턴스에 세션이 만들어지면 로드 밸런서는 이 세션에 대한 모든 후속 요청의 경로를 특정 인스턴스로만 지정합니다. 기존 세션에 대한 요청을 할당된 요청 또는 고정 요청이라고 합니다.
Sun Java System Application Server 로드 밸런서는 고정 라운드 로빈 알고리즘을 사용하여 들어오는 HTTP 및 HTTPS 요청의 로드 균형을 조정합니다. 지정한 세션의 모든 요청이 동일한 Application Server 인스턴스로 전송됩니다. 고정 로드 밸런서를 사용하면 세션 데이터가 클러스터의 모든 인스턴스에 분산되기 보다는 한 Application Server에 캐시됩니다.
따라서 고정 라운드 로빈 체계는 순수 라운드 로빈 체계가 주는 로드의 균형 분산이라는 이점을 뛰어난 성능 이점으로 대체합니다.
새 HTTP 요청이 로드 밸런서 플러그인으로 보내지면 경량 라운드 로빈 체계에 따라 응용 프로그램 서버 인스턴스로 전달됩니다. 계속해서 이 요청은 쿠키를 사용하거나 명시적 URL을 다시 작성하여 특정한 Application Server 인스턴스에 "고정"됩니다.
고정 정보를 사용해서 로드 밸런서 플러그인은 먼저 이전에 요청을 전달했던 인스턴스를 판별합니다. 해당 인스턴스가 정상일 경우 로드 밸런서 플러그인은 특정 Application Server 인스턴스에 그 요청을 전달합니다. 따라서 지정한 세션의 모든 요청이 동일한 Application Server 인스턴스로 전달됩니다.
로드 밸런서 플러그인은 다음 방법을 사용하여 세션 고정을 판별합니다.
쿠키 방법 : 로드 밸런서 플러그인은 별도의 쿠키를 사용하여 라우팅 정보를 기록합니다. 쿠키 기반 방법을 사용하려면 HTTP 클라이언트에서 쿠키를 지원해야 합니다.
명시적 URL 다시 쓰기: 고정 정보가 URL에 추가됩니다. HTTP 클라이언트에서 쿠키를 지원하지 않더라도 이 방법을 사용할 수 있습니다.
다음 디렉토리에는 로드 균형 조정 및 페일오버를 보여주는 샘플 응용 프로그램이 포함되어 있습니다.
install_dir/samples/ee-samples/highavailability install_dir/samples/ee-samples/failover
ee-samples 디렉토리에는 샘플을 실행할 수 있도록 환경을 설정하는 데 필요한 정보도 포함되어 있습니다.
이 절은 로드 밸런서 플러그인을 설정하는 방법을 설명하며 다음 내용으로 구성됩니다.
로드 밸런서를 구성하기 전에 다음을 수행해야 합니다.
웹 서버를 설치합니다.
로드 밸런서 플러그인을 설치합니다.
설치 절차에 대한 자세한 내용은 Sun Java System Application Server 설치 설명서(독립 실행형 Application Server를 사용할 경우) 또는 Sun Java Enterprise System 설치 설명서(Java Enterprise System을 사용할 경우)를 참조하십시오.
웹 서버를 구성합니다. 자세한 내용은 로드 균형 조정을 사용하도록 웹 서버 구성을 참조하십시오.
로드 균형 조정에 참여할 Application Server 클러스터 또는 서버 인스턴스를 만듭니다.
이러한 클러스터나 인스턴스에 응용 프로그램을 배포합니다.
다음 절에 설명된 것처럼 작업 목표 및 환경에 따라 여러 다른 방법으로 로드 밸런서를 구성할 수 있습니다.
로드 밸런서를 배포하는 가장 일반적인 방법은 서버 인스턴스 클러스터를 사용하는 것입니다. 기본적으로 클러스터의 모든 인스턴스는 동일한 구성을 가지며 동일한 응용 프로그램이 배포됩니다. 로드 밸런서는 서버 인스턴스 간에 작업 로드를 분산시키며 상태가 나쁜 인스턴스에서 상태가 좋은 인스턴스로 요청이 페일오버됩니다. HTTP 세션 지속성을 구성한 경우 요청이 페일오버될 때 세션 정보가 유지됩니다.
여러 개의 클러스터가 있는 경우 요청의 로드 균형이 조정된 후 단일 클러스터에 있는 인스턴스 간에 페일오버됩니다. 로드 밸런서의 여러 클러스터를 사용하여 응용 프로그램의 롤링 업그레이드를 쉽게 수행할 수 있습니다. 자세한 내용은 가용성 손실 없이 응용 프로그램 업그레이드를 참조하십시오.
클러스터 대신 독립 실행형 서버 인스턴스를 사용하도록 로드 밸런서를 구성할 수도 있습니다. 이렇게 구성하면 로드 밸런서 플러그인이 역 프록시 플러그인(통과 플러그인이라고도 함)으로 작동합니다. 웹 서버가 로드 밸런서에서 활성화된 응용 프로그램에 대한 요청을 받으면 Application Server로 직접 요청을 전달합니다.
서버 인스턴스의 클러스터로 구성할 때와 동일한 절차에 따라 통과 플러그인에 대한 로드 밸런서를 구성합니다.
여러 독립 실행형 인스턴스를 사용하고 인스턴스 간에 로드 균형을 조정하고 요청을 페일오버하도록 로드 밸런서를 구성할 수도 있습니다. 그러나 이 구성에서 독립 실행형 인스턴스가 동기종 환경을 가지며 동일한 응용 프로그램이 배포되도록 직접 확인해야 합니다. 클러스터는 자동으로 동기종 환경을 유지하므로 대부분의 환경에서는 클러스터를 사용하는 것이 더 쉽고 적절합니다.
asadmin 도구를 사용하여 작업 환경의 로드 균형 조정을 구성합니다. 이 단계에서 사용되는 asadmin 명령에 대한 자세한 내용은 로드 밸런서 구성을 참조하십시오.
asadmin 명령 create-http-lb-config를 사용하여 로드 밸런서 구성을 만듭니다.
asadmin create-http-lb-ref를 사용하여 로드 밸런서에서 관리할 클러스터 또는 독립 실행형 서버 인스턴스에 대한 참조를 추가합니다.
대상과 함께 로드 밸런서 구성을 만들었고 그 대상이 로드 밸런서가 참조하는 클러스터나 독립 실행형 서버 인스턴스일 경우 이 단계를 생략합니다.
asadmin enable-http-lb-server를 사용하여 로드 밸런서가 참조하는 클러스터나 독립 실행형 서버 인스턴스를 활성화합니다.
asadmin enable-http-lb-application을 사용하여 로드 균형 조정을 할 수 있도록 응용 프로그램을 활성화합니다.
로드 밸런서에서 참조하는 클러스터나 독립 실행형 인스턴스에서 사용할 수 있도록 응용 프로그램을 이미 배포하여 활성화되어 있어야 합니다. 로드 균형 조정을 위한 활성화는 사용을 위한 활성화와 다른 단계입니다.
asadmin create-health-checker를 사용하여 상태 검사기를 만듭니다.
상태 검사기는 비정상적인 서버 인스턴스가 다시 정상적이 되면 로드 밸런서가 새로운 요청을 전송할 수 있도록 이들을 모니터링합니다.
asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 생성합니다.
이 명령을 사용하면 Sun Java System Application Server에 포함되어 있는 로드 밸런서 플러그인과 함께 사용할 수 있는 구성 파일이 생성됩니다.
로드 밸런서 플러그인 구성 파일이 저장되는 웹 서버 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의 구성 파일에 다음 항목을 추가합니다.
웹 서버 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>
위의 코드에서 lbplugin은 Object를 고유하게 식별하는 이름이고 web_server_install_dir/web_server_instance/config/loadbalancer.xml은 로드 밸런서가 실행되도록 구성된 가상 서버에 대한 XML 구성 파일의 위치입니다.
설치 후에 HTTP 로드 균형 조정 설정의 설명대로 로드 밸런서를 구성합니다.
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 버전에 따라 설치된 프로그램은 다음의 최소 요구 사항을 만족해야 합니다.
Apache 1.3을 사용할 경우 로드 밸런서 플러그인에는 다음이 필요합니다.
openssl-0.9.7e(소스)
mod_ssl-2.8.16-1.3.x(소스). 여기서 x는 Apache의 버전을 나타냅니다. mod_ssl 버전은 Apache 버전과 일치해야 합니다.
gcc-3.3-sol9-sparc-local 패키지(Solaris SPARC용)
gcc-3.3-sol9-intel-local 패키지(Solaris x86용)
flex-2.5.4a-sol9-sparc-local 패키지(Solaris SPARC용)
flex-2.5.4a-sol9-intel-local 패키지(Solaris x86용)
소프트웨어 소스는 http://www.sunfreeware.com에서 구할 수 있습니다.
Apache를 컴파일하기 전에 다음을 수행합니다.
Linux 플랫폼에서 동일한 시스템에 Sun Java System Application Server를 설치합니다.
Solaris 운영 체제에서 gcc 버전 3.3 및 make는 PATH에 있어야 하고 flex가 설치되어야 합니다.
Solaris 10 운영 체제에서 OpenSSL용 make를 실행하기 전에 Solaris SPARC의 경우 /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/install-tools, Solaris x86의 경우 /usr/local/lib/gcc-lib/i386-pc-solaris2.9/3.3/install-tools에 있는 mkheaders를 실행합니다.
Red Hat Enterprise Linux Advanced Server 2.1에서 gcc를 사용할 경우 gcc 3.0 이후 버전이어야 합니다.
gcc 이외의 다른 C 컴파일러를 사용하려면 C 컴파일러의 경로를 설정하고 PATH 환경 변수에서 유틸리티를 작성합니다. 예를 들어, sh 쉘을 사용할 경우에는 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:appserver_installdir/lib를 사용합니다.
Apache 2.0을 사용할 경우 로드 밸런서 플러그인에는 다음이 필요합니다.
openssl-0.9.7e(소스)
httpd-2.0.49(소스)
gcc-3.3-sol9-sparc-local packages(Solaris SPARC용)
gcc-3.3-sol9-intel-local packages(Solaris x86용)
flex-2.5.4a-sol9-sparc-local packages(Solaris SPARC용)
flex-2.5.4a-sol9-intel-local packages(Solaris x86용)
소프트웨어 소스는 http://www.sunfreeware.com에서 구할 수 있습니다.
Apache를 컴파일하기 전에 다음을 수행합니다.
Linux 플랫폼에서 동일한 시스템에 Sun Java System Application Server를 설치합니다.
Solaris 운영 체제에서 gcc 버전 3.3 및 make는 PATH에 있어야 하고 flex가 설치되어야 합니다.
Solaris 10 운영 체제에서 OpenSSL용 make를 실행하기 전에 Solaris SPARC의 경우 /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/install-tools, Solaris x86의 경우 /usr/local/lib/gcc-lib/i386-pc-solaris2.9/3.3/install-tools에 있는 mkheaders를 실행합니다.
Red Hat Enterprise Linux Advanced Server 2.1에서 gcc를 사용할 경우 gcc 3.0 이후 버전이어야 합니다.
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 웹 사이트를 참조하십시오.
이미 Apache 소프트웨어를 다운로드하고 압축을 풀어놓은 상태여야 합니다.
OpenSSL 소스를 다운로드하고 압축을 풉니다.
OpenSSL을 컴파일하고 빌드합니다.
OpenSSL 0.9.7.e가 설치된 경우 Lunux 플랫폼에서는 이 단계가 필요하지 않습니다.
다음 명령을 입력합니다.
cd openssl-0.9.7e make make install |
OpenSSL에 대한 자세한 내용은 http://www.openssl.org/를 참조하십시오.
Apache 버전에 따라 다음 절차 중 하나를 수행하십시오.
Apache 1.3에서 다음 단계를 수행하여 mod_ssl을 사용하여 Apache를 구성합니다.
mod_ssl 소스의 압축을 풉니다.
cd mod_ssl-2.8.14–1.3.x
./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에 대해 소스 트리를 구성합니다.
Linux 2.1의 Apache에서 컴파일하기 전에
src/MakeFile 파일을 열고 자동으로 생성된 절의 종료 부분을 찾습니다.
자동으로 생성된 절의 첫 번째 네 줄 이후에 다음 줄을 추가합니다.
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
환경 변수 LD_LIBRARY_PATH를 설정합니다.
모든 설치에서 이 환경 변수를 다음으로 설정합니다. appserver_install_dir/lib
Java Enterprise System 설치에서는 이 환경 변수를 appserver_install_dir/lib:opt/sun/private/lib로 설정합니다.
Apache를 사용 중인 버전 설치 지침에 따라 컴파일합니다.
자세한 내용은 http://httpd.apache.org/를 참조하십시오.
일반적으로 단계는 다음과 같습니다.
사용자의 환경에 맞게 Apache를 구성합니다.
로드 밸런서 플러그인 설치 프로그램은 웹 서버의 루트 디렉토리의 디렉토리에 필요한 파일의 압축을 풉니다.
Apache 1.3에서 이 디렉토리는 libexec입니다.
Apache 2.0에서 이 디렉토리는 modules입니다.
웹 서버 인스턴스의 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
Apache Web Server가 로드 밸런서 플러그인에서 제대로 작동하려면 올바른 보안 파일이 필요합니다.
apache_install_dir 아래에 sec_db_files라는 디렉토리를 만듭니다.
application_server_domain_dir /config/*.db를 apache_install_dir /sec_db_files로 복사합니다.
플랫폼에 따라 추가 구성을 수행합니다.
로드 밸런서 플러그인을 사용하도록 Microsoft 인터넷 정보 서비스(IIS)를 구성하려면 Windows 인터넷 서비스 관리자에서 특정 등록 정보를 수정합니다. 인터넷 서비스 관리자는 제어판 폴더의 관리 도구 폴더에 있습니다.
Sun Java System Application Server를 설치한 후에 다음과 같이 수정합니다.
인터넷 서비스 관리자를 엽니다.
플러그인을 사용할 웹 사이트를 선택합니다.
이 웹 사이트는 일반적으로 기본 웹 사이트로 명명됩니다.
웹 사이트를 마우스 오른쪽 버튼으로 누른 다음 속성을 선택하여 속성 노트북을 엽니다.
다음 단계에 따라 새 ISAPI 필터를 추가합니다.
새로운 가상 디렉토리를 작성하고 구성합니다.
sun-passthrough.dll 파일의 경로 및 application_server_install_dir/bin을 시스템의 PATH 환경 변수에 추가합니다.
시스템을 다시 시작합니다.
새로운 설정을 적용하려면 웹 서버를 중지했다가 다시 시작합니다.
웹 서버를 중지하려면 웹 사이트를 마우스 오른쪽 버튼으로 누르고 중지를 선택합니다. 웹 서버를 시작하려면 웹 사이트를 마우스 오른쪽 버튼으로 누르고 시작을 선택합니다.
웹 서버, 로드 밸런서 플러그인 및 Application Server가 제대로 작동하는지 확인합니다.
웹 브라우저에 다음 사항을 입력하여 웹 응용 프로그램 컨텍스트 루트에 액세스합니다. http://webserver_name/ web_application. 여기서 webserver_name은 웹 서버의 호스트 이름 또는 IP 주소이고 web_application은 C:\Inetpub\wwwroot\sun-passthrough\sun-passthrough.properties 파일에 나열한 컨텍스트 루트입니다.
설치 프로그램에서 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 설치 프로그램을 사용할 경우 단일 시스템에 여러 로드 밸런서 플러그인을 설치할 수 없습니다. 단일 시스템에 로드 밸런서 플러그인과 함께 복수 웹 서버를 두려면 단일 클러스터 또는 복수 클러스터든 상관없이 로드 밸런서 플러그인을 구성하기 위한 몇 가지 수동 단계가 필요합니다.
로드 밸런서 플러그인을 사용하도록 새 웹 서버 인스턴스를 구성합니다.
Sun Java System Web Server 수정 사항, Apache Web Server 사용 또는 설치의 단계를 따릅니다.
DTD 파일을 복사합니다.
기존 웹 서버 인스턴스의 config 디렉토리에서 새 인스턴스의 config 디렉토리로 sun-loadbalancer_1_1.dtd를 복사합니다.
로드 밸런서 구성 파일을 설정합니다. 다음의 두 가지 방법 중 하나를 사용합니다.
기존 로드 밸런서 구성을 복사합니다.
기존 로드 밸런서 구성을 사용하여 기존 웹 서버 인스턴스의 config 디렉토리에서 새 인스턴스의 config 디렉토리로 loadbalancer.xml 파일을 복사합니다.
새 로드 밸런서 구성을 만듭니다.
asadmin create-http-lb-config를 사용하여 새 로드 밸런서 구성을 만듭니다.
asadmin export http-lb-config를 사용하여 새 구성을 loadbalancer.xml 파일로 내보냅니다.
해당 loadbalancer.xml 파일을 새 웹 서버의 config 디렉토리에 복사합니다.
로드 밸런서 구성을 만든 후 loadbalancer.xml 파일로 내보내는 방법에 대한 자세한 내용은 HTTP 로드 밸런서 구성 만들기를 참조하십시오.
로드 밸런서 구성은 domain.xml 파일의 명명된 구성입니다. 로드 밸런서 구성은 매우 융통성이 있습니다.
로드 밸런서마다 하나의 로드 밸런서 구성만 갖지만, 각 로드 밸런서 구성에 여러 로드 밸런서를 연결할 수 있습니다.
로드 밸런서는 하나의 도메인만 지원하지만 한 도메인은 여러 로드 밸런서를 연결할 수 있습니다.
이 절에서는 다음 내용을 비롯하여 로드 밸런서 구성을 만들고 수정하고 사용하는 방법을 설명합니다.
asadmin 명령 create-http-lb-config를 사용하여 로드 밸런서 구성을 만듭니다. HTTP 로드 밸런서 구성 만들기에 매개 변수가 설명되어 있습니다. 자세한 내용은 create-http-lb-config, delete-http-lb-config 및 list-http-lb-configs에 대한 설명서를 참조하십시오.
표 4–1 로드 밸런서 구성 매개 변수
매개 변수 |
설명 |
---|---|
response timeout |
서버 인스턴스에서 응답을 반환해야 하는 시간(초)입니다. 기간 내에 응답을 받지 못하면 서버가 비정상인 것으로 간주됩니다. 기본값은 60입니다. |
로드 밸런서에 대한 HTTPS 요청으로 서버 인스턴스에 대한 HTTPS 또는 HTTP 요청이 발생하는지 여부입니다. 자세한 내용은 HTTPS 라우팅 구성을 참조하십시오. |
|
reload interval |
로드 밸런서 구성 파일 loadbalancer.xml의 변경 사항을 검사하는 간격입니다. 변경 사항이 확인되면 구성 파일을 다시 로드합니다. 값 0을 지정하면 다시 로드가 비활성화됩니다. 자세한 내용은 동적 재구성 활성화를 참조하십시오. |
monitor |
로드 밸런서에 대한 모니터링을 활성화할지 여부입니다. |
경로 정보를 기록할 때 로드 밸런서 플러그인에서 사용하는 쿠키 이름입니다. HTTP 클라이언트가 쿠키를 지원해야 합니다. 쿠키를 저장하기 전에 확인하도록 브라우저를 설정한 경우 쿠키 이름은 JROUTE입니다. |
|
target |
로드 밸런서 구성의 대상입니다. 대상을 지정한 경우 대상에 대한 참조를 추가한 것과 같습니다. 클러스터나 독립 실행형 인스턴스가 대상이 될 수 있습니다. |
로드 밸런서에 독립 실행형 서버나 클러스터에 대한 참조를 만들면 로드 밸런서를 통해 제어되는 대상 서버나 클러스터 목록에 해당 서버나 클러스터가 추가됩니다. 참조된 서버나 클러스터를 enable-http-lb-server를 사용하여 활성화해야 관련 요청의 로드 균형 조정을 수행할 수 있습니다. 대상과 함께 로드 밸런서 구성을 만들었다면 해당 대상이 이미 참조로 추가되어 있습니다.
create-http-lb-ref를 사용하여 참조를 만듭니다. 로드 밸런서 구성 이름과 대상 서버 인스턴스 또는 클러스터를 제공해야 합니다.
참조를 삭제하려면 delete-http-lb-ref를 사용합니다. 참조를 삭제하려면 disable-http-lb-server를 사용하여 참조된 서버나 클러스터를 비활성화해야 합니다.
자세한 내용은 create-http-lb-ref 및 delete-http-lb-ref에 대한 설명서를 참조하십시오.
서버 인스턴스나 클러스터에 대한 참조를 만든 후에 enable-http-lb-server를 사용하여 서버 인스턴스나 클러스터를 활성화합니다. 로드 밸런서 구성을 만들 때 서버 인스턴스나 클러스터를 대상으로 사용한 경우 이를 활성화해야 합니다.
자세한 내용은 enable-http-lb-server에 대한 설명서를 참조하십시오.
로드 밸런서를 통해 관리되는 모든 서버는 동기종 구성을 가져야 하며 동일한 응용 프로그램들이 배포되어야 합니다. 응용 프로그램을 배포하고 액세스할 수 있도록 활성화한 경우(배포 단계 중 또는 이후에 발생함) 로드 균형 조정을 위해 응용 프로그램을 활성화해야 합니다. 로드 균형 조정을 위해 응용 프로그램을 활성화하지 않은 경우 응용 프로그램이 배포된 서버에 대한 요청은 로드 균형 조정되고 페일오버되더라도 이 응용 프로그램에 대한 요청은 로드 균형 조정되지 않고 페일오버됩니다.
응용 프로그램을 활성화할 경우 응용 프로그램 이름과 대상을 지정합니다. 로드 밸런서에서 여러 대상(예: 두 개의 클러스터)을 관리할 경우 모든 대상에서 응용 프로그램을 활성화합니다.
자세한 내용은 enable-http-lb-application에 대한 온라인 도움말을 참조하십시오.
새로운 응용 프로그램을 배포할 경우 로드 균형 조정을 위해 응용 프로그램을 활성화하고 로드 밸런서 구성을 다시 내보내야 합니다.
로드 밸런서의 상태 검사기는 비정상으로 표시된 구성되어 있는 모든 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 상태 검사기 수동 등록 정보
등록 정보 |
정의 |
---|---|
정상 서버 인스턴스를 핑하여 정상인지 확인할지 여부를 나타내는 True/false 플래그입니다. 서버 인스턴스를 핑하려면 플래그를 true로 설정합니다. |
|
서버 인스턴스를 비정상으로 표시하기 전에 로드 밸런서의 상태 검사기가 응답이 없는 서버 인스턴스를 핑하는 횟수를 지정합니다. 유효한 값은 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 파일에 로드 밸런서 구성을 만듭니다. 로드 균형 조정 환경을 구성한 후 파일로 내보냅니다.
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"과 같습니다.
내보낸 로드 밸런서 구성 파일을 웹 서버의 구성 디렉토리에 복사합니다.
예를 들어, Sun Java System Web Server의 경우 해당 위치는 web_server_root/config가 될 수 있습니다.
웹 서버의 구성 디렉토리에 있는 로드 밸런서 구성 파일의 이름은 loadbalancer.xml입니다. 파일 이름이 다를 경우(예: loadbalancer.xml. load_balancer_config_name) 이름을 변경해야 합니다.
서버에 대한 참조를 만들거나 삭제하고, 새 응용 프로그램을 배포하고, 서버나 응용 프로그램을 활성화 또는 비활성화하는 등의 작업을 수행하여 로드 밸런서 구성을 변경할 경우 로드 밸런서 파일을 다시 내보낸 후 웹 서버의 config 디렉토리에 복사합니다. 자세한 내용은 로드 밸런서 구성 파일 내보내기를 참조하십시오.
로드 밸런서 플러그인은 로드 밸런서 구성에 지정한 다시 로드 간격을 기반으로 정기적으로 업데이트된 구성이 있는지 확인합니다. 지정한 시간 후 로드 밸런서가 새로운 구성 파일을 발견하면 해당 구성을 사용하기 시작합니다.
동적 재구성을 수행할 경우 로드 밸런서 플러그인은 업데이트된 구성을 주기적으로 확인합니다.
동적 재구성을 활성화하려면 다음 작업을 수행합니다.
로드 밸런서 구성을 만들 때는 asadmin create-http-lb-config와 함께 --reloadinterval 옵션을 사용합니다.
이 옵션은 로드 밸런서 구성 파일 loadbalancer.xml의 변경 사항을 검사하는 간격을 설정합니다. 값이 0이면 동적 재구성이 비활성화됩니다. 기본적으로 동적 재구성은 60초의 다시 로드 간격으로 활성화됩니다.
동적 재구성을 이전에 비활성화했거나 다시 로드 간격을 변경하려면 asadmin set 명령을 사용합니다.
다시 로드 간격을 변경한 후에 로드 밸런서 구성 파일을 다시 내보내고 웹 서버의 config 디렉토리에 복사한 경우 웹 서버를 다시 시작합니다.
로드 밸런서를 재구성하는 중에 로드 밸런서에 하드 디스크 오류가 발생한 경우 현재 메모리에 있는 구성을 사용합니다. 로드 밸런서는 기존 구성을 덮어쓰기 전에 수정된 구성 데이터가 DTD와 호환되는지 확인합니다.
디스크 읽기 오류가 발생한 경우 경고 메시지가 웹 서버의 오류 로그 파일에 로깅됩니다.
Sun Java System Web Server의 오류 로그는 다음 위치에 있습니다. web_server_install_dir/webserver_instance /logs/
여타의 이유로 응용 프로그램 서버를 중지하기 전에 인스턴스에서 요청의 처리를 완료하기를 원할 수 있습니다. 서버 인스턴스나 클러스터를 적절하게 비활성화하는 프로세스를 정지라고 합니다.
로드 밸런서는 Application Server 인스턴스를 정지하는 데 다음과 같은 정책을 사용합니다.
인스턴스(독립 실행형 또는 클러스터의 일부)를 비활성화했지만 시간 초과가 만기되지 않은 경우 고정된 요청이 계속 해당 인스턴스로 전달됩니다. 그러나 새로운 요청은 비활성화된 인스턴스로 전송되지 않습니다.
시간 초과가 만료되면 인스턴스가 비활성화됩니다. 로드 밸런서에서 인스턴스로 열려있는 모든 연결이 닫힙니다. 이 인스턴스에 고정된 모든 세션이 잘못되지 않았더라도 로드 밸런서는 이 인스턴스에 요청을 전송하지 않습니다. 대신 로드 밸런서는 고정된 요청을 다른 정상적인 인스턴스에 페일오버합니다.
asadmin disable-http-lb-server를 실행하여 시간 초과(분)를 설정합니다.
asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.
내보낸 구성을 웹 서버 config 디렉토리에 복사합니다.
서버 인스턴스나 인스턴스를 중지합니다.
웹 응용 프로그램의 배포를 취소하기 전에 응용 프로그램에서 요청의 처리를 완료하기를 원할 수 있습니다. 응용 프로그램을 적절하게 비활성화하는 프로세스를 정지라고 합니다. 응용 프로그램을 정지할 경우 시간 초과 기간을 지정해야 합니다. 시간 초과 기간에 따라 로드 밸런서는 응용 프로그램 정지를 위해 다음 정책을 사용합니다.
시간 초과가 만료되지 않으면 로드 밸런서는 응용 프로그램에 새 요청을 전달하지 않고 웹 서버로 반환합니다. 그러나 로드 밸런서는 시간 초과가 만료될 때까지 고정 요청을 전달합니다.
시간 초과가 만료되면 로드 밸런서는 고정 요청을 비롯하여 응용 프로그램에 대한 어떠한 요청도 받아들이지 않습니다.
로드 밸런서가 참조하는 모든 서버 인스턴스나 클러스터에서 응용 프로그램을 비활성화할 경우 비활성화된 응용 프로그램의 사용자는 응용 프로그램이 다시 활성화될 때까지 서비스가 손실됩니다. 다른 서버 인스턴스나 클러스터에서 응용 프로그램을 활성화한 채로 두고 하나의 서버 인스턴스나 클러스터에서만 응용 프로그램을 비활성화할 경우 사용자는 계속 그 응용 프로그램에 액세스할 수 있습니다.
다음을 지정하여 asadmin disable-http-lb-application을 사용합니다.
시간 초과(분)
비활성화할 응용 프로그램의 이름
비활성화할 대상 클러스터 또는 인스턴스
asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.
내보낸 구성을 웹 서버 config 디렉토리에 복사합니다.
세션이 연결된 원래 Application Server 인스턴스를 사용할 수 없게 된 경우 로드 밸런서 플러그인은 HTTP/HTTPS 세션을 다른 Application Server 인스턴스로 페일오버합니다. 이 절에서는 HTTP/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 포트에 지정됩니다.
create-http-lb-config 명령의 httpsrouting 옵션은 로드 균형 조정에 참여하는 모든 Application Server에 대해 HTTPS 라우팅의 설정 또는 해제 여부를 제어합니다. 이 옵션을 false로 설정하면 모든 HTTP 및 HTTPS 요청이 HTTP로 전달됩니다. 로드 밸런서 구성을 새로 만들 경우 이 옵션을 true로 설정하거나 나중에 asadmin set 명령을 사용하여 변경합니다.
https-routing을 true로 설정한 경우 새로운 요청이나 고정된 요청이 들어오는데 클러스터에 정상적인 HTTPS 수신기가 없으면 그 요청에 대해 오류가 발생합니다.
로드 밸런서를 사용하여 HTTP/HTTPS 요청을 처리할 때 다음과 같은 제한이 적용됩니다.
세션에 HTTP 및 HTTPS 요청이 모두 있을 경우 첫 번째 요청은 HTTP 요청이어야 합니다. 첫 번째 요청이 HTTPS 요청일 경우 뒤에 HTTP 요청이 올 수 없습니다. 이는 HTTPS 세션과 연관된 쿠키를 브라우저에서 반환하지 않기 때문입니다. 브라우저는 두 개의 다른 프로토콜을 두 개의 다른 서버로 해석하고 새로운 세션을 시작합니다.
httpsrouting을 true로 설정한 경우에만 이 제한 사항이 유효합니다.
세션에 HTTP와 HTTPS 요청이 모두 있을 경우 Application Server 인스턴스가 HTTP와 HTTPS 수신기 모두에 대해 구성되어야 합니다.
httpsrouting을 true로 설정한 경우에만 이 제한 사항이 유효합니다.
세션에 HTTP 및 HTTPS 요청이 모두 있을 경우 Application Server 인스턴스를 표준 포트 번호(HTTP의 경우 80, HTTPS의 경우 443)를 사용하는 HTTP 및 HTTPS 수신기와 함께 구성해야 합니다. httpsrouting에 설정된 값과 상관없이 이 제한 사항이 유효합니다.
멱등원(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 Guide의 Configuring Idempotent URL Requests를 참조하십시오.
가용성 손실 없이 응용 프로그램을 새 버전으로 업그레이드하는 것을 롤링 업그레이드라고 합니다. 업그레이드 중에 응용 프로그램의 두 버전을 주의해서 관리하면 응용 프로그램의 현재 사용자가 중단 없이 작업을 완료하면서 새로운 사용자가 새 버전의 응용 프로그램을 투명하게 가져올 수 있습니다. 롤링 업그레이드 수행 시 사용자는 업그레이드가 발생하는지 모릅니다.
롤링 업그레이드는 두 응용 프로그램 버전 간 변경 사항의 정도에 따라 간단할 수도 있고 복잡할 수도 있습니다.
정적 텍스트나 이미지가 변경된 경우처럼 표면적인 부분만 변경되면 응용 프로그램의 두 버전은 호환되며 동일한 클러스터에서 실행될 수 있습니다. 호환되는 응용 프로그램은 다음과 같아야 합니다.
동일한 세션 정보를 사용합니다.
호환되는 데이터베이스 스키마를 사용합니다.
일반적으로 호환되는 응용 프로그램 수준 비즈니스 논리를 갖습니다.
동일한 물리적 데이터 소스를 사용합니다.
단일 클러스터나 다중 클러스터에서 호환되는 응용 프로그램의 롤링 업그레이드를 수행할 수 있습니다. 자세한 내용은 단일 클러스터에서 업그레이드를 참조하십시오.
응용 프로그램의 두 버전이 위의 기준을 만족하지 않으면 응용 프로그램은 호환되지 않는 것으로 간주됩니다. 한 클러스터에서 응용 프로그램의 호환되지 않는 버전을 실행하면 응용 프로그램 데이터가 손상되고 세션 페일오버가 제대로 작동하지 않을 수 있습니다. 이러한 문제는 비호환 상태의 유형 및 정도에 따라 다릅니다. 새 버전을 배포할 "섀도우 클러스터"를 만들어 호환되지 않는 응용 프로그램을 업그레이드하고 이전 클러스터 및 응용 프로그램을 천천히 정지하는 것이 좋습니다. 자세한 내용은 호환되지 않는 응용 프로그램 업그레이드를 참조하십시오.
응용 프로그램 버전의 호환 여부는 응용 프로그램 개발자 및 관리자는 판단하는 것이 가장 좋습니다. 호환 여부가 불확실하면 안전하게 호환되지 않는 것으로 간주합니다.
클러스터 구성이 다른 클러스터와 공유되지 않을 경우, 단일 클러스터에 배포된 응용 프로그램의 롤링 업그레이드를 수행할 수 있습니다.
이전 버전의 응용 프로그램을 저장하거나 도메인을 백업합니다.
도메인을 백업하려면 asadmin backup-domain 명령을 사용합니다.
클러스터에 대해 동적 재구성(활성화된 경우)을 해제합니다.
관리 콘솔에서 다음 작업을 수행합니다.
또는 다음 명령을 사용합니다.
asadmin set --user user --passwordfile password_file cluster_name -config.dynamic-reconfiguration-enabled=false
업그레이드된 응용 프로그램을 대상 domain에 다시 배포합니다.
관리 콘솔을 사용하여 재배포할 경우 도메인이 자동으로 대상이 됩니다. asadmin을 사용할 경우 대상 domain을 지정합니다. 동적 재구성을 사용할 수 없기 때문에 이전 응용 프로그램은 계속해서 클러스터에서 실행됩니다.
asadmin enable-http-lb-application을 사용하여 인스턴스에 재배포된 응용 프로그램을 활성화합니다.
로드 밸런서에서 클러스터에 있는 한 서버 인스턴스를 정지합니다.
다음 단계를 수행합니다.
asadmin disable-http-lb-server를 사용하여 서버 인스턴스를 비활성화합니다.
asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.
내보낸 구성 파일을 웹 서버 인스턴스의 구성 디렉토리에 복사합니다.
예를 들어, Sun Java System Web Server의 경우 해당 위치는 web_server_install_dir/https-host-name/config/loadbalancer.xml입니다. 로드 밸런서가 새 구성 파일을 로드하게 하려면 로드 밸런서 구성에서 reloadinterval을 설정하여 동적 재구성이 활성화되도록 합니다.
시간 초과가 만료될 때까지 대기합니다.
로드 밸런서의 로그 파일을 모니터링하여 인스턴스가 오프라인인지 확인합니다. 재시도 URL을 만나면 정지 기간을 건너뛰고 서버를 즉시 다시 시작합니다.
클러스터의 다른 인스턴스가 계속 실행되는 동안 비활성화된 서버 인스턴스를 다시 시작합니다.
다시 시작하면 서버가 도메인과 동기화되고 응용 프로그램이 업데이트됩니다.
다시 시작한 서버의 응용 프로그램을 테스트하여 제대로 실행되는지 확인합니다.
로드 밸런서에서 서버 인스턴스를 다시 활성화합니다.
다음 단계를 수행합니다.
asadmin enable-http-lb-server를 사용하여 서버 인스턴스를 활성화합니다.
asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.
단일 클러스터에서 업그레이드의 단일 클러스터에서 업그레이드에 설명된 대로 웹 서버의 구성 디렉토리로 구성 파일을 복사합니다.
클러스터의 각 인스턴스에 대해 5-8 단계를 반복합니다.
모든 서버 인스턴스에 새로운 응용 프로그램이 있고 실행 중일 경우 클러스터에 대한 동적 재구성을 다시 활성화할 수 있습니다.
이전 버전의 응용 프로그램을 저장하거나 도메인을 백업합니다.
도메인을 백업하려면 asadmin backup-domain 명령을 사용합니다.
모든 클러스터에 대해 동적 재구성(활성화된 경우)을 해제합니다.
관리 콘솔에서 다음 작업을 수행합니다.
구성 노드를 확장합니다.
한 클러스터의 구성 이름을 누릅니다.
구성 시스템 등록 정보 페이지에서 동적 재구성 사용 가능 확인란을 선택 해제합니다.
저장을 누릅니다.
다른 클러스터에 대해서도 반복합니다.
또는 다음 명령을 사용합니다.
asadmin set --user user --passwordfile password_file cluster_name-config.dynamic-reconfiguration-enabled=false
업그레이드된 응용 프로그램을 대상 domain에 다시 배포합니다.
관리 콘솔을 사용하여 재배포할 경우 도메인이 자동으로 대상이 됩니다. asadmin을 사용할 경우 대상 domain을 지정합니다. 동적 재구성이 비활성화되어 있기 때문에 이전 응용 프로그램은 계속해서 클러스터에서 실행됩니다.
asadmin enable-http-lb-application을 사용하여 클러스터에 재배포된 응용 프로그램을 활성화합니다.
로드 밸런서에서 한 클러스터를 정지합니다.
asadmin disable-http-lb-server를 사용하여 클러스터를 비활성화합니다.
asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.
내보낸 구성 파일을 웹 서버 인스턴스의 구성 디렉토리에 복사합니다.
예를 들어, Sun Java System Web Server의 경우 해당 위치는 web_server_install_dir/https-host-name/config/loadbalancer.xml입니다. 로드 밸런서 구성에서 reloadinterval을 설정하여 로드 밸런서에 대해 동적 재구성을 활성화해야 합니다. 이렇게 해야 새 로드 밸런서 구성 파일이 자동으로 로드됩니다.
시간 초과가 만료될 때까지 대기합니다.
로드 밸런서의 로그 파일을 모니터링하여 인스턴스가 오프라인인지 확인합니다. 재시도 URL을 만나면 정지 기간을 건너뛰고 서버를 즉시 다시 시작합니다.
다른 클러스터를 계속 실행하면서 비활성화된 클러스터를 다시 시작합니다.
다시 시작하면 클러스터가 도메인과 동기화되고 응용 프로그램이 업데이트됩니다.
다시 시작한 클러스터의 응용 프로그램을 테스트하여 제대로 실행되는지 확인합니다.
로드 밸런서에서 클러스터를 다시 활성화합니다.
다른 클러스터에 대해서도 5-8단계를 반복합니다.
모든 서버 인스턴스에 새로운 응용 프로그램이 있고 실행 중일 경우 모든 클러스터에 대한 동적 재구성을 다시 활성화할 수 있습니다.
응용 프로그램을 호환되게 만드는 방법에 대한 자세한 내용은 응용 프로그램 호환성을 참조하십시오. 새 버전의 응용 프로그램은 이전 버전과 호환되지 않습니다. 또한 두 개 이상의 클러스터에서 호환되지 않는 응용 프로그램을 업그레이드해야 합니다. 클러스터가 하나만 있으면 아래에 설명된 것처럼 업그레이드를 위해 "섀도우 클러스터"를 만듭니다.
호환되지 않는 응용 프로그램을 업그레이드할 경우:
새 버전의 응용 프로그램에 이전 버전의 응용 프로그램과는 다른 이름을 지정합니다. 아래 단계에서는 응용 프로그램의 이름이 변경된다고 가정합니다.
데이터 스키마가 호환되지 않으면 데이터 마이그레이션을 계획한 후에 다른 물리적 데이터 소스를 사용합니다.
이전 버전이 배포된 클러스터와는 다른 클러스터로 새 버전을 배포합니다.
이전 응용 프로그램에 대한 요청이 새 클러스터로 페일오버되지 않으므로 해당 응용 프로그램이 실행되는 클러스터를 오프라인으로 만들기 전에 해당 클러스터에 대해 적절히 긴 시간 초과를 설정합니다. 이러한 사용자 세션은 실패하게 됩니다.
이전 버전의 응용 프로그램을 저장하거나 도메인을 백업합니다.
도메인을 백업하려면 asadmin backup-domain 명령을 사용합니다.
기존 클러스터와 동일하거나 다른 시스템 집합에 "섀도우 클러스터"를 만듭니다.
관리 콘솔을 사용하여 새 클러스터를 만들고 기존 클러스터의 명명된 구성을 참조합니다.
각 시스템에서 새 인스턴스에 대한 포트를 사용자 정의하여 기존 활성 포트와 충돌하지 않도록 합니다.
클러스터와 관련된 모든 자원에 대해 asadmin create-resource-ref를 사용하여 새로 만들어진 클러스터에 대한 자원 참조를 추가합니다.
asadmin create-application-ref를 사용하여 새로 만들어진 클러스터에서 해당 클러스터로 배포된 다른 모든 응용 프로그램(현재 재배포된 응용 프로그램 제외)에 대한 참조를 만듭니다.
asadmin configure-ha-cluster를 사용하여 클러스터를 고가용성 클러스터로 구성합니다.
asadmin create-http-lb-ref를 사용하여 로드 밸런서 구성 파일에 새로 만들어진 클러스터에 대한 참조를 만듭니다.
새 버전의 응용 프로그램에 이전 버전과는 다른 이름을 지정합니다.
새 클러스터에 새 응용 프로그램을 대상으로 배포합니다. 다른 컨텍스트 루트를 사용합니다.
asadmin enable-http-lb-application을 사용하여 클러스터에 배포된 응용 프로그램을 활성화합니다.
다른 클러스터를 계속 실행하면서 새 클러스터를 시작합니다.
시작하면 클러스터가 도메인과 동기화되고 새 응용 프로그램으로 업데이트됩니다.
새 클러스터의 응용 프로그램을 테스트하여 제대로 실행되는지 확인합니다.
asadmin disable-http-lb-server를 사용하여 로드 밸런서에서 이전 클러스터를 비활성화합니다.
느린 세션이 지속되는 기간에 대한 시간 초과를 설정합니다.
asadmin enable-http-lb-server를 사용하여 로드 밸런서에서 새 클러스터를 활성화합니다.
asadmin export-http-lb-config를 사용하여 로드 밸런서 구성 파일을 내보냅니다.
내보낸 구성 파일을 웹 서버 인스턴스의 구성 디렉토리에 복사합니다.
예를 들어, Sun Java System Web Server의 경우 해당 위치는 web_server_install_dir/https-host-name/config/loadbalancer.xml입니다. 로드 밸런서 구성에서 reloadinterval을 설정하여 로드 밸런서에 대해 동적 재구성을 활성화해야 합니다. 이렇게 해야 새 로드 밸런서 구성 파일이 자동으로 로드됩니다.
시간 초과 기간이 만료되거나 이전 응용 프로그램의 모든 사용자가 종료하면 이전 클러스터를 중지하고 이전 응용 프로그램을 삭제하십시오.
로드 밸런서 플러그인은 웹 서버의 로깅 메커니즘을 사용하여 로그 메시지를 씁니다. Application Server의 기본 로그 수준은 Sun Java System Web Server의 기본 로깅 수준(INFO), Apache Web Server의 기본 로깅 수준(WARN) 및 Microsoft IIS의 기본 로깅 수준(INFO)으로 설정됩니다. Application Server 로그 수준 FINE, FINER 및 FINEST는 웹 서버의 DEBUG 수준에 매핑됩니다.
이 로그 메시지는 웹 서버 로그 파일에 기록되고, 스크립트를 사용하여 구문 분석하거나 스프레드시트로 가져와서 필수 메트릭을 계산할 수 있는 원시 데이터 형식입니다.
로드 밸런서 플러그인은 다음과 같은 로그 메시지 유형을 생성합니다.
멱등원(Idempotent) URL과 오류 페이지 설정을 사용할 경우 이 메시지가 기록됩니다.
멱등원(Idempotent) URL 패턴 구성 출력에는 다음 정보가 포함됩니다.
로그 수준을 FINE으로 설정한 경우:
CONFxxxx: IdempotentUrlPattern configured <url-pattern> <no-of-retries> for web-module : <web-module>
로그 수준을 SEVERE로 설정한 경우:
CONFxxxx: Duplicate entry of Idempotent URL element <url-pattern> for webModule <web-module> in loadbalancer.xml."
로그 수준을 WARN으로 설정한 경우:
CONFxxxx: Invalid IdempotentUrlPatternData <url-pattern> for web-module <web-module>
오류 페이지 URL 구성의 출력에는 다음 정보가 포함됩니다(WARN으로 설정된 로그 수준).
CONFxxxx: Invalid error-url for web-module <web-module>
요청을 로드 균형 조정하고 디스패치하는 동안 이 로그 메시지가 생성됩니다.
메소드 시작을 위한 표준 로깅 출력에는 다음 정보가 포함됩니다(FINE으로 설정된 로그 수준).
ROUTxxxx: Executing Router method <method_name>
메소드 시작을 위한 라우터 로그 출력에는 다음 정보가 포함됩니다(INFO로 설정된 로그 수준).
ROUTxxxx: Successfully Selected another ServerInstance for idempotent request <Request-URL>
런타임 로그 출력에는 다음 정보가 포함됩니다(INFO로 설정된 로그 수준).
RNTMxxxx: Retrying Idempotent <GET/POST/HEAD> Request <Request-URL>
구성 문제가 있을 경우, 예를 들어 참조하는 사용자 정의 오류 페이지가 누락된 경우 이 오류가 표시됩니다.
INFO로 설정된 로그 수준:
ROUTxxxx: Non Idempotent Request <Request-URL> cannot be retried
예를 들면 다음과 같습니다. ROUTxxxx: Non Idempotent Request http://sun.com/addToDB?x=11&abc=2 cannot be retried
FINE으로 설정된 로그 수준:
RNTMxxxx: Invalid / Missing Custom error-url / page: <error-url> for web-module: <web-module>
예를 들면 다음과 같습니다. RNTMxxxx: Invalid / Missing Custom error-url / page: myerror1xyz for web-module: test
로드 밸런서 플러그인은 다음 정보를 기록합니다.
모든 요청의 요청 시작/중지 정보
비정상 인스턴스에서 정상 인스턴스로 요청이 페일오버된 경우 페일오버된 요청 정보
모든 상태 검사 주기가 끝나는 시점의 비정상 인스턴스 목록
로드 밸런서에서 로깅이 활성화된 경우, 그리고 웹 서버 로그 수준을 DEBUG로 설정하거나 자세한 메시지를 인쇄할 경우 로드 밸런서는 HTTP 세션 아이디를 웹 서버 로그 파일에 기록합니다. 따라서 로드 밸런서 플러그인을 호스트하는 웹 서버가 DMZ에 있을 경우 프로덕션 환경에서 DEBUG 또는 유사한 로그 수준을 사용하지 마십시오.
DEBUG 로그 수준을 사용해야 할 경우 loadbalancer.xml에서 require-monitor-data 등록 정보를 false로 설정하여 로드 밸런서 로깅을 해제하십시오.
웹 서버에 로깅 옵션을 설정합니다. 절차는 웹 서버에 따라 다릅니다.
로드 밸런서 구성의 monitor 옵션을 true로 설정합니다.
로드 밸런서 구성을 처음 만들 경우 asadmin create-http-lb-config 명령을 사용하여 모니터링을 true로 설정하거나, asadmin set 명령을 사용하여 나중에 true로 설정합니다. 모니터링은 기본적으로 비활성화되어 있습니다.
로드 밸런서 플러그인 로그 메시지의 형식은 다음과 같습니다.
HTTP 요청의 시작에는 다음 정보가 포함되어 있습니다.
RequestStart Sticky(New) <req-id> <time-stamp> <URL>
타임스탬프 값은 1970년 1월 1일부터의 밀리초입니다. 예를 들면 다음과 같습니다.
RequestStart New 123456 602983 http://austen.sun.com/Webapps-simple/servlet/Example1
HTTP 요청의 끝에는 다음과 같이 RequestExit 메시지가 포함됩니다.
RequestExit Sticky(New) <req-id> <time-stamp> <URL> <listener-id> <response-time> Failure-<reason for error>(incase of a failure)
예를 들면 다음과 같습니다.
RequestExit New 123456 603001 http://austen.sun.com/Webapps-simple/servlet/Example1 http://austen:2222 18
RequestExit 메시지에서 <response-time>은 로드 밸런서 플러그인의 관점에서 전체 요청 반환 시간(밀리초)을 나타냅니다.
비정상 인스턴스 목록은 다음과 같습니다.
UnhealthyInstances <cluster-id> <time-stamp> <listener-id>, <listener-id>...
예를 들면 다음과 같습니다.
UnhealthyInstances cluster1 701923 http://austen:2210, http://austen:3010
페일오버된 요청 목록은 다음과 같습니다.
FailedoverRequest <req-id> <time-stamp> <URL> <session-id> <failed-over-listener-id> <unhealthy-listener-id>
예를 들면 다음과 같습니다.
FailedoverRequest 239496 705623 http://austen.sun.com/Apps/servlet/SessionTest 16dfdac3c7e80a40 http://austen:4044 http://austen:4045