DeployService REST API를 사용하여 Node.js 애플리케이션을
집합체의 멤버로서 배치할 수 있습니다. Node.js 집합체 멤버를 이 문서에서는
Node.js 서버라고 합니다.
시작하기 전에
Node.js 서버를 설치할 대상 호스트를 판별하십시오. 대상 호스트에 Node.js V4
및 apiconnect-collective-member npm 패키지를 설치하십시오. Linux에서
Node.js 서버에 대한 지원을 설치할 명령은 다음과 같습니다.
npm install -g apiconnect-collective-member
Liberty는 Node 버전 4.x 및 6.x를 지원합니다.
![[16.0.0.x]](../ng_v1600x.gif)
Liberty는 Node 버전 4.x를 지원합니다.
Node 버전이 지원되는지 확인하려면 Node.js를 설치한 후 명령행의 Node.js 설치 디렉토리에서
node --version을 실행하십시오. 예를 들면 다음과 같습니다.
C:\nodejs>node --version
v4.7.3
각 대상 호스트에는 RXA 또는 SSH가 필요합니다. Liberty 집합체 조작에 대한 RXA 설정의 내용을 참조하십시오.
프로시저
- 제어기 server.xml 파일에서 집합체 제어기에 대한
사용자 이름과 비밀번호를 설정하십시오. 예:
<collectiveController user="admin" password="adminpwd" />
- Node.js 애플리케이션을 집합체 제어기에 추가하십시오.
- 설치할 Node.js 애플리케이션을 선택하십시오. 애플리케이션은 해당 종속 항목이
해결되어야 합니다.
사용자는
.tgz 확장자가 있는 노드 애플리케이션 압축 TAR 아카이브를
Liberty에 배치합니다. 애플리케이션은 일반적으로 다음 디렉토리 구조를
갖습니다.
package/
app.js
package.json
node_modules/..
server.json
- app.js는 애플리케이션입니다.
- package.json은 Node.js npm에서 필요한 대로 애플리케이션에 대한
종속 항목을 갖고 있습니다.
- node_modules/.. 디렉토리는 애플리케이션이 사용하고
package.json으로부터 생성되는 포함을 제공합니다.
- server.json은 포트 및 기타 설정을 구성하는 선택적
파일입니다.
배치할 애플리케이션에 대한 자세한 정보는 apiconnect-collective-member wlpn-server 및 wlpn-collective 명령의 pack
명령 설명을 참조하십시오.
- 제어기가 Node.js 애플리케이션을 사용할 수 있도록 하십시오.
다음 조치 중 하나를 완료하십시오.
- 제어기 server.xml 파일에 배치 변수를 정의하는 명령문이 있는지 확인하십시오. 예를 들면, 다음과 같습니다.
<deployVariable name="wlpn.appPort" value="9090" increment="1"/>
<deployVariable name="wlpn.adminPort" value="9453" increment="1"/>
배치 변수는 각 멤버가 대상 호스트에서 고유한 포트 번호를 가질 수 있게 하는
값을 설정해야 합니다. DeployVariable(deployVariable)을 참조하십시오.
- Node.js 서버를 설치하려는 호스트를 집합체 제어기에
등록하십시오.
호스트를 등록하면 집합체 제어기가 호스트의 파일, 명령 및 기타 자원에
액세스할 수 있게 됩니다. 대상 호스트를 등록하려면 wlpn-collective
registerHost 명령을 사용하십시오. 호스트가 이미 등록된
경우에는 updateHost 명령을 사용하여 등록 정보를 재설정할 수 있습니다.
중요사항: wlpn-collective
registerHost 또는 updateHost 명령을 멤버 서버를 배치하기 위해
나중에 사용할 사용자로서 실행해야 합니다. 예를 들어, root 사용자로서
명령을 실행한 후 나중에 다른 사용자로서 멤버를 배치하는 경우, DeployService가
파일을 /root/wlpn 디렉토리에 푸시할 권한이 없기 때문에 배치가
실패합니다.
명령 --host, --port, --user 및
--password 매개변수에 대한 값을 찾으려면 제어기의
server.xml 파일을 보십시오. Linux 또는 Windows 운영 체제의
대상 호스트의 경우와 같이 SSH 개인 키 파일을 사용하지 않으려면 --rpcUser
및 --rpcUserPassword 매개변수를 설정하여 운영 체제 로그인
사용자 및 비밀번호를 포함하십시오. --rpcUser에 지정된 사용자에게 대상
배치 위치에 대한 운영 체제 권한이 있어야 합니다. 명령이 --autoAcceptCertificates를 포함하는지 확인하십시오.
wlpn-collective registerHost targetHost --host=controllerHost --port=controllerHTTPSPort
--user=controllerAdmin --password=controllerAdminPassword --rpcUser=osUser --rpcUserPassword=osUserPassword --autoAcceptCertificates
추가 정보는 apiconnect-collective-member wlpn-server 및 wlpn-collective 명령의 내용을 참조하십시오.
- 사용 가능한 배치 규칙을 검토하십시오.
- 사용 가능한 배치 규칙을 JSON 구조로 리턴하는 REST API를 호출하십시오. REST API를 호출할 수 있는 도구를 사용하여 사용 가능한 배치 규칙을 가져오십시오.
GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/rule
이 호출은 배치 규칙을 JSON 구조로 리턴합니다. 예를 들면, 다음과 같습니다.
![[16.0.0.3 and later]](../ng_v16003plus.gif)
{"rules":
[
{"rules":[
{"id":"Node.js Server Rule","description":"Deploy rule for Node.js servers.","type":"Node.js",
"deployCommands":"curl https://${wlp.admin.host}:${wlp.admin.port}/IBMJMXConnectorREST/file/${applicationDir}%2F${applicationPackage}
--user ${wlp.admin.user}:${wlp.admin.password} -k
--create-dirs -o ${WLPN_USER_DIR}/${serverName}/${applicationPackage} --verbose && ${NODE_BIN}
${WLPN_INSTALL_DIR}/wlpn-server unpack ${serverName} ${WLPN_USER_DIR}/${serverName}/${applicationPackage} && ${NODE_BIN}
${WLPN_INSTALL_DIR}/wlpn-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} --clusterName=${clusterName} --genDeployVars --autoAcceptCertificates",
"undeployCommands":"${NODE_BIN} ${WLPN_INSTALL_DIR}/wlpn-server stop ${serverName};
${NODE_BIN} ${WLPN_INSTALL_DIR}/wlpn-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": "${NODE_BIN} ${WLPN_INSTALL_DIR}/wlpn-server start ${serverName}",
"stopCommands":"${NODE_BIN} ${WLPN_INSTALL_DIR}/wlpn-server stop ${serverName}",
"restartCommands":"${NODE_BIN} ${WLPN_INSTALL_DIR}/wlpn-server stop ${serverName} &&
${NODE_BIN} ${WLPN_INSTALL_DIR}/wlpn-server start ${serverName}",
"inputVariables":[
{"name":"applicationPackage","type":"file","description":"Name of the application package (.tgz) to install.","displayName":"Server Package File"},
{"name":"keystorePassword","type":"password","description":"Password for keystores of the deployed server","displayName":"Keystore Password"},
{"name":"serverName","type":"String","description":"Name of the server to run the application.","displayName":"Server Name"},
{"name":"applicationDir","type":"filePath","description":"Location of directory containing the application to deploy.","displayName":"Application Directory"},
{"name":"clusterName","type":"String","description":"Name of the Liberty Node.js cluster.","displayName":"Cluster Name"}
],
"name":"Node.js Server","default":true,"runtimeTypes":[{"displayName":"Node.js"}],"packageType":"Application Package"
}
]}
- 필요한 경우, DeployRules를 제어기 구성에 추가하여 고유한
배치 규칙을 작성하십시오. 배치 규칙(deployRule)을 참조하십시오.
- Node.js 서버를 배치하십시오.
REST API를 호출할 수 있는 도구를 사용하여 Node.js 서버를 배치하십시오.
배치 규칙에는 호출에 대한 입력 값을 지정할 수 있는 변수가 포함되어 있습니다(예:
사용할 Node.js 서버 및 작성할 컨테이너 이름). 리턴 본문에는 상태 및
결과를 요청하는 데 사용할 수 있는 토큰이 들어 있습니다.
POST https://controller_host:controller_port/ibm/api/collective/v1/deployment/deploy
{
"rule":"Node.js Server Rule",
"hosts":["localhost"],
"variables": [
{ "name":"applicationPackage","value":"express-example-app-1.0.2.tgz" },
{ "name":"serverName","value":"ds-member-ctrl5" },
{ "name":"clusterName","value":"MyCluster" },
{ "name":"keystorePassword","value":"password" },
{ "name":"applicationDir","value":"%2Ftmp%2FnodejsApplications" }
]
}
주의: applicationDir 변수는 UTF-8 인코딩된 디렉토리
경로입니다. applicationDir 변수는 집합체 제어기의 Node.js 애플리케이션의
위치입니다.
{"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"}]}
Node.js 서버를 배치 취소하십시오. 배치 규칙을 지정할 필요가 없습니다. 배치에 사용된 규칙이
배치 시점에 저장되었습니다. 배치 취소를 위해 해당 규칙을 사용할 수 있습니다. 호스트 이름,
사용자 디렉토리 및 서버 이름의 서버 튜플이 서버를 배치 취소하는 데 사용됩니다. 이 튜플은
Admin Center의 탐색 도구에 있는 서버 페이지에 표시됩니다.
- Node.js 서버를
배치 취소하십시오.
POST https://controller_host:controller_port/ibm/api/collective/v1/deployment/undeploy
{
"host": "myHostName",
"userDir":"/root/wlpn",
"serverName":"myServerName"
}
- 배치 취소 조작에 대한 토큰 목록을
가져오십시오.
GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/undeploy
상태
및 결과를 가져오려면 배치와 유사한 단계를 따르십시오.