본문으로 건너뛰기

18.7 배포스캐너를 이용한 배포

새로운 애플리케이션을 배포하기 위해 특정 디렉터리를 모니터링하는 모듈이 ‘배포 스캐너’이다.

배포스캐너는 두 가지 방법으로 배포를 제어한다. 첫 번째는 배포 디렉터리에 있는 배포 파일(WAR, EAR, JAR, SAR 파일)을 주기적으로 스캔하여 배포하는 ‘자동 배포’ 방법이다. 두 번째는 주기적인 스캔을 통한 배포를 이용하지 않고, 마커 파일을 이용하여 수동으로 배포를 제어하는 ‘수동 배포’ 방법이다. 배포 스캐너는 도메인 모드에서는 사용할 수 없다.

자동 배포

배포스캐너는 배포 디렉터리($jboss.server.base.dir/deployments)를 주기적으로 체크하고 있다가 새로운 애플리케이션이나 변경이 있으면 로드하여, 배포, 재배포한다. 자동 배포는 애플리케이션의 개발 시점에서는 매우 편리한 기능이지만, 운영 환경에서는 자동 배포하지 않도록 설정을 변경해야 한다. 배포스캐너에 대한 설정 변경은 CLI를 사용하여 /subsystem=deployment-scanner 서브시스템에서 할 수 있다.

다음은 CLI 명령을 사용하여 배포스캐너의 설정을 확인하는 방법이다.

[standalone@localhost:9999 /] cd subsystem=deployment-scanner

[standalone@localhost:9999 subsystem=deployment-scanner] :read-resource(recursive=true)

{
"outcome" => "success",
"result" => {
"scanner" => {
"default" => {
"auto-deploy-exploded" => false,
"auto-deploy-xml" => true,
"auto-deploy-zipped" => true,
"deployment-timeout" => 600,
"path" => "deployments",
"relative-to" => "jboss.server.base.dir",
"scan-enabled" => true,
"scan-interval" => 5000
}
}
}
}

배포 스캐너에서 설정할 수 있는 파라미터는 다음과 같다.

파라미터데이터타입설명
nameSTRING스캐너의 이름, 기본값은 ‘default’
pathSTRING스캐너가 감시하는 파일 시스템의 경로 * relative-to가 설정되지 않은 경우:절대 경로 * relative-to가 설정된 경우:상대 경로
relative-toSTRING디렉터리의 지정 환경 변수 등에 설정한 경로를 참조하는 경로로 기본값은 ‘jboss.server.base.dir’
scan-enabledBOOLEAN스캔을 사용할 것인지를 지정
scan-intervalINT스캔 간격을 밀리 세컨드로 지정 1 이상의 값을 지정했을 경우에만 스캔이 실행된다.
auto-deploy-zippedBOOLEAN압축된 애플리케이션 콘텐츠를 .dodeploy 마커 파일를 사용하지 않고 배포할 것인지를 지정
auto-deploy-explodedBOOLEANexploded (압축이 풀린) 형식인 애플리케이션 콘텐츠를 .dodeploy 마커 파일을 사용하지 않고 배포할 것인지를 지정 애플리케이션을 배포하는 중 콘텐츠가 수정될 수 있기 때문에 이 방식을 사용하는 것은 추천하지 않는다.
deployment-timeoutLONG배포의 타임아웃 기본값:60 초

표 3. 배포 스캐너 파라미터

스캔 간격

스캔 간격(scan-interval)은 배포스캐너가 디렉터리 스캔 간격을 지정하는 항목이다. 스캔 간격을 0으로 설정하면 자동 배포는 사용할 수 없다. 서버 시작시 배포 및 마커 파일로 수동 배포 제어를 할 수 있다.

다음에 스캔 간격(scan-interval)을 0으로 설정하는 CLI 예제이다.

[standalone@localhost:9999 subsystem=deployment-scanner] cd scanner=default

[standalone@localhost:9999 scanner=default] :write-attribute(name=scan-interval,value=0)

{"outcome" => "success"}

배포스캐너 사용 설정

배포스캐너의 scan-enabled 속성은 배포스캐너 기능을 사용할 것인지를 지정하는 항목이다.

이 설정은 standalone*.xml파일의 deployment-scanner 서브시스템의 scan-enabled 항목을 설정하면 된다. 서버 시작 시에만 배포하고 싶은 경우, scan-enabled 항목을 false로 설정한다.

[standalone@localhost:9999 scanner=default] :write-attribute(name=scan-enabled,value=false)

{"outcome" => "success"}

수동 배포

배포스캐너는 애플리케이션 배포 디렉터리에 있는 콘텐츠 자체는 감시하지 않는다. 대신 스캐너는 마커 파일 시스템을 사용하여 그 마커 파일을 추가, 삭제하는 것을 명령어로 스캐너에 전달하여 콘텐츠를 배포, 제거한다.

마커 파일

마커 파일(Marker Files)은 관련하는 콘텐츠의 파일명 뒤의 확장자(extension)를 추가하여 만든다. 예를 들어, example.war 파일의 배포하기 위한 마커 파일명은 example.war.dodeploy가 된다. 마커 파일은 파일 내에 내용이 없는 0 바이트 비어있는 파일을 만들면 된다. 리눅스에서는 touch 명령을 이용하여 파일을 만들 수 있다. 예를 들면 ‘touch example.war.dodeploy’ 명령은 빈 파일을 생성한다.

마커 파일의 확장자의 종류는 다음과 같다.

확장자설명작업주체
.dodeploy애플리케이션을 배포하라고 알린다. 이미 배포했을 경우엔 재배포한다. 사용자가 작성하는 파일이다.관리자가 배포 시 작성
.skipdeploy이 애플리케이션은 자동배포를 사용하지 않는다는 것을 뜻한다. exploded 애플리케이션을 업데이트할 때, 재배포되지 않도록 할 때 사용할 수 있다.관리자가 작성
.isdeploying애플리케이션이 배포 중임을 나타내는 파일이다. 배포스캐너가 작성하는 파일이다.시스템에서 자동생성
.deployed애플리케이션 배포가 완료되었음을 나타낸다. 배포스캐너가 작성하는 파일로 사용자가 이 파일을 삭제했을 경우엔 콘텐츠가 배포되지 않는다.시스템에서 자동생성
.failed애플리케이션 배포 중 오류가 발생하여 배포 실패한 것을 나타낸다. 배포 스캐너가 작성하는 파일로 파일 안에 배포 오류 메시지가 들어있다.시스템에서 자동생성
.isundeploying.dodeploy 파일이 삭제되어 애플리케이션이 undeploy 되고 있는 상태를 나타낸다. 배포 스캐너가 작성하는 파일이다. undeploy가 완료되면, 이 마커 파일은 삭제된다.시스템에서 자동생성
.undeployed애플리케이션이 undeploy된 상태를 나타낸다.시스템에서 자동생성
.pending서버에서 애플리케이션을 배포하고 있거나, 문제가 생겨 애플리케이션 배포 명령을 서버에 보내지 못한 생태를 나타낸다.시스템에서 자동생성

표 4. 마커 파일의 종류

  • 배포 스캐너를 사용한 새로운 애플리케이션 배포

    아래와 같이 배포 스캐너의 ‘scan-enabled=true’ 속성을 확인한다.

    [standalone@localhost:9999 scanner=default] /subsystem=deployment-scanner/scanner=default:read-resource(recursive=true)

    {

    "outcome" => "success",
    "result" => {
    "auto-deploy-exploded" => false,
    "auto-deploy-xml" => true,
    "auto-deploy-zipped" => true,
    "deployment-timeout" => 600,
    "path" => "deployments",
    "relative-to" => "jboss.server.base.dir",
    "scan-enabled" => true,
    "scan-interval" => 5000
    }
    }

    따라하기

    1. 콘텐츠를 deployments 디렉터리에 복사
    2. 마커 파일작성
    3. 배포 확인
    4. 배포 삭제
    1. 콘텐츠를 deployments 디렉터리에 복사

      $ cp /products/download/example.war $JBOSS_HOME/standalone/deployments

      $ ls

      README.txt example.war

      $
  1. 마커 파일 작성

    $ cd $JBOSS_HOME/standalone/deployments

    $ touch example.war.dodeploy
  2. 배포확인

    $ ls

    README.txt example.war example.war.deployed

    $
  3. 배포 삭제

    $ rm -rf $JBOSS_HOME/standalone/deployments/example.war

    $ ls

    README.txt example.war.undeployed

    $