CloudStack API - cra16/overcast GitHub Wiki

์ด ๋ฌธ์„œ๋Š” ์˜ค๋ž˜๋œ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋‚ด์šฉ์œผ๋กœ ๊ฐฑ์‹ ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๋Š” 2012๋…„ ๋‹น์‹œ์˜ CloudStack ์„ค์น˜ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์Šต์— ํ™œ์šฉํ•˜๊ธฐ์—๋Š” ๋ฌด๋ฆฌ๊ฐ€ ์žˆ์œผ๋‹ˆ ์„ค์น˜ ํ๋ฆ„์„ ๋ฐฐ์šฐ๋Š” ๋‹จ์ˆœ ์ฐธ๊ณ ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

CloudStack์€ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ web api๋กœ ์ œ๊ณตํ•œ๋‹ค. CloudStack web ui๋ฅผ ์ด์šฉํ•ด๋„ ๋Œ€๋ถ€๋ถ„์˜ ํ•„์š”ํ•œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ web ui๋กœ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ๋˜ํ•œ ๊ณ ๊ธ‰ ์‘์šฉ์„ ์œ„ํ•ด์„œ๋Š” web api์˜ ์‚ฌ์šฉ์ด ํ•„์ˆ˜์ ์ด๊ธฐ๋„ ํ•˜๋‹ค.

๊ด€๋ฆฌ์ž๋Š” ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณต๋˜๋Š” web UI๋ฅผ ํ†ตํ•ด์„œ ์ œ์–ดํ•˜๋ฉด ๋˜์ง€๋งŒ, ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ UI๋Š” API ํ†ต์‹ ์œผ๋กœ ์ œ๊ณต๋œ๋‹ค.

3.0์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค. ๊ธฐ๋ณธ web api ํฌํŠธ๋ฒˆํ˜ธ๋Š” 8086์ด๋ฉฐ, ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. vm์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ api ํ˜ธ์ถœ์ด๋‹ค.

# wget http://mycloudstack.com:8086/?command=deployVirtualMachine&serviceofferingid=1\
&templateid=3&zoneid=1&account=admin&diskofferingid=5
  • command : api ๋ช…๋ น. deployVirtualMachine๋Š” vm์„ ์ƒ์„ฑํ•˜๋ผ๋Š” ์˜๋ฏธ๋‹ค.
  • serviceofferingid :
  • templateid : vm ์ƒ์„ฑ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์šด์˜์ฒด์ œ ํ…œํ”Œ๋ฆฟ์˜ id
  • zoneid : vm์„ ์ƒ์„ฑํ•  zone์˜ id
  • account : vm์„ ์†Œ์œ ํ•  account
  • diskofferingid : vm์„ ์ƒ์„ฑํ•  ๋””์Šคํฌ ํ˜•ํƒœ. (ํฌ๊ธฐ, shared / dedicate ๋ฐฉ์‹ ๋“ฑ...)

์š”์ฒญ ๊ฒฐ๊ณผ๋Š” JSON ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์šฉ์–ด ์ •๋ฆฌ

cloudstack api์— ๋‚˜์˜ค๋Š” ์šฉ์–ด๋“ค์„ ์ •๋ฆฌํ•œ๋‹ค. ์ฃผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์ด๋‹ค.

  • VirtualMachine ๊ฐ€์ƒ ๋จธ์‹  ํ˜น์€ VM์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

  • virtualmachineid ๋งŒ๋“ค์–ด์ง„ vm์˜ ์ผ๋ จ๋ฒˆํ˜ธ

  • service offering VM์„ ๋งŒ๋“ค๋•Œ ์‚ฌ์šฉํ•  VMํŠน์ง•๋“ค์ด๋‹ค. hypvervisor ํƒ€์ž…, cpu ์†๋„์™€ ๊ฐฏ์ˆ˜, memory ํฌ๊ธฐ, root volume ํฌ๊ธฐ, root disk tag๋“ฑ์ด ์ •์˜๋ผ์žˆ๋‹ค. ํ•˜๋‚˜ ์ด์ƒ์˜ service offering์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, VM์˜ ์šฉ๋„์— ๋”ฐ๋ผ์„œ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ service offering๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

  • serviceofferingid ๋งŒ๋“ค์–ด์ง„ service offering์˜ id๋กœ API ํ˜ธ์ถœ์‹œ ์‚ฌ์šฉํ•œ๋‹ค.

  • account cloudstack ๊ณ„์ •.

  • domain account๋ฅผ ๋ฌถ๋Š” ์ƒ์œ„ ์นดํ…Œ๊ณ ๋ฆฌ. ํ•˜๋‚˜์˜ domain์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ account๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. domain > account > user ์˜ 3 ๊ณ„์ธต์„ ๊ฐ€์ง„๋‹ค. domain์€ ์„œ๋น„์Šค ํ”„๋กœ๋ฐ”์ด๋”, account๋Š” ์„œ๋น„์Šค๋ฅผ ๋ฐ›๋Š” ๊ณ„์ •, user์€ account์— ํฌํ•จ๋œ ์‚ฌ์šฉ์ž ๊ณ„๋…์ด๋‹ค.

  • host

    cloudstack๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” cnode(computing node)๋กœ hypervisor๊ฐ€ ์˜ฌ๋ผ๊ฐ„ ์„œ๋ฒ„๋‹ค. bear metal host๋„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  • hostid API ํ˜ธ์ถœ์‹œ ์‚ฌ์šฉํ•˜๋Š” ํ˜ธ์ŠคํŠธ์˜ ์ผ๋ จ ๋ฒˆํ˜ธ

  • securitygroup basic network mode์—์„œ vm๊ฐ„ isolation์„ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ํˆด์ด๋‹ค. iptable, arptable๋ฅผ ์ด์šฉ ํŒจํ‚ท์„ ํ•„ํ„ฐ๋งํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. vm์€ ํ•˜๋‚˜ ์ด์ƒ์˜ securitygroup๋ฅผ ๊ฐ€์ง„๋‹ค. 2.2๊นŒ์ง€๋Š” ์ž…๋ ฅ ํŒจํ‚ท์— ๋Œ€ํ•œ ํ•„ํ„ฐ๋ง๋งŒ ๊ฐ€๋Šฅํ–ˆ์œผ๋‚˜ 3.0 ๋ถ€ํ„ฐ๋Š” ์ž…์ถœ๋ ฅ ํŒจํ‚ท ๋ชจ๋‘ ํ•„ํ„ฐ๋ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • disk offering VM์ด ์‚ฌ์šฉํ•  disk ๋ช…์„ธ๋กœ, VM์„ ์„ ํƒํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ disk offering์„ ์„ ํƒํ•œ๋‹ค. ๋””์Šคํฌ์˜ ํฌ๊ธฐ, disk tag๋“ฑ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  • diskofferingid API ํ˜ธ์ถœ์— ์‚ฌ์šฉํ•˜๋Š” disk offering์˜ ์ผ๋ จ ๋ฒˆํ˜ธ

  • zone cloudstack๋Š” cloud ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ณ๋ฅผ ์ถ”์ƒํ™” ํ•˜๋Š”๋ฐ, zone์€ ์ตœ์ƒ์œ„ ๊ฐœ๋…์ด๋‹ค. zone > pod > cluster > host ์˜ ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

  • zoneid API ํ˜ธ์ถœ์— ์‚ฌ์šฉํ•˜๋Š” zone์˜ ์ผ๋ จ ๋ฒˆํ˜ธ

  • volume vm์ด ์‚ฌ์šฉํ•˜๋Š” ๋””์Šคํฌ ๊ณต๊ฐ„. volume์€ root disk volume๊ณผ data disk volume์ด ์žˆ๋‹ค. root disk volume์€ VM์˜ ๊ตฌ๋™์„ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ณผ๋ฅจ์œผ๋กœ ์ปค๋„์ด ์œ„์น˜ํ•œ๋‹ค. data disk volume์€ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ณผ๋ฅจ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

  • job cloudstack์ด ์‹คํ–‰ํ•˜๋Š” ์ž‘์—…๋‹จ์œ„. API๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด job์ด ๋งŒ๋“ค์–ด์ง€๊ณ  ์ด job์€ job queue์— ๋“ค์–ด๊ฐ„๋‹ค.

  • jobid job์˜ ์ผ๋ จ๋ฒˆํ˜ธ. jobid๋ฅผ ์ด์šฉํ•ด์„œ job ์ƒํƒœ์™€ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • template vm์˜ vhd์™€ vhd์˜ ๋ฉ”ํƒ€์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. cloudstack ์œ ์ €๋Š” ๋ฏธ๋ฆฌ ์ค€๋น„๋œ template๋ฅผ ์ด์šฉํ•ด์„œ vm์„ ๋งŒ๋“ ๋‹ค.

  • templateid API ํ˜ธ์ถœ์— ์‚ฌ์šฉํ•˜๋Š” template์˜ ์ผ๋ จ ๋ฒˆํ˜ธ

  • egressrule securitygroup์—์„œ ์ถœ๋ ฅ ํŒจํ‚ท์„ ํ•„ํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

  • ingresule securitygroup์—์„œ ์ž…๋ ฅ ํŒจํ‚ท์„ ํ•„ํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

  • mysql cloudstack์€ mysql๋กœ cloud ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์—ฌ๊ธฐ์— node, vm, template, job, disk, network ๋“ฑ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.