-
๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ์ํคํ ์ณ๋ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค.
-
ํธ์คํธ ์๋ฒ: "ssh -p 1028 root@27.96.129.251" ๋ฅผ ์ด์ฉํ์ฌ ์ ์ ๊ฐ๋ฅ. ๋น๋ฐ๋ฒํธ๋ "flfoq"(๋ฆฌ๋ฉ). ์คํ์ [Standard] 2vCPU, 4GB Mem, 50GB Disk [g1]์ด๋ฉฐ, VM ์ธ์คํด์ค ์์ฑ์ ์ํด ์ฐ์ธ๋ค.
-
์ค๋ธ์ ํธ ์คํ ๋ฆฌ์ง: SAIGE๋ฅผ ๋๋ฆด ๋ ์ฌ์ฉ๋๋ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ ์ฅ๊ณต๊ฐ. aws cli๋ฅผ ํธํํ๋ค. "https://cli-gov.ncloud-docs.com/docs/guide-objectstorage" ์ฐธ๊ณ
-
VM ์ธ์คํด์ค: ์ค์ SAIGE๋ฅผ ๋๋ฆฌ๊ธฐ ์ํด ์์ฑ๋๋ VM ์ธ์คํด์ค. ๊นํ๋ธ CloudComparison์ "/NCP_SAIGE/NCP_Init/NCP_InitCall.sh" ๋ ์๋ฒ ์ด๋ฏธ์ง Ubuntu Server 18.04 (64-bit)์ธ, [Standard] 4vCPU, 32GB Mem, 50GB Disk [g1] ์คํ์ VM ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค.
-
๋ค๋ง, Ubuntu Server 18.04 (64-bit)๋ ์ ์กฐ์ฌ ์ธก์์ ์ ๋ฐ์ดํธ ์๋น์ค๋ฅผ ์ ๊ณตํ์ง ์๊ธฐ๋ก ํ๋ฉด์ ๋ค์ด๋ฒ ์ธก๋ ์๋น์ค ์ข ๋ฃ๋ฅผ ๊ณ ๋ คํ๊ณ ์๋ค๊ณ ํ๋ค.
์๋ ํ์ธ์. ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ์ ๋๋ค.
Classic ํ๊ฒฝ ubuntu-18.04 ์ ๊ฒฝ์ฐ ์ ์กฐ์ฌ์์ ์ด๋ฏธ EOS ๋ ์๋ฒ ์ด๋ฏธ์ง์ด๋, ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ์์ ํ๋งค์ข ๋ฃ(Fade-out)๋ OS๋ ์๋๋ฏ๋ก ํ์ฌ ์์ฑ์ด ๊ฐ๋ฅํ ์ํ์ ๋๋ค.
ํ๋งค์ข ๋ฃ(Fade-out)๋ OS๋ ์๋ฒ ์์ฑ ์ฝ์์์ ๋ ธ์ถ๋์ง ์์ผ๋ ๊ธฐ์กด ์์ฑ๋ ์๋ฒ ์ด๋ฏธ์ง๋ ์ฌ์ฉ์ด ๊ณ์ ๊ฐ๋ฅํฉ๋๋ค.
ubuntu-18.04 ๋ ํ์ฌ ์์ฑ ๊ฐ๋ฅํฉ๋๋ค๋ง ์ ํฌ์ชฝ์์ ์๋น์ค ์ข ๋ฃ๊ฐ ๊ฒฐ์ ๋๋ฉด ์์ฑ์ด ๋ถ๊ฐํด์ง ์ ์์ต๋๋ค.
์์ธํ ์ฌํญ์ ์๋ FAQ๋ฅผ ์ฐธ๊ณ ๋ฐ๋๋๋ค. https://www.ncloud.com/support/faq/prod/2870
๊ฐ์ฌํฉ๋๋ค.
-
๋ธ๋ก ์คํ ๋ฆฌ์ง: VM ์ธ์คํด์ค์ ์ง์ ์ ์ผ๋ก ๋ถ์ฐฉ์ด ๊ฐ๋ฅํ ์คํ ๋ฆฌ์ง. ์ธ์คํด์ค ์์ ์ ์์ฑํ๊ณ , ์ธ์คํด์ค ์์ ๋ง์ดํธํ๋ฉฐ, ์ธ์คํด์ค ๋ฐํ ์ ์ ์ธ๋ง์ดํธํ๊ณ , ์คํ ๋ฆฌ์ง๋ฅผ ๋ฐํํ๋ค. ๋ง์ดํธ, ์ธ๋ง์ดํธ ๊ด๋ จ ๋ฐฉ๋ฒ์ ๋ํ ์๋ฃ๋ "https://guide-gov.ncloud-docs.com/docs/compute-compute-4-1-v2" ์ฐธ๊ณ . init script์ cli๋ก ์ธ๋ง์ดํธ ๋๊ฒ ํ์๋ค. cli๋ฅผ ์ด์ฉํ์ฌ ์คํ ๋ฆฌ์ง ๋ฐํํ๋ ๋ฐฉ๋ฒ์ "/NCP_SAIGE/NCP_Init/NCP_InitCall.sh" ์ ์๋ค.
- ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ์ ์๋น์ค๋ ํฌ๊ฒ VPC์ classic์ผ๋ก ๋๋์ด์ ธ ์๋ค.
- classic ์ฅ์ ์์ฝ
- ์๋ก ๋ค๋ฅธ ๊ณ์ ์ ์๋ฒ๋ค ๊ฐ์ ์ฌ์ค ํต์ ๊ฐ๋ฅ
- ๋ฆฌ์ ๊ฐ ์๋ฒ๋ค์ ์ฌ์ค ํต์ ๊ฐ๋ฅ (ํ๊ตญ, ๋ฏธ๊ตญ, ์ฑ๊ฐํฌ๋ฅด, ํ์ฝฉ, ์ผ๋ณธ, ๋ ์ผ)
- ๋ค์ํ ์ค์นํ ์๋ฒ ์ด๋ฏธ์ง ์ด์ฉ ๊ฐ๋ฅ
- VPC ์ฅ์ ์์ฝ
- ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋ Network
- ์ฌ์ฉ์๊ฐ ์ง์ Network ์ค๊ณ ๊ฐ๋ฅ
- ๊ธฐ์กด ๊ณ ๊ฐ์ ๋ฐ์ดํฐ์ผํฐ ๋คํธ์ํฌ์ ์ ์ฌํ๊ฒ ๊ตฌํ ๊ฐ๋ฅ
- ์ข ๋ ์์ธํ๊ณ , ๋์ ์์ค์ ๋ณด์ ์ค์ ๊ฐ๋ฅ
- (์ถ์ฒ: "https://docs.3rdeyesys.com/management/ncloud_management_classic_vs_vpc_guide.html")
- classic ์ฅ์ ์์ฝ
- cli ๊ฐ์ด๋๋ "https://cli.ncloud-docs.com/docs/home" ๋ฅผ ์ฐธ๊ณ . VPC์ classic์ ๋ฐ๋ผ cli๊ฐ ์ฐจ์ด๊ฐ ๋๋ ์ ์ ๋ํด์ ์ฃผ์๊ฐ ํ์ํ๋ค.
VPC cli ์: ./ncloud vserver getServerInstanceList --regionCode KR --vpcNo ***04 --serverInstanceNoList 4299 --serverName test- --serverInstanceStatusCode RUN --baseBlockStorageDiskTypeCode NET --baseBlockStorageDiskDetailTypeCode SSD --ip ..111.215 --placementGroupNoList ***61
classic cli ์: ./ncloud server getServerInstanceList --serverInstanceStatusCode NSTOP --regionNo 2
-
ํ์ฌ ํธ์คํธ ์๋ฒ์๋ cli๊ฐ ๊น๋ ค ์์ง๋ง, ๋ค๋ฅธ ํธ์คํธ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ค๋ฉด, cli๋ฅผ "https://cli.ncloud-docs.com/docs/guide-clichange" ์์ ๋ค์ด๋ฐ์ ๋ค์ ํธ์คํธ ์๋ฒ๋ก ์ฎ๊ฒจ์ผ ํ๋ค.
-
ํ์ฌ ํธ์คํธ ์๋ฒ๋ classic ์๋ฒ์ด๊ณ , "NCP_SAIGE/NCP_Init/NCP_InitCall.sh" ์ classic ์๋ฒ๋ฅผ ์์ฑ๋๋๋ก ํ๊ณ ์๋ค.
-
cli๋ฅผ ์ด์ฉํ ๋์๋ cli๊ฐ ์์นํ ๋๋ ํ ๋ฆฌ์ ์ด๋ํ์ฌ "./ncloud {๋ช ๋ น ๋ด์ฉ}" (ex: ./ncloud server getServerInstanceList --serverInstanceStatusCode NSTOP --regionNo 2) ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก cli๋ฅผ ์ฌ์ฉํ๋ค.
-
VPC๊ฐ classic ๋ณด๋ค ๋ ๋ง์ api์ cli ์ปค๋ฉ๋๋ฅผ ์ง์ํ๊ณ ์์ผ๋ฉฐ, init script๋ฅผ cli ์์์ ๋ฑ๋กํ๋ ๊ฒ์ VPC ์๋น์ค์์๋ง ์ง์๋๋ค.
- classic์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด, GUI ์ฝ์ ์์์๋ง init script๋ฅผ ๋ฑ๋กํ ์ ์๋ค. ์ฝ์ > Services > Compute > Server > Init Script ๋ก ์ด๋ํ๋ฉด ์ ์ด๋ฏธ์ง์ ์ฐฝ์ด ๋ฌ๋ค. Script ์์ฑ ๋ฒํผ์ ์ด์ฉํ์ฌ init script๋ฅผ ๋ฑ๋กํ ์ ์๋ค.
- ์ด๋ฏธ ๋ฑ๋ก๋ init script๋ฅผ cli ์์์ ์ฌ์ฉํ๋ ค๋ฉด init script์ ๋ฒํธ๋ฅผ ์ฐพ์์ผ ํ๋ค. getInitScriptList๋ฅผ ์ด์ฉํ์ฌ init script ๋ฒํธ๋ฅผ ์ ์ ์๋ค. (classic: "https://cli.ncloud-docs.com/docs/cli-server-getinitscriptlist", VPC: "https://cli.ncloud-docs.com/docs/cli-vserver-initscript-getinitscriptlist")
- init script ๋ฒํธ๋ฅผ ์๋ค๋ฉด, VM ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋, ํด๋น ๋ฒํธ๋ฅผ ์ ๋ฌํ์ฌ, ์๋์ผ๋ก shell script๊ฐ ์์ฑ๊ณผ ๋์์ ์คํ๋๋๋ก ํ ์ ์๋ค. ๋ง์ฝ, ์๋ฒ์์ init script๊ฐ ์ ๋์๊ฐ๋์ง ๋ณด๊ณ ์ถ์ผ๋ฉด, ์์ฑ๋ ์ธ์คํด์ค์ ๋ค์ด๊ฐ๋ init script๊ฐ ์ค๋จ๋์ง ์์ผ๋, ๊ฑฑ์ ํ์ง ์์๋ ๋๋ค.
-
์๋ก ์์ฑ๋ ์๋ฒ์ ๋ค์ด๊ฐ ๋ณด๋ ค๋ฉด ์ฝ์ > Service > Compute > Server ๋ก ์ด๋ํ์ฌ, ์์ฑ๋ ์๋ฒ์ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ฒดํฌ ํ ๋ค, "์๋ฒ ๊ด๋ฆฌ ๋ฐ ์ค์ ๋ณ๊ฒฝ" ์ ์ ํํ์ฌ "๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ ํ์ธ"์ ๋๋ฅธ๋ค. ์ด๋ฅผ ํตํด, ๋ฌด์์๋ก ์์ฑ๋ ์๋ฒ์ ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์ ์๋ค. ์ด๋ CloudComparison์ ์๋ "/pem_certificate/naver/aaa.pem" ํ์ผ์ด ํ์ํ๋ค. ๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฉ๋ชจ์ฅ์ ์ ์ฅํด ๋๋ค. ์ ์ด๋ฏธ์ง์ ๋ค๋ชจ ๋ฐ์ค, ํฌํธ ํฌ์๋ฉ ์ค์ ์ VM ์ธ์คํด์ค๋ฅผ ๊ณต์ฉ ip์ port์ ์ฐ๊ฒฐํ๊ธฐ ์ํด์ ํด ์ฃผ๋ ๊ฒ์ด๋ค. 1,024~65,534 ๋ฒ์์ ์ซ์๊ฐ ์ค๋ณต๋์ง ์๊ฒ ์ค์ ํ๋ฉด ๋๋ค.
-
๊ด๋ จ ๋ํ๋จผํธ๋ ๋ค์๊ณผ ๊ฐ๋ค. ๋ถ์กฑํ ์ ๋ณด๊ฐ ์์ผ๋ฉด ์ฐธ๊ณ . "https://guide.ncloud-docs.com/docs/server-manage-classic#ํฌํธํฌ์๋ฉ์ค์ ", "https://guide.ncloud-docs.com/docs/server-access-classic", "https://guide.ncloud-docs.com/docs/server-publicip-classic"
-
์ถ๊ฐ์ ์ผ๋ก ์ ์ฉํ naver cloud cli ๋ช ๋ น์ด๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
- getServerImageProductList: NCP์์ ์ ๊ณตํ๋ ์๋ฒ ์ด๋ฏธ์ง(OS)์ ๋ฆฌ์คํธ๋ฅผ ๋ฐํ
- getServerProductList: NCP์์ ์ ๊ณตํ๋ ์๋ฒ ์ ํ๋ค์ ๋ฆฌ์คํธ๋ฅผ ๋ฐํ (๋ฉ๋ชจ๋ฆฌ, vCPU ์, SSD/HDD ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค์ํ๊ฒ ๋ถ๋ฅ๋๋ค.)
- getServerInstanceList: ํ์ฌ ๋ด๊ฐ ๋ง๋ค์ด์ ์ฌ์ฉํ๊ณ ์๋ ์๋ฒ๋ค์ ๋ฐํ.
- createServerInstances: ์๋ฒ ์ธ์คํด์ค ์์ฑ
- terminateServerInstances: ์๋ฒ ์ธ์คํด์ค ๋ฐ๋ฉ (์ ์ง๋ ์ธ์คํด์ค๋ง ๋ฐ๋ฉ ๊ฐ๋ฅ)
- stopServerInstances: ์๋ฒ ์ธ์คํด์ค ์ ์ง
- getInitScriptList: ๋์ init script ๋ฆฌ์คํธ ๋ฐํ
- getRootPassword: ์๋ฒ์ ๋ฃจํธ ๊ณ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์กฐํ. cli๋ฅผ ์ฌ์ฉ ์ค์ธ ์๋ฒ ์์ ์ธ์ฆpem ํ์ผ์ด ์์ด์ผ ๊ฐ๋ฅํ๋ค.
- getBlockStorageInstanceList: ๋ธ๋ก ์คํ ๋ฆฌ์ง ๋ฆฌ์คํธ๋ฅผ ๋ฐํ. ๋ธ๋ก ์คํ ๋ฆฌ์ง์ number(blockStorageInstanceNo)๋ฅผ ์ฐพ์ ๋ ์ฌ์ฉ. serverInstanceNo๋ฅผ ๋ณด๊ณ ์ด๋ค ์๋ฒ์ ๋ฌถ์ฌ์๋์ง ํ์ธ ๊ฐ๋ฅ.
- createBlockStorageInstance: ๋ธ๋ก ์คํ ๋ฆฌ์ง ์์ฑ. ์์ฑ ํ ๋ง์ดํธ๋ฅผ ํด ์ฃผ์ด์ผ ํ๋ค.
- deleteBlockStorageInstances: ๋ธ๋ก ์คํ ๋ฆฌ์ง ์ญ์ .
- attachBlockStorageInstance: ์๋ฒ์ ๋ธ๋ก ์คํ ๋ฆฌ์ง๋ฅผ ๋ถ์ธ๋ค. ํด๋น cli๋ฅผ ์จ ๋ณด์ง ์์์. init script ์์์๋ ์๋ฒ์์ ์ง์ ๋ง์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉ.
- detachBlockStorageInstances: ์๋ฒ์ ๋ธ๋ก ์คํ ๋ฆฌ์ง๋ฅผ ๋๋ค. ํด๋น cli๋ฅผ ์จ ๋ณด์ง ์์์. init script ์์์๋ ์๋ฒ์์ ์ง์ ์ธ๋ง์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉ.
- ํธํ cli: "https://cli.ncloud-docs.com/docs/guide-objectstorage" ์ฐธ๊ณ . aws cli๋ฅผ ์ด์ฉํ์ฌ, NCP์ object storage์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ๋ ์ฌ์ฉ.
- GCP๋ ์นด์นด์ค ํด๋ผ์ฐ๋ ํ๋ซํผ๊ณผ ๋ค๋ฅด๊ฒ, ๋ธ๋ก ์คํ ๋ฆฌ์ง๋ฅผ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ง์ดํธ ๊ณผ์ ์ด ํ์ํ์ฌ ๋ถํธํ ๋ฉด์ด ์๋ค. GCP์ ๊ฒฝ์ฐ ๋ธ๋ก ์คํ ๋ฆฌ์ง์ ์ฌ์ด์ฆ๋ฅผ ์ธ์คํด์ค ์์ฑ๊ณผ ํจ๊ป ๋ช ์ํ๋ค๋ ์ ์ด ๊ฐ๋จํ๊ณ , ์นด์นด์ค ํด๋ผ์ฐ๋๋ ์ฝ์ ์์์ ์คํ ๋ฆฌ์ง๋ฅผ ํจ๊ป ์์ฑ์ํจ๋ค.
- init script๊ฐ OS(ServerImageProduct)๊ฐ Ubuntu Server 18.04 (64-bit)๊ฐ ์๋ "productCode": "SPSW0LINUX000063", "productName": "redis(3.2.8)-ubuntu-14.04-64-server"์์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
์ค๋ฅ๋ ์ฒ์์๋ jq ๋ช ๋ น์ด๋ฅผ ๋ชป ์ฐพ๋ ์ค๋ฅ์๊ณ , ์๋ฒ์ ์ง์ ์ ์ํ์ฌ ํ๋ํ๋ cli๋ฅผ ๋ค์ ์๋ํ๋ ๋์๋ค. ๋ค๋ง apt install python-pip -y, pip install awscli==1.15.85 ๋ผ์ธ์์ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ๋ณด์, OS ๋ณ๋ก install ๋ฐฉ์์ด ๋ค๋ฅธ ๋ฐ์์ ๊ธฐ์ธํ ๊ฒ์ผ๋ก ๋ณด์.
- classic ์๋น์ค ์ด์ฉ์ init script ์์ฑ์ cli ์์์ ๋ถ๊ฐ.
- SAIGE๊ฐ ๋๋๊ณ , ์๋ ๋ฐํ์ด ๋ถ๊ฐ๋ฅํ๋ค. ์ด๋ ์๋ฒ ๋ฐํ์ ํ๋ ค๋ฉด ์๋ฒ ์ข ๋ฃ๋ฅผ ํด์ผ ํ๋๋ฐ, ์ข ๋ฃ๋ ์๋ฒ๋ ์์ฒด ๋ฐํ์ด ์ ๋๋ ๋ฐ์์ ๊ธฐ์ธํ๋ค. ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ์๋น์ค ์ง๋ฌธ ๋จ๊ธฐ๊ธฐ์ ํด๋น ๋ฌธ์ ์ ๋ํด ๋ฌผ์ด๋ดค์ง๋ง, ํด๊ฒฐ์ ๋ถ๊ฐ๋ฅํด ๋ณด์ธ๋ค. ์๋๋ ๋ค์ด๋ฒ ์ธก ๋ต๋ณ.
์๋ ํ์ธ์. ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ์ ๋๋ค.
์๋ฒ ๋ฐ๋ฉ์ ์ํด์๋ ์๋ฒ ์ ์ง๊ฐ ๋จผ์ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. ๋ง์ํ์ ๋๋ก ์๋ฒ ๋ด์์์ ๋ฐ๋ฉ์ ์ ์ง๊ฐ ์ ํ์ด๊ธฐ์ ๋ฐ๋ฉ๊น์ง์ ์ ์ฐจ๋ ์งํ์ด ์ด๋ ค์ ๋ณด์ ๋๋ค.
๋ถํธํ์๊ฒ ์ง๋ง, CLI ๋ฅผ ์ด์ฉํ์ ๋ค๋ฉด ๋ณ๋์ API ์๋ฒ๋ฅผ ํ์ฉํ์๋ ๊ฒ์ด ์ข๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
-
์๋ฒ ์ด๋ฏธ์ง Ubuntu Server 18.04 (64-bit)์ธ, [Standard] 4vCPU, 32GB Mem, 50GB Disk [g1] ์คํ์ VM ์ธ์คํด์ค๋ก ๋ ๋ฒ์ ์คํ์ ํ์๋ค.
-
Block Storage 500GB๋ HDD๋ฅผ ์ด์ฉํ์๋ค.
- ./ncloud server createServerInstances --serverImageProductCode SPSW0LINUX000130 --serverProductCode SPSVRSSD00000013 --serverName mktest --initScriptNo 72828
-
1์ฐจ ์๋
- Step0: 7์๊ฐ
- Step1: 0.5์๊ฐ
- Step2: chrom22๋ก 4.45์๊ฐ (์ด expected ์๊ฐ = 328.5์๊ฐ)
-
2์ฐจ ์๋
- Step0: 7์๊ฐ
- Step1: 0.5์๊ฐ
- Step2: chrom22๋ก 4.5์๊ฐ (์ด expected ์๊ฐ = 333.6์๊ฐ)
- ์๋ฒ ์ด๋ฏธ์ง Ubuntu Server 18.04 (64-bit)์ธ, [Standard] 4vCPU, 32GB Mem, 50GB Disk [g1] ์คํ์ VM ์ธ์คํด์ค์ Block Storage 500GB๋ฅผ SDD๋ฅผ ์ด์ฉํ ๊ฒฐ๊ณผ
- Step0: 7์๊ฐ
- Step1: 0.5์๊ฐ
- Step2: chrom22๋ก 4.38์๊ฐ (์ด expected ์๊ฐ = 324.98์๊ฐ)
-์คํ์ ํตํ์ฌ, ๋์จ ๊ฒฐ๊ณผ์ timestamp๋ "NCP_SAIGE/output_log/24Feb06_output.log", "NCP_SAIGE/output_log/4Jan10_output.log" ์ด๋ค.
#!/bin/bash
set -e
exec > >(tee /var/log/startup-script.log) 2>&1
timestamp=$(date)"start"
echo ${timestamp}
curl -L https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 -o /usr/local/bin/jq
chmod a+x /usr/local/bin/jq
apt install sshpass
sshpass -p 'flfoq' scp -o StrictHostKeyChecking=no -P 1028 -r root@27.96.129.251:/root/cli_linux /root/
cd /root/cli_linux
export AWS_ACCESS_KEY_ID="JcWpzzSYISiipUCMlqsH"
export AWS_SECRET_ACCESS_KEY="k6FfwQ4gRxkGQQ9xvWUQX559E4X0xY00gd2VmF2h"
echo -e "${AWS_ACCESS_KEY_ID}\n${AWS_SECRET_ACCESS_KEY}\n\n" | ./ncloud configure
serverInstanceNo=$(./ncloud server getServerInstanceList | jq -r '.getServerInstanceListResponse.serverInstanceList[] | select(.serverName == "mktest") | .serverInstanceNo')
apt install python-pip -y
pip install awscli==1.15.85
echo -e "${AWS_ACCESS_KEY_ID}\n${AWS_SECRET_ACCESS_KEY}\n\n" | aws configure
blockInstanceNo=$(./ncloud server createBlockStorageInstance --blockStorageSize 500 --serverInstanceNo ${serverInstanceNo} | jq -r '.createBlockStorageInstanceResponse.blockStorageInstanceList[] | select(.serverName == "mktest") | .blockStorageInstanceNo')
DIRECTORY="/dev/xvdb"
while true; do
if [ -e "$DIRECTORY" ]; then
echo "Can't find directory"
break
else
echo "Found directory"
fi
sleep 5
done
echo "escape while loop"
echo -e "n\np\n\n\n\nw\n" | fdisk /dev/xvdb
mkfs.ext4 /dev/xvdb1
mkdir /mnt/a
mount /dev/xvdb1 /mnt/a
DIRECTORY="/mnt/a"
while true; do
if [ -e "$DIRECTORY" ]; then
echo "Can't find directory"
break
else
echo "Found directory"
fi
sleep 5
done
echo "escape while loop"
mkdir -p /mnt/a/data1/SAIGE/SAIGE_Step1/
mkdir -p /mnt/a/data1/SAIGE/SAIGE_Step2/output
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key UKB_step1.fam /mnt/a/data1/SAIGE/SAIGE_Step1/UKB_step1.fam
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key UKB_step1.bed /mnt/a/data1/SAIGE/SAIGE_Step1/UKB_step1.bed
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key UKB_step1.bim /mnt/a/data1/SAIGE/SAIGE_Step1/UKB_step1.bim
cd /root
sudo apt-get update
sudo apt-get install docker.io -y
newgrp docker
docker pull wzhou88/saige:1.3.0
cd /mnt/a/data1/SAIGE/SAIGE_Step1
timestamp=$(date)"step0start"
echo ${timestamp}
docker run -w /mnt/a/data1/SAIGE/SAIGE_Step1 -v /mnt/a/data1/SAIGE/SAIGE_Step1/:/mnt/a/data1/SAIGE/SAIGE_Step1/ wzhou88/saige:1.3.0 createSparseGRM.R --plinkFile=/mnt/a/data1/SAIGE/SAIGE_Step1/UKB_step1 --nThreads=4 --outputPrefix=/mnt/a/data1/SAIGE/SAIGE_Step1/sparseGRM --numRandomMarkerforSparseKin=2000 --relatednessCutoff=0.125
timestamp=$(date)"step0end"
echo ${timestamp}
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key HDL_imputed_pheno.txt /mnt/a/data1/SAIGE/SAIGE_Step1/HDL_imputed_pheno.txt
mkdir /mnt/a/data1/SAIGE/SAIGE_Step1/output
timestamp=$(date)"step1start"
echo ${timestamp}
docker run -w /mnt/a/data1/SAIGE/SAIGE_Step1 -v /mnt/a/data1/SAIGE/SAIGE_Step1/:/mnt/a/data1/SAIGE/SAIGE_Step1/ wzhou88/saige:1.3.0 step1_fitNULLGLMM.R \
--useSparseGRMtoFitNULL=TRUE \
--sparseGRMFile=/mnt/a/data1/SAIGE/SAIGE_Step1/sparseGRM_relatednessCutoff_0.125_2000_randomMarkersUsed.sparseGRM.mtx \
--sparseGRMSampleIDFile=/mnt/a/data1/SAIGE/SAIGE_Step1/sparseGRM_relatednessCutoff_0.125_2000_randomMarkersUsed.sparseGRM.mtx.sampleIDs.txt \
--plinkFile=/mnt/a/data1/SAIGE/SAIGE_Step1/UKB_step1 \
--phenoFile=/mnt/a/data1/SAIGE/SAIGE_Step1/HDL_imputed_pheno.txt \
--phenoCol=HDL \
--covarColList=Sex,Age,PC1,PC2,PC3,PC4,PC5,PC6,PC7,PC8,PC9,PC10 \
--sampleIDColinphenoFile=eid \
--traitType=quantitative \
--invNormalize=TRUE \
--outputPrefix=./output/HDL_imputed_Step1 \
--nThreads=4 \
--LOCO=TRUE \
--FemaleCode=2 \
--MaleCode=1 \
--IsOverwriteVarianceRatioFile=TRUE
timestamp=$(date)"step1end"
echo ${timestamp}
cd /mnt/a/data1/SAIGE/SAIGE_Step2
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key ukb45227_imp_chr1_v3_s487296.sample /mnt/a/data1/SAIGE/SAIGE_Step2/ukb45227_imp_chr1_v3_s487296.sample
timestamp=$(date)"step2start"
echo ${timestamp}
for ((chr=1; chr<=22; chr++))
do
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key ukb_imp_chr${chr}_v3.bgen.bgi /mnt/a/data1/SAIGE/SAIGE_Step2/ukb_imp_chr${chr}_v3.bgen.bgi
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api get-object --bucket leelabsgtest --key ukb_imp_chr${chr}_v3.bgen /mnt/a/data1/SAIGE/SAIGE_Step2/ukb_imp_chr${chr}_v3.bgen
docker run -w /mnt/a/data1/SAIGE/ -v /mnt/a/data1/SAIGE/:/mnt/a/data1/SAIGE/ wzhou88/saige:1.3.0 step2_SPAtests.R \
--bgenFile=/mnt/a/data1/SAIGE/SAIGE_Step2/ukb_imp_chr${chr}_v3.bgen \
--bgenFileIndex=/mnt/a/data1/SAIGE/SAIGE_Step2/ukb_imp_chr${chr}_v3.bgen.bgi \
--minMAF=0.0001 \
--minMAC=10 \
"--chrom="$(printf "%02d" $chr) \
--GMMATmodelFile=/mnt/a/data1/SAIGE/SAIGE_Step1/output/HDL_imputed_Step1.rda \
--sampleFile=/mnt/a/data1/SAIGE/SAIGE_Step2/ukb45227_imp_chr1_v3_s487296.sample \
--varianceRatioFile=/mnt/a/data1/SAIGE/SAIGE_Step1/output/HDL_imputed_Step1.varianceRatio.txt \
--SAIGEOutputFile=/mnt/a/data1/SAIGE/SAIGE_Step2/output/chr${chr}_HDL_imputed_output \
--LOCO=FALSE
rm /mnt/a/data1/SAIGE/SAIGE_Step2/ukb_imp_chr${chr}_v3.bgen
rm /mnt/a/data1/SAIGE/SAIGE_Step2/ukb_imp_chr${chr}_v3.bgen.bgi
done
timestamp=$(date)"step2end"
echo ${timestamp}
for ((chr=1; chr<=22; chr++))
do
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api put-object --bucket leelabsgtest --key chr${chr}_HDL_imputed_output --body /mnt/a/data1/SAIGE/SAIGE_Step2/output/chr${chr}_HDL_imputed_output
aws --endpoint-url=https://kr.object.ncloudstorage.com s3api put-object --bucket leelabsgtest --key chr${chr}_HDL_imputed_output.index --body /mnt/a/data1/SAIGE/SAIGE_Step2/output/chr${chr}_HDL_imputed_output.index
done
umount -l /mnt/a- ์นด์นด์ค ํด๋ผ์ฐ๋๋ "kc_helpdesk@kakaoenterprise.com" ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ํตํด ๊ธฐ์ ์ ๋ฌธ์๋ฅผ ๋ด๋ถ ๊ธฐ์ ์์ ํ ์ ์์ผ๋ฉฐ, ๋ต๋ณ ์๊ฐ๋ ๋น ๋ฅด๋ค.
- ์นด์นด์ค ํด๋ผ์ฐ๋๋ api, cli๋ฅผ ์ด์ฉํ์ฌ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ์ญ์ ํ ์ ์๋ค.
์๋ ํ์ธ์, ์นด์นด์คํด๋ผ์ฐ๋์ ๋๋ค.
API๋ก Virtual Machine ์์ฑ์ด ๊ฐ๋ฅํ์ง ๋ฌธ์ํด ์ฃผ์ จ์ต๋๋ค.
ํ์ฌ ์นด์นด์คํด๋ผ์ฐ๋์์ API๋ฅผ ์ฌ์ฉํ์ฌ Virtual Machine ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ ์ ๊ณต๋์ง ์์ต๋๋ค.
์๊ฐ ๋ด์ด ๋ฌธ์ํด ์ฃผ์ จ์ผ๋ ์ํ๋ ๋ต๋ณ์ ๋๋ฆฌ์ง ๋ชปํ๋ ์ ์ํด ๋ถํ๋๋ฆฌ๋ฉฐ, ๋ ๋์ ์๋น์ค ์ ๊ณต์ ์ํด ์ต์ ์ ๋คํ๊ฒ ์ต๋๋ค
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์, ์นด์นด์คํด๋ผ์ฐ๋์ ๋๋ค.
์นด์นด์คํด๋ผ์ฐ๋ ์์ฒด CLI์ ๋ํด ๋ฌธ์ํด ์ฃผ์ จ์ต๋๋ค.
์นด์นด์คํด๋ผ์ฐ๋์์๋ ์์ฒด CLI๋ฅผ ์ ๊ณตํด ๋๋ฆฌ๊ณ ์์ง ์์ต๋๋ค.
ํด๋น ๋ฌธ๊ตฌ๋ API ์ธ์ฆ ํ ํฐ์ MAC์ ํฐ๋ฏธ๋ ๋ฑ ์ผ๋ฐ CLI ํ๊ฒฝ์์ ์ฌ์ฉํ์ฌ ์ธ์ฆ์ด ๊ฐ๋ฅํ๋ค๋ ๋ป์ ๋ฌธ๊ตฌ๋ก, ์นด์นด์คํด๋ผ์ฐ๋์์ ์ ๊ณตํด ๋๋ฆฌ๊ณ ์๋ ๊ฐ์ข API Reference ๊ฐ์ด๋๋ฅผ ์งํํด ์ฃผ์๊ธฐ ์ ํ์ํ ์ธ์ฆ ๊ณผ์ ์ ๋ํ ๋ฌธ๊ตฌ์ ๋๋ค.
์ด์ฉ์ ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
- ์นด์นด์ค ํด๋ผ์ฐ๋์ ์ ์ํ๊ธฐ ์ํด์๋ pem ํ์ผ์ด ํด๋น ์์น์ ์์ด์ผ ํ๋ฉฐ, ์๋์ ๋ช
๋ น์ผ๋ก ์ ์์ด ๊ฐ๋ฅํ๋ค. pem ํ์ผ์ "/pem_certificate/kakao/leelab.pem" ์ ์๋ค.
- "ssh -i leelab.pem ubuntu@61.109.214.162"
- ๊ณต๊ณต๊ธฐ๊ด์ฉ ์นด์นด์ค ํด๋ผ์ฐ๋์์ ์ ์์ ํด์ผ ์ฝ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ์ผ๋ฐ ์นด์นด์ค ํด๋ผ์ฐ๋์์๋ ์กฐ์ง ์ด๋ฆ ๊ฒ์์ด ์ ๋์ง๋ง, ์๋ ๋งํฌ๋ก ๋ค์ด๊ฐ๋ฉด ๊ฐ๋ฅํ๋ค.
- ๊ณต๊ณต๊ธฐ๊ด์ฉ์ธ ๊ฒฝ์ฐ CSAP ํด๋ผ์ฐ๋ ๋ณด์ ์ธ์ฆ์ ๋ฐ์์ผ ํ๋๋ฐ, ์ด ๋๋ฌธ์ ์ผ๋ฐ ํด๋ผ์ฐ๋ ์๋น์ค("https://kakaocloud.com") ์ ๊ณต๊ณต๊ธฐ๊ด์ฉ ํด๋ผ์ฐ๋ ์๋น์ค("https://kakaocloud-kr-gov.com/intro") ๊ฐ ๋๋ ์ ธ ์๋ค.
- ๋ง์ฝ, ์๋ก์ด ์๋ฒ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ ์ถ์ผ๋ฉด ์๋์ ์ ์ฐจ๋ฅผ ๋ฐ๋ฅธ๋ค.
+ ์ฝ์ -> virtual machine -> instance ๋ง๋ค๊ธฐ ํด๋ฆญ
+ ๊ธฐ๋ณธ์ ๋ณด, ์ด๋ฏธ์ง, ์ธ์คํด์ค ํ์
, ๋ณผ๋ฅจ์ ์์ ๋กญ๊ฒ ์ ํํด๋ ๋๋ค. key pair๋ leelab, vpc๋ leelab, subnet์ main, security group์ leelab1์ ์ ํํด ์ค๋ค.
+ ์ ์ด๋ฏธ์ง public ip ์ฐ๊ฒฐ์ ๋๋ฅด๊ณ [์๋ก์ด Public IP๋ฅผ ์์ฑํ๊ณ ์๋์ผ๋ก ํ ๋น]์ ๋๋ฅธ๋ค.
+ ์ ์ด๋ฏธ์ง ssh ์ฐ๊ฒฐ์ ๋๋ฅด๊ณ ๋ช
๋ น์ด๋ฅผ ๋ณต์ฌํ์ฌ ์คํํ๋ค.
-
SAIGE ์คํ์ ํ์ํ ๋ฐ์ดํฐ๋ ์นด์นด์ค ํด๋ผ์ฐ๋ ๋ด์์ leelab ์๋ฒ๋ก๋ถํฐ scp๋ก ์ฎ๊ฒจ์๋ค.
-
Object Storage ์๋น์ค๋ ์์ง๋ง, ์ฝ์ ์์์๋ ํ ํ์ผ ์ต๋ ํฌ๊ธฐ๊ฐ 50GB๋ฅผ ๋๊ฒ ์ฌ๋ฆฌ์ง ๋ชป ํ๋ค.
-
๋ค์ด๋ฒ ํด๋ผ์ฐ๋์ ๊ฐ์ ํธ์คํธ-์ธ์คํด์ค ๊ด๊ณ์ ์ํคํ ์ณ๊ฐ ์๋๋ผ์, Object Storage๋ฅผ ์ฌ์ฉํ ํ์๋ ์์ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
-
swift api๋ฅผ ์ง์ํ์ฌ, ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ put, getํ๋ค. ( "https://docs.openstack.org/api-ref/object-store/index.html" )
-
์ด๋ฅผ ์๋ํด ๋ณด์์ผ๋, ์ ๋์ง ์์์ผ๋ฉฐ, ๊ด๋ จ ๋ฌธ์๋ฅผ ๋๋ ธ์ผ๋, ์นด์นด์ค ์ธก์ ์๋์ ๊ฐ์ ๋ต๋ณ์ ๋ณด๋๋ค.์ถ๊ฐ์ ์ผ๋ก SWIFT API ์ฌ์ฉ ์์ ์ ๋ํ ๊ณต์์ ์ธ ๊ฐ์ด๋๋ ์ ๊ณต๋๊ณ ์์ง ์์ต๋๋ค.์๊ฐ ๋ด์ด ๋ฌธ์ํด ์ฃผ์ จ์ผ๋ ์ํ๋ ๋ต๋ณ์ ๋๋ฆฌ์ง ๋ชปํ๋ ์ ์ํด ๋ถํ๋๋ฆฌ๋ฉฐ,๋ ๋์ ์๋น์ค ์ ๊ณต์ ์ํด ์ต์ ์ ๋คํ๊ฒ ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค -
์ด์ ๋ณ๊ฐ๋ก ์๋์ ๊ฐ์ด api๋ฅผ curl๋ก ๋ ๋ ค์, token ์ธ์ฆ์ ํ ์ ์๋ค. ๊ด๋ จ ์๋ฃ ("https://docs.kakaocloud.com/start/api-preparation", "https://docs.kakaocloud.com/service/bss/object-storage/how-to-guides")
curl -i -X POST -H "Content-Type: application/json" -d '{"auth": {"identity": {"methods": ["application_credential"],"application_credential": {"id": "8c27fe7e1c0a47ef854dd10109b29438","secret": "7uH2yJctQRzXkVS2WI3mooMxbAvL6vN2UIOgRz5HNzlVWgmu3zic-8Zt0clS13U1Pzb1ywqKyCxly8vxFTEFtg"}}}}' https://iam.kakaoicloud-kr-gov.com/identity/v3/auth/tokens
-
์ ๋ก๋ ์ฝ๋ ์์ :
curl -i https://objectstorage.kr-gov-central-1.kakaoicloud-kr-gov.com/v1/118a1f5ae43b44e7937d560eefe1486a/leelabsgtest/step1/hello.txt -X PUT -T hello.txt -H "Content-Type: text/html; charset=UTF-8" -H "X-Auth-Token: $token"
-
-
์๋ฒ ์ด๋ฏธ์ง Ubuntu 20.04์ธ, [r1i.xlarge] 4vCPU, 32GB Mem, 200GB SSD ์คํ์ VM ์ธ์คํด์ค๋ก ํ ๋ฒ์ ์คํ์ ํ์๋ค.
- Step0: 5์๊ฐ 24๋ถ
- Step1: 18๋ถ
- Step2: chrom22๋ก 3์๊ฐ 48๋ถ (์ด expected ์๊ฐ = 281.7์๊ฐ)
-
๋ค์ด๋ฒ์์ ์๋ ์ฐจ์ด๋ ๋์คํฌ ๋๋ผ์ด๋ธ๊ฐ SDD(kakao)์ธ์ง, HDD(naver)์ธ์ง์ ๋ฐ๋ฅธ ๊ฒ์ผ ์ ์๋ค.
-
์คํ์ ํตํ์ฌ, ๋์จ ๊ฒฐ๊ณผ์ timestamp๋ "KCP_SAIGE/output_log/step0 & step1.log", "KCP_SAIGE/output_log/step2.log" ์ด๋ค.
-
์ถํ 1~22๊น์ง ์คํํ๊ธฐ ์ํด์๋ SSD ํฌ๊ธฐ๋ฅผ ๋๋ ค์ ์์ฑํด์ผ ํ๋ค.
#!/bin/bash
timestamp=$(date)"step0start"
echo ${timestamp}
cd /home/ubuntu/step1
timestamp=$(date)"step0start"
echo ${timestamp}
docker run -w /home/ubuntu/step1 -v /home/ubuntu/step1/:/home/ubuntu/step1/ wzhou88/saige:1.3.0 createSparseGRM.R --plinkFile=/home/ubuntu/step1/UKB_step1 --nThreads=4 --outputPrefix=/home/ubuntu/step1/sparseGRM --numRandomMarkerforSparseKin=2000 --relatednessCutoff=0.125
timestamp=$(date)"step0end"
echo ${timestamp}
mkdir /home/ubuntu/step1/output
mkdir /home/ubuntu/step2/output
timestamp=$(date)"step1start"
echo ${timestamp}
docker run -w /home/ubuntu/step1 -v /home/ubuntu/step1/:/home/ubuntu/step1/ wzhou88/saige:1.3.0 step1_fitNULLGLMM.R \
--useSparseGRMtoFitNULL=TRUE \
--sparseGRMFile=/home/ubuntu/step1/sparseGRM_relatednessCutoff_0.125_2000_randomMarkersUsed.sparseGRM.mtx \
--sparseGRMSampleIDFile=/home/ubuntu/step1/sparseGRM_relatednessCutoff_0.125_2000_randomMarkersUsed.sparseGRM.mtx.sampleIDs.txt \
--plinkFile=/home/ubuntu/step1/UKB_step1 \
--phenoFile=/home/ubuntu/step1/HDL_imputed_pheno.txt \
--phenoCol=HDL \
--covarColList=Sex,Age,PC1,PC2,PC3,PC4,PC5,PC6,PC7,PC8,PC9,PC10 \
--sampleIDColinphenoFile=eid \
--traitType=quantitative \
--invNormalize=TRUE \
--outputPrefix=./output/HDL_imputed_Step1 \
--nThreads=4 \
--LOCO=TRUE \
--FemaleCode=2 \
--MaleCode=1 \
--IsOverwriteVarianceRatioFile=TRUE
timestamp=$(date)"step1end"
echo ${timestamp}
cd /home/ubuntu
timestamp=$(date)"step2start"
echo ${timestamp}
docker run -w /home/ubuntu/ -v /home/ubuntu/:/home/ubuntu/ wzhou88/saige:1.3.0 step2_SPAtests.R \
--bgenFile=/home/ubuntu/step2/ukb_imp_chr22_v3.bgen \
--bgenFileIndex=/home/ubuntu/step2/ukb_imp_chr22_v3.bgen.bgi \
--minMAF=0.0001 \
--minMAC=10 \
--chrom=22 \
--GMMATmodelFile=/home/ubuntu/step1/output/HDL_imputed_Step1.rda \
--sampleFile=/home/ubuntu/step2/ukb45227_imp_chr1_v3_s487296.sample \
--varianceRatioFile=/home/ubuntu/step1/output/HDL_imputed_Step1.varianceRatio.txt \
--SAIGEOutputFile=/home/ubuntu/step2/output/chr22_HDL_imputed_output \
--LOCO=FALSE
timestamp=$(date)"step2end"
echo ${timestamp}




