DeployService REST API를 사용하여 집합체의 멤버로서
Liberty 서버를 배치할 수 있습니다.
시작하기 전에
배치할
Liberty 서버를
작성하고
패키징하십시오.
- 패키징할 기존 서버가 없는 경우에는 create 명령을 실행하여 새 서버를 작성하십시오.
./server create member1
- 패키징할 기존 서버가 있는 경우에는 패키징할 서버가 중지되었는지 확인하십시오.
- package 명령을 실행하여 서버 패키지를 작성하십시오.
./server package member1
이 명령은 서버 패키지(예: member1.zip로 이름 지정됨)를 작성합니다.
대상 호스트가 RXA(Remote Execution Agent)에 대해 설정되었는지 확인하십시오. Liberty 집합체 조작에 대한 RXA 설정의 내용을 참조하십시오.
또한 대상 호스트가 대상 배치 위치에 대한 운영 체제 권한이 있는 사용자의 환경(경로)에서
cURL 유틸리티, unzip 유틸리티 및
jar 유틸리티에 대한 Java 지원을 보유하는지 확인하십시오.
이 사용자는 호스트의 등록 중에 --rpcUser, 즉 RPC(Remote Procedure Call) 사용자에 대해 지정된 동일한 사용자여야 합니다. 3단계에서 호스트를 등록할 수 있습니다.
프로시저
- collectiveController 명령문을 제어기 server.xml 파일에 추가하십시오.
user 및 password 값을 제어기 관리자 ID 및 비밀번호로 설정하십시오.
예를 들어, 제어기 server.xml 파일에서 <quickStartSecurity userName="admin"
userPassword="adminpwd" /> 명령문에 있는 값을 사용하십시오.
<collectiveController user="admin" password="adminpwd" />
- 사용 가능한 배치 규칙을 검토하십시오.
- 사용 가능한 배치 규칙을 JSON 구조로 리턴하는 REST API를 호출하십시오. REST API를 호출할 수 있는 도구를 사용하여 사용 가능한 배치 규칙을 가져오십시오.
GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/rule
이 호출은 배치 규칙을 JSON 구조로 리턴합니다.
{
-"id": "Liberty Server Rule",
-"description": "Deploy rule for Liberty servers.",
-"type": "Liberty",
-"deployCommands": "curl -X GET https://${wlp.admin.host}:${wlp.admin.port}/IBMJMXConnectorREST/file/${serverPackageDir}%2F${serverPackage} --user ${wlp.admin.user}:${wlp.admin.password} -k --create-dirs -o ${targetDir}/${serverPackage}.tmp --verbose && unzip ${targetDir}/${serverPackage}.tmp -d ${targetDir}/${serverPackage} && ${targetDir}/${serverPackage}/${binDir}/collective join ${serverName} --host=${wlp.admin.host} --port=${wlp.admin.port} --user=${wlp.admin.user} --password=${wlp.admin.password} --keystorePassword=${keystorePassword} --hostName=${wlp.deploy.host} --useHostCredentials --createConfigFile=${targetDir}/${serverPackage}/wlp/usr/servers/${serverName}/configDropins/defaults/additionalConfig.xml --autoAcceptCertificates",
-"undeployCommands": "${targetDir}/${serverPackage}/${binDir}/server stop ${serverName}; ${targetDir}/${serverPackage}/${binDir}/collective remove ${serverName} --host=${wlp.admin.host} --port=${wlp.admin.port} --user=${wlp.admin.user} --password=${wlp.admin.password} --autoAcceptCertificates --hostName=${wlp.deploy.host}",
-"startCommands": "${targetDir}/${serverPackage}/${binDir}/server start ${serverName}",
-"stopCommands": "${targetDir}/${serverPackage}/${binDir}/server stop ${serverName}",
-"restartCommands": "${targetDir}/${serverPackage}/${binDir}/server stop ${serverName} && ${targetDir}/${serverPackage}/${binDir}/server start ${serverName}",
-"inputVariables": [
-{
-"name": "targetDir",
-"type": "filePath",
-"description": "The target directory for the Liberty server package to be installed.",
-"displayName": "Target Directory"},
-{
-"name": "keystorePassword",
-"type": "password",
-"description": "Password for keystores of the deployed server",
-"displayName": "Keystore Password"},
-{
-"name": "serverPackage",
-"type": "file",
-"description": "Name of the Liberty server package to install.",
-"displayName": "Server Package File"},
-{
-"name": "serverPackageDir",
-"type": "filePath",
-"description": "Location of directory on the controller containing the server package to deploy.",
-"displayName": "Package directory"}],
-"name": "Liberty Server",
-"default": true,
-"runtimeTypes": [
-{
-"displayName": "Liberty"}],
-"packageType": "Server Package"}
- 필요한 경우, DeployRules를 제어기 구성에 추가하여 고유한
배치 규칙을 작성하십시오. 배치 규칙(deployRule)을 참조하십시오.
- 제어기가 서버 패키지를 사용할 수 있도록 하십시오.
다음 조치 중 하나를 완료하십시오.
- Liberty 서버가 설치될 호스트를 집합체 제어기에 등록하십시오.
호스트를 등록하면 집합체 제어기가 호스트의 파일, 명령 및 기타 자원에
액세스할 수 있게 됩니다. 대상 호스트를
등록하려면 registerHost 명령을 사용하십시오. 호스트가 이미 등록된
경우에는 updateHost 명령을 사용하여 등록 정보를 재설정할 수 있습니다.
중요사항: 나중에 멤버 서버를 배치하기 위해 사용할 사용자로서 집합체
registerHost 또는 updateHost 명령을 실행했는지 확인하십시오.
예를 들어, root 사용자로서 명령을 명령을 실행하고 나중에 다른 사용자로서 멤버를 배치하는 경우에는
/root/wlp 디렉토리로 파일을 푸시할 권한이 DeployService에 없으므로 배치에 실패합니다.
collective registerHost targetHost --host=controllerHost --port=controllerHTTPSPort
--user=controllerAdmin --password=controllerAdminPassword --rpcUser=osUser --rpcUserPassword=osUserPassword --autoAcceptCertificates --hostWritePath=targetDir
- --host, --port, --user 및
--password는 필수입니다. 이러한 매개변수의 값을 찾으려면 제어기의 server.xml 파일을 보십시오.
- 원격 대상 호스트가 SSH를 지원하지 않거나 사용자가 SSH 키의 사용을 원하지 않는 경우(예:
Linux 또는 Windows 운영 체제의 대상 호스트에 대해), --rpcUser 및 --rpcUserPassword는 필수입니다.
--rpcUser를 운영 체제 로그인 사용자로 설정하고,
--rpcUserPassword를 비밀번호로 설정하십시오. --rpcUser에 지정된 사용자에게 대상
배치 위치에 대한 운영 체제 권한이 있어야 합니다.
- --autoAcceptCertificates는 필수입니다.
- --hostWritePath=directory는 필수입니다.
--hostWritePath의 directory 값은 배치 규칙에 지정된 targetDir 또는 Liberty 서버가 설치될 호스트에서 targetDir의 상위 디렉토리여야 합니다.
둘 이상의 --hostWritePath 매개변수를 지정할 수 있습니다. 예: --hostWritePath=/dir1
--hostWritePath=/dir2
registerHost 및 updateHost
명령에 대한 자세한 정보는 Liberty 집합체에 호스트 컴퓨터 등록의 내용을 참조하십시오.
- Liberty 서버를 배치하십시오.
REST API를 호출할 수 있는 도구를 사용하여 Liberty 서버를 배치하십시오.
배치 규칙에는 호출에 대한 입력 값을 지정할 수 있는 변수가 포함되어 있습니다(예: 사용할 Liberty 서버). 리턴 본문에는 상태 및
결과를 요청하는 데 사용할 수 있는 토큰이 들어 있습니다.
POST https://controller_host:controller_port/ibm/api/collective/v1/deployment/deploy
{
"rule":"Liberty Server Rule",
"hosts":["target_host_name"],
"variables": [
{ "name":"serverPackage","value":"member.zip" },
{ "name":"targetDir","value":"%2Fhome%2Fszhou%2Fdeploy" },
{ "name":"keystorePassword","value":"password" },
{ "name":"serverPackageDir","value":"%2Fusr%2Ftest%2Fsource" }
]
}
주의: targetDir 및 serverPackageDir 변수는 UTF-8 인코딩된 디렉토리 경로입니다.
serverPackageDir 변수는 집합체 제어기에서
Liberty 서버 패키지 ZIP 파일의 위치입니다.
{"id":3}과 비슷할 수 있는 리턴 토큰을 사용하여 상태 및 결과를 가져오십시오.
출력을 JSON 형식으로 얻을 수 있습니다.
다음에 수행할 작업
배치 상태 및 결과를 요청하고 검토하십시오.
- 요청된 배치 조작에 대한 배치 토큰의 목록을
가져오십시오.
GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/deploy
- 배치 조직의 단기 상태를 가져오십시오. {token}에 대해 6단계의 토큰을 사용하십시오.
따라서, 6단계의 {"id":3} 리턴 토큰의 경우에는
{token}에 대해 3을 사용하십시오.
GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/{token}/status
배치 중에
API가 IN_PROGRESS를
리턴합니다. {"status":{"target_host":"IN_PROGRESS"}}
배치 후,
API는 FINISHED를
리턴합니다. {"status":{"target_host":"FINISHED"}}
또한
배치에 문제가 있는 경우 ERROR의 최종 상태를 얻을 수도 있습니다. 전체
결과를 얻으려면 다음 정보를 사용하십시오. 리턴되는 stdout 및
stderr 정보가 문제점을 진단하는 데 도움이 될 수 있습니다.
- 배치 조작의 전체 결과를 가져오십시오. {token}에 대해 6단계의 토큰을 사용하십시오.
따라서, 6단계의 {"id":3} 리턴 토큰의 경우에는
{token}에 대해 3을 사용하십시오.
GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/{token}/results
배치가
완료된 후, 결과에 조작에 대한 정보가 들어 있습니다. 다음 예는
FINISHED의 결과를
보여줍니다. {"results":[{"host_name":"target_host","status":"FINISHED","result":0,"stdout":"deployment_stdout", "stderr":"deployment_stderr", "deployedArtifactName":"serverName_from_inputVars", "deployedUserDir":"target_host_directory_for_deployed_server"}]}
Liberty 서버를 배치 취소하십시오. 배치 규칙을 지정할 필요가 없습니다.
배치에 사용된 규칙은 배치 시간에 저장되었습니다. 배치 취소를 위해 해당 규칙을 사용할 수 있습니다. 호스트 이름,
사용자 디렉토리 및 서버 이름의 서버 튜플이 서버를 배치 취소하는 데 사용됩니다. 이 튜플은
Admin Center의 탐색 도구에 있는 서버 페이지에 표시됩니다.
- Liberty 서버를 배치 취소하십시오.
POST https://controller_host:controller_port/ibm/api/collective/v1/deployment/undeploy
{
"host": "myHostName",
"userDir":"myUserDir",
"serverName":"myServerName"
}
- 배치 취소 조작에 대한 토큰 목록을
가져오십시오.
GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/undeploy
상태
및 결과를 가져오려면 배치와 유사한 단계를 따르십시오.