Sun Java System Web Server 7.0 Update 3 관리자 설명서

4장 배포 시나리오

이 장에서는 Web Server 를 클러스터 환경에 단일 노드로 배포하는 방법에 대해 설명합니다. 이 장에서는 다음 항목을 다룹니다.

배포 구조

이 절에서는 단일 노드 배포 구조에 대해 설명합니다.

다음 그림은 단일 노드 배포 설정의 Web Server를 나타냅니다.

단일 노드 배포 설정의 Web Server

그림에서 Web Server 배포 설정은 다음 구성 요소로 이루어집니다.

배포 개요

다음과 같은 목적이 있는 경우 단일 노드에 Web Server를 배포하는 것을 고려할 수 있습니다.

다음 순서도는 Web Server를 노드에 배포하는 방법을 간략하게 표현한 것입니다.

그림 4–1 단일 노드에서 웹 서버 배포를 나타내는 순서도

노드에 웹 서버를 배포하는 단계를 나타내는 순서도

배포 프로세스에 대해서는 다음 절에서 설명합니다.

배포 전 요구 사항

단일 노드에 Web Server를 배포하려면 다음 작업을 수행하여 시스템을 준비하십시오.

  1. 노드에 Web Server를 설치합니다.

    Web Server를 설치하면서 Express 설치 옵션을 선택한 경우에는 다음 기본 항목이 작성됩니다.

    • Administration Server

    • HTTP Listener 하나와 가상 서버가 만들어진 기본 구성. 구성과 가상 서버의 이름은 호스트 이름과 같습니다.

    • 기본 구성의 인스턴스

    Web Server 설치에 대한 자세한 내용은 Sun Java System Web Server 7.0 Update 3 Installation and Migration Guide의 2 장, Installing the Web Server를 참조하십시오.

    지원되는 플랫폼 및 시스템 요구 사항에 대한 자세한 내용은 Sun Java System Web Server 7.0 Update 3 릴리스 노트지원되는 플랫폼을 참조하십시오.

  2. Administration Server를 시작합니다.

    Administration Server가 지정된 SSL 포트에서 실행되기 시작합니다.

Web Server 배포

다음 절차를 수행하여 노드에 Web Server를 배포합니다.

  1. 기본 구성을 사용할 수도 있고 새 구성을 만들 수도 있습니다.

    새 구성을 만드는 경우에는 구성에 고유한 이름을 지정합니다. 새 구성은 가상 서버와 기본 HTTP Listener를 만듭니다.


    주 –

    관리 콘솔을 사용하여 구성을 만드는 경우 마법사에서 새 인스턴스를 만들라는 내용의 프롬프트를 표시합니다. CLI를 사용하는 경우에는 create-instance 명령을 사용하여 구성의 인스턴스를 명시적으로 만들어야 합니다.


    모든 구성은 <install_dir>/admin-server/ 디렉토리 아래에 있는 config-store 디렉토리에 저장됩니다.


    주의 – 주의 –

    config-store 디렉토리에 있는 파일을 편집하지 마십시오. 이 디렉토리의 파일은 Web Server 에서 내부용 사용 목적으로 작성했습니다.


  2. 수정된 구성을 배포합니다.

클러스터 환경

클러스터는 두 개 이상의 노드에 걸쳐 있는 여러 서버 인스턴스의 그룹이며, 모두 동일한 구성으로 실행됩니다. 클러스터에 있는 모든 인스턴스는 함께 작동하며 고가용성, 안정성, 확장 가능성을 제공합니다.

클러스터는 로드 균형 조정을 사용하여 페일오버 및 세션 복제를 수행하며 인터럽트 없는 서비스 및 세션 데이터의 지속성을 제공합니다.

하드웨어 및 소프트웨어 요구 사항

이 절에서 설명하는 사용자 사례에서 Web Server 클러스터는 다음 항목으로 구성됩니다.

1) 4개의 인스턴스(동일한 4개의 노드에서 실행) 

2) Administration Server 

HTTP 요청의 로드 균형 조정을 위한 역방향 프록시 

클러스터를 설정하려면 동일한 운영 체제 버전과 패치가 설치된 두 개 이상의 동일한 노드가 필요합니다. 예를 들어 Solaris® 9 SPARC® 운영 체제를 사용하는 시스템을 선택한 경우 클러스터에 있는 다른 시스템에도 Solaris 9 SPARC가 설치되어 있어야 합니다.

지원되는 플랫폼 및 패치 요구 사항에 대한 자세한 내용은 Sun Java System Web Server 7.0 Update 3 릴리스 노트를 참조하십시오.

다음 그림은 클러스터 환경을 나타냅니다.

그림 4–2 클러스터 설정

클러스터 설정을 나타내는 그림

그림에서 노드는 DMZ(De-Militarized Zone)에 구성되어 있습니다. Administration Server는 방화벽 뒤의 Militarized Zone에 구성되며 Administration Server에 대한 일반 액세스를 제한하고 보호합니다. 다른 노드가 역방향 프록시 서버로 구성됩니다. 역방향 프록시 서버는 보안을 강화하기 위해 DMZ 내부에 상주합니다.


주 –

Solaris 영역 기능은 Solaris 10 운영 체제에서만 지원됩니다.


클러스터 설정

이 절에서는 클러스터를 설정하고 역방향 프록시를 사용 가능하게 설정하여 HTTP 요청의 로드 균형 조정을 지원하는 방법에 대해 설명합니다.

다음 순서도는 클러스터를 설정하는 절차를 나타냅니다.

그림 4–3 클러스터 설정을 나타내는 순서도

클러스터 설정 단계를 나타내는 순서도

  1. 노드 중 하나에 클러스터의 Administration Server 역할을 하는 Web Server를 설치합니다.

  2. 다른 세 개의 노드에 Web Server를 설치합니다. Web Server를 관리 노드로 설치하는 옵션을 선택합니다. 설치 중에 노드를 서버에 등록하는 옵션을 선택합니다.

  3. 관리 노드는 보안 모드에서만 서버에 등록할 수 있기 때문에 Administration Server의 통신에는 SSL 포트만 사용해야 합니다.

  4. Administration Server와 관리 노드가 설치되어 있는 모든 노드의 시스템 날짜와 시간은 같아야 합니다. 서버와 연결된 인증서는 Administration Server가 설치된 노드의 시스템 날짜와 시간을 기반으로 작성됩니다. 관리 노드의 시스템 날짜가 Administration Server보다 이전이면 Administration Server의 인증서가 유효하지 않기 때문에 등록이 실패합니다. 따라서 인증서가 만료된 경우에도 유효한 것으로 처리될 수 있습니다.

  5. install_dir/admin-server/bin/ 디렉토리에서 Administration Server를 시작합니다.

    install_dir/admin-server/bin>./startserv

  6. 관리 노드에서 wadm 명령줄 도구를 시작합니다. wadm 명령줄 도구는 install_dir/bin 디렉토리에 있습니다.

    install_dir/bin>./wadm

  7. 각 관리 노드를 Administration Server에 등록합니다. register-node 명령을 사용하여 각 노드를 서버에 등록합니다.

    예:


    ./wadm register-node -user=admin --host=abc.sfbay.sun.com --port=8989

    여기서

    abc.sfbay.sun.com

    노드를 등록할 Administration Server의 호스트 이름입니다.

    port

    Administration Server의 SSL 포트 번호입니다.

  8. 관리 비밀번호를 입력하는 프롬프트가 표시됩니다. Administration Server의 관리 비밀번호를 입력합니다.

    Administration Server와 관리 노드는 Administration Server에서 관리 노드의 서버 인증서를 신뢰하고 관리 노드에서 Administration Server가 제공하는 클라이언트 인증서를 신뢰하는 방식으로 서로를 인증합니다. 관리 노드를 등록하는 동안 Administration Server가 해당 관리 노드의 서버 인증서를 생성합니다. 그러면 이 인증서가 다운로드되고 관리 노드에 설치됩니다. 서버 인증서 발급자도 관리 노드에 설치됩니다.


    주 –

    등록은 SSL을 통해서만 수행될 수 있습니다.


    노드 등록에 대한 자세한 내용은 Sun Java System Web Server 7.0 Update 3 Installation and Migration GuideRegistering the Administration Node From the Command-Line을 참조하십시오.

  9. install_dir/admin-server/bin/ 디렉토리에서 startserv 명령을 사용하여 모든 관리 노드를 시작합니다.

  10. 관리 콘솔 또는 CLI를 사용하여 Administration Server에 새 구성을 만듭니다.

    구성 이름, HTTP Listener 포트 및 서버 이름과 같은 구성 정보를 새 구성에 지정합니다.

  11. 모든 노드에 구성 인스턴스를 만듭니다.

  12. 모든 노드에서 인스턴스를 시작합니다.


    주 –

    Web Server에는 클러스터를 확장 또는 축소할 수 있는 유연성이 있습니다. 언제든지 인스턴스를 클러스터에 추가하거나 클러스터에서 제거할 수 있습니다.


로드 균형 조정을 위한 역방향 프록시 구성

Web Server 7.0은 정교한 내장 로드 밸런서인 역방향 프록시를 제공합니다. 역방향 프록시는 서버 팜에 있는 Web Server의 게이트웨이입니다. 역방향 프록시를 구성하면 비슷하게 구성된 여러 개의 웹 서버로 요청이 전달됩니다.

다음 절차에 따라 Web Server 7.0에서 역방향 프록시를 사용 가능하게 설정합니다.

  1. 역방향 프록시 구성에 사용할 노드에 Web Server를 설치합니다.

  2. 구성을 만듭니다. 예를 들면 rp와 같습니다.

  3. 관리 콘솔을 사용하여 구성 > 가상 서버 > 내용 처리 > 역방향 프록시 탭을 선택합니다. 새로 만들기 버튼을 누릅니다.

  4. 역방향 프록시 URI와 클러스터에 있는 모든 시스템의 서버 URL을 쉼표로 구분하여 입력합니다.

    서버 URL은 hostname: portnumber 형식으로 입력합니다.

  5. 변경 사항을 저장합니다.

  6. 수정된 구성을 배포하여 변경 사항을 구성에 적용합니다.

  7. 이렇게 수정된 구성의 모든 인스턴스를 시작합니다.

그러면 HTTP 요청의 로드 균형 조정을 위한 역방향 프록시 구성이 완료됩니다.


주 –

클러스터 환경에서 역방향 프록시를 구성하려면 와일드카드 서버 인증서를 발행하거나 원래 서버의 실제 호스트 이름으로 설정할 수 있는 대체 주체 이름을 지정합니다. 개체 이름 필드에 원래 서버의 호스트 이름을 지정하는 다른 옵션의 경우 클러스터의 크기가 제한되므로 클러스터에 노드를 더 추가할 경우 클러스터가 작동하지 않을 수 있습니다.

관리 인터페이스를 사용하여 와일드카드 서버 인증서를 만들 수 있습니다. 서버 인증서를 만든 후 certutil을 사용하여 base64로 암호화된 버전의 인증서를 받은 다음 로드 밸런서 구성에 신뢰할 수 있는 CA 인증서로 설치합니다.

base64 암호화 인증서를 생성하려면 다음 명령을 입력합니다. bash$./certutil -L -a -d instancedir/config. 명령 결과를 복사하여 인증서 설치 마법사에 붙여넣습니다.


역방향 프록시에서 시간 초과 매개 변수 구성

Procedure역방향 프록시에서 시간 초과 매개 변수를 구성하는 방법

  1. 관리 콘솔에 로그인합니다.

  2. 목록에서 구성을 선택합니다.

  3. 가상 서버 편집 버튼을 누릅니다.

  4. 내용 처리 탭을 누릅니다.

  5. 역방향 프록시 하위 탭을 누릅니다.

  6. 역방향 프록시 목록에서 URI를 누릅니다.

    새 창이 열립니다.

  7. HTTP 클라이언트 구성 링크를 누릅니다.

  8. 유휴 시간 초과 매개 변수를 편집할 수 있습니다. 기본값은 300입니다.

백엔드 인스턴스 모니터링

이 절에서는 백엔드 인스턴스의 상태 확인에 대해 자세하게 설명합니다.

Web Server 7.0의 route_offline_thread는 백엔드 인스턴스의 상태를 확인합니다. OPTIONS HTTP 요청을 전송하여 활성 상태의 모든 백엔드 인스턴스를 조회합니다. 서버가 응답하면 백엔드 인스턴스가 활성 상태임이 확인됩니다. 초기 단계 이후에는 스레드에서 60초(이 시간 주기는 구성할 수 없음)마다 오프라인 백엔드 인스턴스의 상태를 확인합니다. 이제 route_offline_thread는 오프라인 인스턴스에 연결을 시도하고 성공적으로 연결되면 OPTIONS HTTP 요청을 전송합니다. 인스턴스가 응답하면 대기 상태에서 복구되는 즉시 route_offline_thread가 해당 인스턴스를 온라인으로 식별합니다. 따라서 스레드는 시스템과 백엔드 인스턴스의 성능에 영향을 미치지 않습니다.

백엔드 인스턴스가 온라인으로 확인된 후에 종료되거나 중단되면 route_offline_thread가 상태를 추적할 수 없습니다. 이러한 인스턴스가 Web Server 역방향 프록시 매개 변수로 선택된 경우, 요청 처리 시 인스턴스 연결이 끊어졌음을 나타내는 읽기 또는 전송 오류가 발생합니다.

obj.conf 파일에서 http-client-config ObjectType 함수를 사용하여 응답 시간 초과 값을 정의할 수 있습니다.


ObjectType fn="http-client-config" timeout="400"

주 –

기본 시간 초과 값은 300초입니다.


응답 시간 초과 값을 정의한 경우 역방향 프록시 매개 변수에서 연결이 400초 이상 지연될 경우 백엔드 인스턴스 연결을 종료하고 해당 인스턴스를 오프라인으로 식별합니다.

역방향 프록시 매개 변수에서 보류 중이거나 과도하게 사용 중인 백엔드 인스턴스와 연결을 시도하는 경우 최대 5초 동안 연결 응답을 기다린 후 인스턴스를 오프라인으로 식별합니다.

그래픽 인터페이스에서 Web Server를 역방향 프록시로 사용

Procedure그래픽 인터페이스에서 역방향 프록시를 구성하는 방법

  1. 관리 콘솔에 로그인합니다.

  2. 목록에서 구성을 선택합니다.

  3. 가상 서버 편집 버튼을 누릅니다.

  4. 내용 처리 탭을 누릅니다.

  5. 역방향 프록시 하위 탭을 누릅니다.

  6. 새로 만들기 버튼을 누릅니다.

    새 창이 열립니다.

  7. 요청을 모두 역방향 프록시로 설정하려면 URI에 (/)를 입력합니다. 또한 역방향 프록시로 설정할 URI를 입력합니다.

  8. 프록시 방향을 반대로 바꿀 서버의 URL을 입력합니다.

    예: http://<content server-hostname>:port

  9. 확인 버튼을 누릅니다.

  10. 화면 오른쪽 상단에 있는 보류 중인 배포 링크를 누릅니다.

  11. 배포 버튼을 누릅니다.

    배포 성공 메시지가 표시됩니다.

  12. 구성 탭을 누릅니다.

  13. 인스턴스를 시작합니다.

    역방향 프록시로 구성한 URI에 액세스합니다.

역방향 프록시 사용자 정의

조건부 요청 처리를 구성하려면 가상 서버별 obj.conf 파일을 수동으로 편집해야 합니다.

예를 들어 모든 .jsp, .php 요청에 대해 역방향 프록시를 구성하려는 경우입니다. 다음 텍스트를 obj.conf 파일에 삽입해야 합니다.


<If $uri =~ '.jsp$' or $uri =~ '.php$'> 
NameTrans fn="map" from="/" to="http:/" name="custom_reverse_proxy"
</If>

주 –

객체 이름 default 아래에 위의 텍스트를 삽입해야 합니다. obj.conf 파일 끝에 다음 텍스트를 추가합니다.


<Object name ="custom_reverse_proxy">
Route fn="set-origin-server" server="http://<hostname>:<port>"
</Object>

<Object name ppath="http:*"
Service fn="proxy-retrieve" method="*"
</Object>

CLI 모드에서 Web Server를 역방향 프록시로 사용

CLI 모드로 역방향 프록시를 구성하려면 아래 단계를 수행합니다. 예를 들어 config1 구성을 만든 다음 rp 인스턴스를 역방향 프록시로 만듭니다.

  1. Administration Server를 시작합니다.

    $ <install-dir>/admin-server/bin/startserv

  2. CLI 쉘을 호출합니다.

    <install-dir> /admin-server/bin/wadm -user <username>

    이제 wadm 쉘이 보입니다.

  3. config1을 만듭니다.

    wadm>create-config --http-port 8080 --server-name config1 --server-user root config1

  4. config1 구성에 대해 인스턴스를 만듭니다.

    wadm>create-instance --config config1 <host-name>

  5. 작성된 구성에서 웹 응용 프로그램을 추가합니다.

    wadm>add-webapp --config config1 -vs config1 --uri/test <warfile>

  6. 웹 응용 프로그램을 배포합니다.

    wadm>deploy-config --user=admin --password-file=admin.pwd --host=serverhost --port=8989 config1

  7. rp 구성을 만듭니다.

    wadm>create-config --http-port 8081 --server-name rp --server-user root rp

    다음 명령을 사용하여 역방향 프록시에 대해 rp 구성을 활성화합니다.

    wadm>create-reverse-proxy --config rp --vs rp --uri-prefix/--server http://<host-name>:8080

  8. rp 구성에 대한 인스턴스를 만듭니다.

    wadm>create-instance --config rp <host-name>

  9. 인스턴스를 시작합니다.

    wadm>start-instance --config config1 <host-name>

    wadm>start-instance --config rp <hostname>

이제 config1으로 배포된 웹 응용 프로그램을 rp 인스턴스를 통해 볼 수 있습니다.

http://<rp instance hostname>:8081/test

세션 복제

세션 복제는 세션에 저장된 데이터를 다른 인스턴스에 복제하는 데 사용되는 기법입니다. 하지만 복제된 인스턴스는 동일한 클러스터의 일부여야 합니다. 클러스터 환경에서 세션 복제가 사용 가능한 경우에는 전체 세션 데이터가 복제된 인스턴스에 복사됩니다. 하지만 세션 복제 작업은 세션에 있는 일련화할 수 없는 속성과 인스턴스별 데이터를 복사하지 않습니다.

세션 복제는 로드 균형 조정과 함께 웹 응용 프로그램에 페일오버 기능을 제공합니다.

세션 복제 및 페일오버 작업

이 절에서는 세션 복제 작업에 대해 자세히 설명합니다.

웹 요청이 끝날 때 Web Server는 서버 구성 파일 server.xml에 저장된 세션 복제 구성을 통해 세션 데이터를 복사해야 하는지 여부를 결정합니다.

4개의 인스턴스가 클러스터를 이루며 Administration Server에서 세션 복제가 사용 가능한 경우를 생각할 수 있습니다.

4개의 노드에서 실행되는 4개의 인스턴스(A, B, C 및 D)로 이루어진 Web Server 클러스터에서 세션 복제 프로세스는 다음과 같습니다.

Web Server 클러스터 환경에서 페일오버 프로세스는 다음과 같습니다.

Web Server 7.0은 세션 복제에서 다음 기능을 지원하지 않습니다.

세션 복제 활성화

관리 콘솔이나 CLI를 사용하여 클러스터에서 세션 복제를 활성화할 수 있습니다. 세션 복제를 활성화하려면 브라우저에서 쿠기가 사용 가능해야 합니다.

server.xml 파일에는 세션 복제와 관련된 정보가 있습니다. 다음은 세션 복제가 활성화된 샘플 server.xml 파일입니다.

<cluster>
		<local-host>hostA</local-host>
			<instance>
         <host>hostB</host>
      </instance>
      <instance>
          <host>hostC</host>
      </instance>
       <instance>
          <host>hostD</host>
      </instance>
      <instance>
           <host>hostA</host>
    <session-replication/>
</cluster>
			

다음 요소의 기본값을 사용하는 경우에는 server.xml 구성 파일에서 이러한 요소의 항목을 사용할 수 없습니다.

Port number(기본값은 1099)

Protocol(기본값은 jrmp)

Encrypted(기본값은 false)

Getattribute Triggers Replication(기본값은 true)

Replica Discovery MaxHops(기본값은 –1)

Startup Discovery Timeout(기본값은 0. Java API를 기반으로 시스템 시간을 조정합니다. Unix 기반 운영 체제가 아닌 경우 정확도가 떨어질 수 있습니다.)

Cookie Name(기본값은 CLUSTERSESSIONLOCATOR)

이러한 세션 복제 등록 정보에 대한 자세한 내용은Sun Java System Web Server 7.0 Update 3 Administrator’s Configuration File Reference를 참조하십시오.

세션 복제를 위한 웹 응용 프로그램 구성

서버에서 세션을 복제할 수 있게 하려면 웹 응용 프로그램도 세션 복제용으로 활성화해야 합니다.

  1. 웹 응용 프로그램의 세션 복제를 활성화하려면 <web-application>/WEB-INF 디렉토리에 있는 sun-web.xml 구성 파일을 수정합니다.

    sunweb.xml에서 수정해야 할 사항은 다음과 같습니다.

    <session-manager/> 요소를 <session-manager persistence-type="replicated">로 변경합니다.

    다음은 세션 복제가 활성화된 샘플 sun-web.xml 파일입니다.

    <sun-web-app>
    		<session-config>
         <session-manager persistence-type="replicated">
         </session-manager>
      </session-config>
    </sun-web-app>
  2. sunweb.xml 파일을 수정한 후 웹 응용 프로그램을 다시 작성하거나 응용 프로그램을 JAR 파일로 다시 만들어 웹 응용 프로그램 아카이브(war 파일)를 만듭니다.

  3. 모든 인스턴스를 다시 시작하여 모든 인스턴스에서 웹 응용 프로그램을 사용할 수 있게 합니다.

  4. 웹 응용 프로그램은 클러스터의 모든 노드에서 액세스할 수 있습니다. 웹 응용 프로그램에 액세스하려면 브라우저에서 다음을 입력합니다.

    http://webserver-name/webapplication-name/


    주 –

    모든 노드에 액세스할 수 있는 디렉토리를 사용하는 것이 배포할 응용 프로그램을 저장하는 가장 좋은 방법입니다. 하지만 이 디렉토리에서 Administration Server에 액세스할 수 있어야 하는 것은 아닙니다. 크기가 1MB를 넘는 웹 응용 프로그램의 경우에는 디렉토리 기반 배포를 사용하는 것이 좋습니다.

    검색 모음을 만드는 경우 모든 노드에 액세스할 수 있는 일반 디렉토리에 검색 모음이 있어야 합니다.


클러스터 모니터링

Administration Server에서는 클러스터에 있는 모든 인스턴스를 모니터할 수 있습니다. Web Server의 모니터링 기능은 다음 작업에 사용할 수 있는 런타임 구성 요소와 프로세스의 상태에 대한 정보를 제공합니다.

 

Solaris 영역

Solaris 영역은 Solaris 10의 응용 프로그램 및 자원 관리 기능입니다. 영역 환경은 일반적으로 프로세스 관리, 메모리, 네트워크 구성, 파일 시스템, 패키지 레지스트리, 사용자 계정, 공유 라이브러리 및 경우에 따라 설치된 응용 프로그램과 같은 자원으로 구성되어 있습니다. 영역을 사용하면 Solaris 인스턴스 내에서 가상화된 운영 체제 환경을 만들 수 있으므로 하나 이상의 프로세스를 시스템의 다른 작동과 격리하여 실행할 수 있습니다. 여기에는 물리적 장치 경로 및 네트워크 인터페이스 이름, 네트워크 라우팅 테이블과 같이 응용 프로그램이 배포된 시스템의 물리적 속성에서 응용 프로그램을 분리하는 추상화 계층도 제공됩니다. 이러한 격리를 통해 사용자 아이디와 기타 자격 증명 정보에 관계없이 지정된 영역에서 실행되는 프로세스가 다른 영역에서 실행되는 프로세스를 모니터하거나 영향을 주는 것을 방지할 수 있습니다.

영역은 하나 이상의 응용 프로그램이 시스템의 나머지 부분에 영향을 주거나 상호 작용하지 않고 실행될 수 있는 샌드 박스입니다.

Solaris 영역에 대한 자세한 내용은 http://docs.sun.com/app/docs/doc/817-1592에 있는 System Administration Guide — Solaris Containers-Resource Management and Solaris Zones를 참조하십시오.