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

로드 밸런서 구성

로드 밸런서 구성은 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를 참조하십시오.