도메인이나 노드 에이전트가 예기치 않게 정지된 경우(예: 시스템을 다시 시작해야 할 경우) 도메인이나 노드 에이전트를 자동으로 다시 시작하도록 시스템을 구성할 수 있습니다.
이 부록은 다음 내용으로 구성되어 있습니다.
Solaris 10 사용자는 asadmin create-service 명령을 사용하여 노드 에이전트 또는 DAS(Domain Administration Server)를 다시 시작하는 서비스를 만들 수 있습니다. 만들어진 서비스에는 SMF(Solaris Service Management Facility)가 사용됩니다.
서비스가 시작하는 프로세스는 서비스를 통해 다시 시작하는 대상이 DAS인지 노드 에이전트인지 여부에 따라 다릅니다.
DAS를 다시 시작하는 서비스의 경우 asadmin start-domain 프로세스입니다.
노드 에이전트를 다시 시작하는 서비스의 경우asadmin start-node-agent 프로세스입니다.
서비스는 프로세스를 실행하는 사용자의 권한을 프로세스에 부여합니다. asadmin create-service 명령을 사용하여 SMF 서비스를 만들 경우 기본 사용자는 수퍼유저입니다. 다른 사용자가 프로세스를 실행해야 하는 경우 method_credential에 사용자를 지정합니다.
프로세스가 Solaris OS의 권한이 설정된 포트에 바인딩되는 경우 프로세스에 net_privaddr 권한이 필요합니다. Solaris OS에서 권한이 설정된 포트의 포트 번호는 1024보다 작은 숫자입니다.
사용자에게 net_privaddr 권한이 있는지 확인하려면 해당 사용자로 로그인하여 ppriv -l | grep net_privaddr 명령을 입력합니다.
asadmin create-service 명령을 실행하려면 solaris.smf.* 권한이 있어야 합니다. 권한을 설정하는 방법을 보려면 useradd 및 usermod 설명서 페이지를 참조하십시오. 다음 디렉토리 트리에 대한 쓰기 권한도 있어야 합니다. /var/svc/manifest/application/SUNWappserver. 일반적으로 수퍼유저에게는 이 두 가지 권한이 모두 있습니다. 또한 PATH에 svccfg, svcs 및 auths 등의 Solaris 10 관리 명령을 사용할 수 있어야 합니다. 이 명령 실행에 대한 자세한 내용은 create-service(1)를 참조하십시오.
구문은 다음과 같습니다.
asadmin create-service [--name service-name] [--type das|node-agent] --passwordfile password-file [--serviceproperties serviceproperties] domain-or-node-agent-configuration-directory |
예를 들어 domain1에 대해 domain1이라는 서비스를 만들려면
다음을 실행합니다.
asadmin create-service --type das --passwordfile password.txt /appserver/domains/domain1
이렇게 하면 domain1이라는 도메인을 자동으로 다시 시작하는 서비스가 만들어집니다. 이 명령은 백그라운드에서 템플리트를 사용하여 매니페스트 파일을 만들고 검증한 후 이를 서비스로 가져옵니다.
특정 Application Server 도메인에 기본 사용자 권한이 없어야 하는 경우에는 서비스의 매니페스트를 수정한 후 서비스를 다시 가져오십시오. 사용자의 권한을 확인하려면 해당 사용자로 로그인하여 ppriv -l 명령을 입력합니다.
서비스가 만들어지면 svacdm enable 명령을 사용하여 활성화합니다.
svacdm enable /appserver/domains/domain1
서비스가 활성화되면 도메인이 다운되었을 때 SMF에서 이를 다시 시작합니다.
서비스를 관리할 때는 다음과 같은 Solaris 명령이 유용합니다.
auths
smf_security
svcadm
svccfg
rbac
useradd
usermod
이러한 명령에 대한 자세한 내용은 명령 설명서 페이지를 참조하십시오.
Solaris 9 또는 Linux 플랫폼에서 도메인을 다시 시작하려면 /etc/inittab 파일에 텍스트 줄을 추가합니다.
/etc/rc.local 또는 이와 상응하는 시스템을 사용하는 경우 원하는 asadmin 명령을 호출하는 /etc/rc.local에 줄을 추가합니다.
예를 들어, opt/SUNWappserver 디렉토리에 설치된 Application Server용 domain1을 password.txt라는 비밀번호 파일을 사용하여 다시 시작하려면 다음을 입력합니다.
das:3:respawn:/opt/SUNWappserver/bin/asadmin start-domain --user admin --passwordfile /opt/SUNWappserver/password.txt domain1 |
텍스트를 한 줄로 입력합니다. 처음 세 문자는 프로세스의 고유한 지정자이며 변경할 수 있습니다.
노드 에이전트를 다시 시작하기 위한 구문도 유사합니다. 예를 들어, opt/SUNWappserver 디렉토리에 설치된 Application Server용 agent1을 password.txt라는 비밀번호 파일을 사용하여 다시 시작하려면 다음을 입력합니다.
das:3:respawn:/opt/SUNWappserver/bin/asadmin start-node-agent --user admin --passwordfile /opt/SUNWappserver/password.txt agent1 |
Microsoft Windows에서 자동으로 다시 시작하려면 Windows 서비스를 만들고 사용자가 로그아웃할 때 이 서비스가 종료되지 않도록 설정합니다.
Sun Java System Application Server에서 제공되는 appservService.exe 및 appserverAgentService.exe 실행 파일을 Microsoft에서 제공되는 서비스 제어 명령(sc.exe)과 함께 사용합니다.
sc.exe 명령은 Windows XP에서 제공되며 Windows 설치 디렉토리의 system32라는 하위 디렉토리(일반적으로 C:\windows\system32 또는 C:\winnt\system32)에 있습니다. 현재 Windows 2000 sc.exe는 ftp://ftp.microsoft.com/reskit/win2000/sc.zip에서 다운로드할 수 있습니다. sc.exe 사용에 대한 자세한 정보는 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndllpro/html/msdn_scmslite.asp를 참조하십시오.
다음과 같이 appservService.exe 및 appservAgentService.exe를 사용합니다.
C:\winnt\system32\sc.exe create service-name binPath= \"fully-qualified-path-to-appservService.exe \"fully-qualified-path-to-asadmin.bat start-command\" \"fully-qualified-path-to-asadmin.bat stop-command\"" start= auto DisplayName= "display-name"
binpath와 등호 기호(=) 사이에는 공백이 없습니다. 등호 기호 뒤, 경로 앞에는 공백이 있어야 합니다.
예를 들어 비밀번호 파일 C:\Sun\AppServer\password.txt를 사용하여 domain1을 시작 및 중지하는 SunJavaSystemAppServer DOMAIN1이라는 서비스를 만들려면 다음을 입력합니다.
C:\windows\system32\sc.exe create domain1 binPath= "C:\Sun\AppServer\lib\appservService.exe \"C:\Sun\AppServer\bin\asadmin.bat start-domain --user admin --passwordfile C:\Sun\AppServer\password.txt domain1\" \"C:\Sun\AppServer\bin\asadmin.bat stop-domain domain1\"" start= auto DisplayName= "SunJavaSystemAppServer DOMAIN1"
노드 에이전트 agent1을 시작 및 중지하는 서비스를 만들려면 다음을 입력합니다.
C:\windows\system32\sc.exe create agent1 binPath= "C:\Sun\AppServer\lib\appservAgentService.exe \"C:\Sun\AppServer\bin\asadmin.bat start-node-agent --user admin --passwordfile C:\Sun\AppServer\password.txt agent1\" \"C:\Sun\AppServer\bin\asadmin.bat stop-node-agent agent1\"" start= auto DisplayName= "SunJavaSystemAppServer AGENT1"
binPath= 매개 변수의 일부로 입력한 시작 및 중지 명령의 구문이 정확해야 합니다. 테스트하려면 명령 프롬프트에서 명령을 실행합니다. 명령을 실행해도 도메인이나 노드 에이전트가 제대로 시작되거나 중지되지 않으면 서비스가 올바로 작동하지 않습니다.
asadmin start 및 stop 명령과 서비스 시작 및 중지를 같이 사용하면 안 됩니다. 이 둘을 같이 사용하면 서버 상태가 비동기화될 수 있습니다. 예를 들어 구성 요소가 실행되지 않아도 서비스에서 구성 요소가 실행되었다고 표시할 수 있습니다. 이런 상황을 방지하려면 서비스를 사용할 때 항상 sc.exe 명령을 사용하여 구성 요소를 시작 및 중지합니다.
sc.exe create 명령으로 서비스가 제대로 만들어지지 않은 경우에는 서비스를 삭제하고 다시 시도하십시오. 서비스를 삭제하려면 sc.exe delete "service-name" 명령을 사용합니다.
기본적으로 Java VM은 운영 체제가 종료 중이거나 사용자가 로그아웃 중임을 알리는 신호를 Windows에서 포착하여 자체적으로 종료합니다. 이 동작으로 인해 사용자가 Windows에서 로그아웃할 때 Application Server 서비스가 종료됩니다. 사용자가 로그아웃할 때 서비스가 종료되지 않도록 하려면 Java VM 옵션 -Xrs를 설정합니다.
Java VM 옵션 -Xrs를 설정하려면 Java VM 옵션을 정의하는 as-install\domains\domain-name\config\domain.xml 파일의 섹션에 다음 줄을 추가합니다.
<jvm-options>-Xrs</jvm-options>
Application Server 서비스가 실행 중인 경우에는 서비스를 중지했다가 다시 시작해야 변경 내용이 적용됩니다.
일부 Windows 2003 Server 설치에서는 -Xrs 옵션을 domain.xml 파일에 추가해도 서비스가 종료됩니다. 이 경우에는 다음과 같이 as-install\lib\processLauncher.xml 파일에 옵션을 추가합니다.
<process name="as-service-name"> ... <sysproperty key="-Xrs"/> ...
클러스터 또는 엔터프라이즈 프로필을 사용하는 경우 Application Server를 자동으로 다시 시작할 때 관리 비밀번호와 마스터 비밀번호가 필요합니다. 개발자 프로필을 사용하는 경우
다음 중 한 가지 방법으로 클러스터 및 엔터프라이즈 프로필에 대한 비밀번호 및 마스터 비밀번호 요구 사항을 처리합니다.
Microsoft Windows에서는 사용자에게 비밀번호를 요청하도록 서비스를 구성합니다.
서비스 제어판에서 만든 서비스를 두 번 누릅니다.
등록 정보 창에서 로그온 탭을 누릅니다.
구성 요소를 시작할 때 비밀번호를 입력하도록 프롬프트를 표시하려면 “서비스와 데스크탑 상호 작용 허용”을 선택합니다.
로그인해야 프롬프트가 나타납니다. 입력할 때 입력한 내용이 표시되지 않습니다. 이 방법이 서비스 옵션을 사용하는 가장 안전한 방법이지만 서비스가 사용 가능해지기 전에 사용자의 상호 작용이 필요합니다.
“데스크탑과 상호 작용” 옵션을 설정하지 않은 경우 서비스는 “시작 보류 중” 상태를 유지하고 중단된 것으로 표시됩니다. 서비스 프로세스를 중단하고 이 상태에서 복구합니다.
Windows나 UNIX에서 --savemasterpassword=true 옵션을 사용하여 도메인을 만들고 비밀번호 파일을 만들어 관리자 비밀번호를 저장합니다. 구성 요소를 시작할 때 --passwordfile 옵션을 사용하여 비밀번호를 포함하는 파일을 가리킵니다.
예를 들면 다음과 같습니다.
저장한 마스터 비밀번호를 사용하여 도메인을 만듭니다. 이 구문에서는 관리 비밀번호와 마스터 비밀번호를 묻습니다.
asadmin create-domain --adminport 4848 --adminuser admin --savemasterpassword=true --instanceport 8080 domain1 |
Windows에서는 비밀번호 파일을 사용하여 서비스를 만들고 관리자 비밀번호를 채웁니다.
C:\windows\system32\sc.exe create domain1 binPath= "C:\Sun\AppServer\lib\appservService.exe \"C:\Sun\AppServer\bin\asadmin.bat start-domain --user admin --passwordfile C:\Sun\AppServer\password.txt domain1\" \"C:\Sun\AppServer\bin\asadmin.bat stop-domain domain1\"" start= auto DisplayName= "SunJavaSystemAppServer DOMAIN1"
비밀번호 파일 password.txt의 경로는 C:\Sun\AppServer\password.txt입니다. 이 파일에는 다음 형식의 비밀번호가 포함되어 있습니다.
AS_ADMIN_password=password
예를 들어 adminadmin 비밀번호의 경우 다음과 같습니다.
AS_ADMIN_password=adminadmin
UNIX에서는inittab 파일에 추가한 줄에서 --passwordfile 옵션을 사용합니다.
das:3:respawn:/opt/SUNWappserver/bin/asadmin start-domain --user admin --passwordfile /opt/SUNWappserver/password.txt domain1 |
비밀번호 파일 password.txt의 경로는 /opt/SUNWappserver/password.txt입니다. 이 파일에는 다음 형식의 비밀번호가 포함되어 있습니다.
AS_ADMIN_password=password
예를 들어 adminadmin 비밀번호의 경우 다음과 같습니다.
AS_ADMIN_password=adminadmin