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

10장 RMI-IIOP 로드 균형 조정 및 페일오버

이 장에서는 RMI-IIOP를 통해 원격 EJB 참조 및 JNDI 객체에 대해 Sun Java System Application Server의 고가용성 기능을 사용하는 방법을 설명합니다.

개요

RMI-IIOP 로드 균형 조정 기능을 사용하면 IIOP 클라이언트 요청이 여러 다른 서버 인스턴스나 이름 서버에 분산됩니다. 목표는 클러스터 내에서 로드를 균일하게 분산시켜 확장성을 제공하는 것입니다. IIOP 로드 균형 조정 기능과 EJB 클러스터링 및 가용성을 함께 사용하면 EJB 페일오버가 구현됩니다.

클라이언트가 객체에 대해 JNDI 조회를 수행하면 이름 지정 서비스는 특정 서버 인스턴스와 관련된 InitialContext(IC) 객체를 만듭니다. 그러면 해당 IC 객체를 사용하여 수행된 모든 조회 요청은 동일한 서버 인스턴스로 보내집니다. 해당 InitialContext를 사용하여 조회된 모든 EJBHome 객체는 동일한 대상 서버에 호스트됩니다. 이후에 가져온 모든 Bean 참조 또한 동일한 대상 호스트에서 만들어집니다. 이 경우 InitialContext 객체를 만들 때 모든 클라이언트가 활성 대상 서버 목록을 임의화하므로 로드 균형 조정이 효과적으로 구현될 수 있습니다. 대상 서버 인스턴스가 작동 중단되면 조회 또는 EJB 메소드 호출은 다른 서버 인스턴스로 페일오버됩니다.

IIOP 로드 균형 조정 및 페일오버는 투명하게 발생합니다. 응용 프로그램 배포 중에 특별한 단계가 필요하지는 않습니다. 그러나 클러스터에서 새 인스턴스를 추가 또는 삭제해도 클러스터의 기존 클라이언트 뷰가 업데이트되지 않습니다. 이렇게 하려면 클라이언트측의 종점 목록을 수동으로 업데이트해야 합니다.

요구 사항

Sun Java System Application Server Enterprise Edition에서는 다음이 모두 적용될 경우 RMI-IIOP를 통해 원격 EJB 참조 및 NameService 객체의 고가용성을 제공합니다.

Application Server에서는 Application Server에 배포된 EJB 구성 요소에 액세스하는 다음 RMI-IIOP 클라이언트에 대해 로드 균형 조정을 지원합니다.


주 –

Application Server에서는 SSL(Secure Sockets Layer)을 통한 RMI-IIOP 로드 균형 조정 및 페일오버를 지원하지 않습니다.


알고리즘

Application Server에서는 RMI-IIOP 로드 균형 조정 및 페일오버에 대해 임의화 및 라운드 로빈 알고리즘을 사용합니다.

RMI-IIOP 클라이언트가 새로운 InitialContext 객체를 처음 만들면 해당 클라이언트에 대해 사용 가능한 Application Server IIOP 종점 목록이 임의화됩니다. InitialContext 객체의 경우 로드 밸런서는 조회 요청 및 다른 InitialContext 작업을 목록의 첫 번째 종점으로 지정합니다. 첫 번째 종점을 사용할 수 없는 경우 목록의 두 번째 종점을 사용하는 식으로 계속합니다.

클라이언트가 계속해서 새로운 InitialContext 객체를 만들 때마다 종점 목록이 회전하므로 InitialContext 작업에 대해 다른 IIOP 종점이 사용됩니다.

InitialContext 객체에서 가져온 참조에서 Bean을 가져오거나 만들 경우 해당 Bean은 InitialContext 객체에 할당된 IIOP 종점 역할을 하는 Application Server 인스턴스에 만들어집니다. 해당 Bean에 대한 참조에는 클러스터에 있는 모든 Application Server 인스턴스의 IIOP 종점 주소가 포함됩니다.

기본 종점은 Bean을 조회하거나 만드는 데 사용된 InitialContext 종점에 해당하는 Bean 종점입니다. 클러스터의 다른 IIOP 종점은 대체 종점으로 지정됩니다. Bean의 기본 종점을 사용할 수 없게 되면 해당 Bean의 추가 요청이 대체 종점 중 하나로 페일오버됩니다.

You can configure ACC에서 실행되는 응용 프로그램 및 독립 실행형 Java 클라이언트에서 작동되도록 RMI-IIOP 로드 균형 조정 및 페일오버를 구성할 수 있습니다.

샘플 응용 프로그램

다음 디렉토리에는 ACC가 있거나 없는 RMI-IIOP 페일오버를 사용하는 것을 설명하는 샘플 응용 프로그램이 포함되어 있습니다.

install_dir/samples/ee-samples/sfsbfailover

ACC가 있거나 없는 응용 프로그램을 실행하는 방법에 대한 자세한 내용은 이 샘플과 함께 제공된 index.html 파일을 참조하십시오. ee-samples 디렉토리에는 샘플을 실행할 수 있도록 환경을 설정하는 데 필요한 정보도 포함되어 있습니다.

RMI-IIOP 로드 균형 조정 및 페일오버 설정

ACC(Application Client Container)에서 실행되는 응용 프로그램 및 독립 실행형 클라이언트 응용 프로그램에 대해 RMI-IIOP 로드 균형 조정 및 페일오버를 설정할 수 있습니다.

ProcedureApplication Client Container에 대해 RMI-IIOP 로드 균형 조정 설정

이 절차에서는 ACC(Application Client Container)와 함께 RMI-IIOP 로드 균형 조정 및 페일오버를 사용하는 데 필요한 단계를 개략적으로 설명합니다. ACC에 대한 자세한 내용은 Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Developer’s GuideDeveloping Clients Using the ACC를 참조하십시오.

  1. install_dir /bin 디렉토리로 이동합니다.

  2. package-appclient를 실행합니다.

    이 유틸리티는 appclient.jar 파일을 생성합니다. package-appclient에 대한 자세한 내용은 package-appclient( 1M)를 참조하십시오.

  3. 클라이언트에서 압축을 풀 시스템으로 appclient.jar 파일을 복사합니다.

  4. 해당 시스템의 올바른 디렉토리 값을 참조하도록 asenv.conf 또는 asenv.bat 경로 변수를 편집합니다.

    파일은 appclient-install-dir /config/에 있습니다.

    업데이트할 경로 변수 목록을 보려면 package-appclient( 1M)를 참조하십시오.

  5. 필요하면 appclient 스크립트를 실행 파일로 만듭니다.

    예를 들어, UNIX에서 chmod 700을 사용합니다.

  6. 클러스터의 인스턴스에 대한 IIOP 수신기 포트 번호를 찾습니다.

    IIOP 수신기를 종점으로 지정하여 요청을 받을 IIOP 수신기를 결정합니다. 관리 콘솔에 IIOP 수신기 표시

    1. 관리 콘솔의 트리 구성 요소에서 클러스터 노드를 확장합니다.

    2. 클러스터를 확장합니다.

    3. 클러스터의 인스턴스를 선택합니다.

    4. 오른쪽 창에서 등록 정보 탭을 누릅니다.

      특정 인스턴스에 대한 IIOP 수신기 포트를 기록합니다.

    5. 모든 인스턴스에 대해 이 프로세스를 반복합니다.

  7. 종점 값으로 sun-acc.xml을 입력합니다.

    이전 단계의 IIOP 수신기를 사용하여 다음 형식으로 종점 값을 만듭니다.

    machine1:instance1–iiop-port, machine2:instance2–iiop-port

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

    <property name="com.sun.appserv.iiop.endpoints" value="host1.sun.com:3335,host2.sun.com:3333,host3.sun.com:3334"\>

  8. --retrieve 옵션을 통해 클라이언트 응용 프로그램을 배포하여 클라이언트 jar 파일을 가져옵니다.

    클라이언트 jar 파일을 클라이언트 시스템에 보관합니다.

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

    asadmin deploy --user admin --passwordfile pw.txt --retrieve /my_dir myapp

  9. 다음과 같이 응용 프로그램 클라이언트를 실행합니다.

    appclient -client clientjar -name appname

다음 순서

페일오버를 테스트하려면 클러스터의 한 인스턴스를 중지하고 응용 프로그램이 제대로 작동하는지 확인합니다. 클라이언트 응용 프로그램에 중단점(또는 일시 정지)이 있을 수도 있습니다.

로드 균형 조정 기능을 테스트하려면 여러 클라이언트를 사용하고 모든 종점에 로드가 분산되는 방식을 확인하십시오.

Procedure독립 실행형 클라이언트에 대해 RMI-IIOP 로드 균형 조정 및 페일오버 설정

  1. --retrieve 옵션을 통해 응용 프로그램을 배포하여 클라이언트 jar 파일을 가져옵니다.

    클라이언트 jar 파일을 클라이언트 시스템에 보관합니다.

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

    asadmin deploy --user admin --passwordfile pw.txt --retrieve /my_dir myapp

  2. 종점 및 InitialContext-D 값으로 지정하여 클라이언트 jar 및 필수 jar 파일을 실행합니다.

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

    java -Dcom.sun.appserv.iiop.endpoints=
    host1.sun.com:33700,host2.sun.com:33700,host3.sun.com:33700 
    samples.rmiiiopclient.client.Standalone_Client
다음 순서

페일오버를 테스트하려면 클러스터의 한 인스턴스를 중지한 후 응용 프로그램이 정상적으로 작동하는지 확인합니다. 클라이언트 응용 프로그램에 중단점(또는 일시 정지)이 있을 수도 있습니다.

로드 균형 조정 기능을 테스트하려면 여러 클라이언트를 사용하고 모든 종점에 로드가 분산되는 방식을 확인하십시오.