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에서도 찾을 수 있습니다.
appserver_install_dir/lib/install/templates의 roundrobin.c를 작업 디렉토리(예: /home/user/workspacelb)로 복사합니다.
roundrobin.c를 ANSI C/C++ 컴파일러(예: Sun Studio 컴파일러 또는 GCC)로 컴파일합니다. 정적 실행 파일이 아니라 동적 공유 라이브러리를 빌드해야 합니다.
Sun Studio CC 컴파일러를 사용하는 경우 다음 명령을 사용하여 컴파일합니다.
cc -G -I<appserver install dir>/lib/install/templates roundrobin.c -o roundrobin.so
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
loadbalancer.xml이 새로 빌드된 모듈을 가리키도록 변경합니다. 편집한 후 loadbalancer.xml은 다음과 같습니다.
<cluster name="cluster1" policy="user-defined" policy-module="home/user/workspacelb/roundrobin.so">
roundrobin.so를 웹 서버 인스턴스 디렉토리로 복사합니다.
웹 서버를 시작하거나(실행 중이 아닐 경우) 로드 밸런서가 다시 구성될 때까지 기다립니다.