[Hyper-V] [Open Stack] [Controller Node] [๋ถ€๊ฐ€ ๊ธฐ๋Šฅ] โ‘  Heat - Orchestration ์„œ๋น„์Šค ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ

2023. 9. 17. 00:00ใ†System ์ž‘์—…์‹ค/Server ๊ด€๋ จ

728x90
๋ฐ˜์‘ํ˜•

 

 

 

 

 

 

 

 

 

OpenStack for Architects - Second Edition Paperback

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 




๐Ÿ—‚ ๋ชฉ์ฐจ

1. [Hyper-V] [Open Stack] Open Stack์ด๋ž€?
2. [Hyper-V] [Open Stack] [Controller Node] Hyper-V ๊ตฌ์„ฑ ๋ฐ Ubuntu 22.04.3 LTS Server ์„ค์น˜
3. [Hyper-V] [Open Stack] [Controller Node] โ‘  ์˜คํ”ˆ์Šคํƒ ํŒจํ‚ค์ง€ ์„ค์น˜
4. [Hyper-V] [Open Stack] [Controller Node] โ‘ก NTP Server ๊ตฌ์„ฑ
5. [Hyper-V] [Open Stack] [Controller Node] โ‘ข RabbitMQ - Message Queue ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ
6. [Hyper-V] [Open Stack] [Controller Node] โ‘ฃ Memcached ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ
7. [Hyper-V] [Open Stack] [Controller Node] โ‘ค Etcd ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ
8. [Hyper-V] [Open Stack] [Controller Node] โ‘ฅ Keystone - Identity ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ
9. [Hyper-V] [Open Stack] [Controller Node] โ‘ฆ Image Service - Glance ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ  
10. [Hyper-V] [Open Stack] [Controller Node] โ‘ง Compute Service - Nova ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ
11. [Hyper-V] [Open Stack] [Contoller Node] โ‘จ Neutron - Network ์„œ๋น„์Šค ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ
12. [Hyper-V] [Open Stack] [Controller Node] โ‘ โ“ช Horizon - Dashboard ์„œ๋น„์Šค ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ

13. [Hyper-V] [Open Stack] [Compute Node] Hyper-V ๊ตฌ์„ฑ ๋ฐ Ubuntu 22.04.3 LTS Server ์„ค์น˜ ๋ฐ ์ดˆ๊ธฐ ๊ตฌ์„ฑ
14. [Hyper-V] [Open Stack] [Compute Node] โ‘  ์˜คํ”ˆ์Šคํƒ ํŒจํ‚ค์ง€ ์„ค์น˜
15. [Hyper-V] [Open Stack] [Compute Node] โ‘ก Nova ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ
16. [Hyper-V] [Open Stack] [Compute Node] โ‘ข Neutron - Network ์„œ๋น„์Šค ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ

 

 

 

 

๐Ÿš€ Controller Node ๊ตฌ์„ฑ

    ๐Ÿ”ฝ ๊ฐœ์š”

์ฃผ๋‹ˆ์˜ ์˜คํ”ˆ์Šคํƒ ๊ตฌ์„ฑ๋„

 

 

 

 

       ๐Ÿ“ฆ ์†Œ๊ฐœ

์ด๋ฒˆ์—๋Š” ์˜คํ”ˆ์Šคํƒ์˜ Heat์„ ์„ค์น˜ํ•˜๊ณ , ๊ตฌ์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•ด์š”.

Heat์€ ์˜คํ”ˆ์Šคํƒ์˜ ํ•„์ˆ˜ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ, ์ฃผ๋‹ˆ๋Š” ์•„๋ž˜ ๋‚ด์šฉ์— ๋งค๋ ฅ์„ ๋Š๊ปด ์„ค์น˜ํ•ด ๋ณด๋ ค๊ณ  ํ•ด์š”.

Heat์€ ์˜คํ”ˆ์Šคํƒ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ํ”Œ๋žซํผ์˜ ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋กœ Infrastructure(์ธํ”„๋ผ ์ŠคํŠธ๋Ÿญ์ฒ˜)๋ฅผ ์ž๋™ํ™”ํ•˜๊ณ , ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Template(ํ…œํ”Œ๋ฆฟ) ๊ธฐ๋ฐ˜์˜ Orchestration(์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜) ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ์š”์†Œ์—์š”.

์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์ธ์Šคํ„ด์Šค, ๋„คํŠธ์›Œํฌ, ์Šคํ† ๋ฆฌ์ง€ ๋“ฑ์˜ ์ž์›์„ ์ •์˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”.

Heat์€ Stack(์Šคํƒ)์ด๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐ€์ƒ ์ž์›์„ ๊ทธ๋ฃนํ™”ํ•˜๊ณ , ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์Šคํƒ์„ ์ƒํ—ํ•˜๊ณ , ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ด๋Š” ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์ธํ”„๋ผ ์ŠคํŠธ๋Ÿญ์ฒ˜๋ฅผ ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•˜๊ณ , ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค€๋‹ต๋‹ˆ๋‹ค.

๋˜ํ•œ, Heat์€ ์˜คํ”ˆ์Šคํƒ์˜ ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ํ†ตํ•ฉ๋˜์–ด ์ธ์Šคํ„ด์Šค, ๋„คํŠธ์›Œํฌ ์„ค์ •, ์Šคํ† ๋ฆฌ์ง€ ๋ณผ๋ฅจ ๋“ฑ์„ ์ž๋™์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ณ , ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ด ์ค˜์š”.

์ด๋ฅผ ํ†ตํ•ด ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์ž๋™ํ™”๋œ ์ž‘์—… ๋ฐ ์Šค์ผ€์ผ๋ง์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

Heat์€ AWS์˜ ECS(Elastic Container Service)์™€ GCP์˜ GKE(Google Kubernetes Engine)๊ณผ ๋น„์Šทํ•œ ์„œ๋น„์Šค์—์š”.
Heat์€ HOT(Heat Orchestration Template)์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์šฐ๋“œ ์ž์›์„ ์ƒ์„ฑํ•˜๊ณ , ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด์—์š”.

์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„œ๋น„์Šค๋Š” ์‹คํ–‰ ์ค‘์ธ Application(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์˜คํ”ˆ์Šคํƒ API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜์˜ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์–ด์š”.

heat์˜ logical architecture ์ถœ์ฒ˜: https://ettrends.etri.re.kr/ettrends/152/0905002033/0905002033.html

 

 

Heat ๊ตฌ์„ฑ ์š”์†Œ ์ƒ์„ธ ๋‚ด์šฉ
Heat AWS Cludformation API๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด heat-api์™€ ํ†ต์‹ ํ•˜๋Š” Client Command Interface
Heat-api rpc๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ Heat-engine์—๊ฒŒ ์‚ฌ์šฉ์ž์˜ HOT ํ…œํ”Œ๋ฆฟ์— ๋Œ€ํ•œ API ์š”์ฒญ ์ฒ˜๋ฆฌํ•˜๋Š” ์˜คํ”ˆ์Šคํƒ REST API
Heat-api-cloudwatch Heat ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” Cloudwatch API ์„œ๋น„์Šค๋กœ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ ์ œ๊ณต.
Heat-api-cfn AWS Cloudformation๊ณผ ํ˜ธํ™˜๋˜๋ฉฐ, RPC๋ฅผ ํ†ตํ•ด Heat-engine์—๊ฒŒ API ์š”์ฒญ์„ ๋ณด๋‚ด ์ฒ˜๋ฆฌํ•˜๋„๋กํ•˜๋Š” AWS Query API
Heat-engine ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ํ…œํ”Œ๋ฆฟ(HOT)์— ์ •์˜๋œ๋Œ€๋กœ ์„œ๋น„์Šค๋ฅผ nova, neutron๊ณผ ๊ฐ™์€ ์˜คํ”ˆ์Šคํƒ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ์‹œ์ž‘ํ•˜๊ณ , ๊ทธ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” Event๋ฅผ API ์š”์ฒญ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋ฉฐ, DB์—๋„ ๊ทธ ์ •๋ณด ์ €์žฅ.

 

Heat์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” API๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜์—ฌ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๊ฑฐ๋‚˜, CLI(Command Line Interface)๋ฅผ ํ†ตํ•ด ๋™์ผ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ด ๋•Œ, CLI ์—ญ์‹œ ์‚ฌ์šฉ์ž ๋ช…๋ น์„ API๋กœ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, ์ˆ˜์‹ ๋œ API ์„œ๋ฒ„๋Š” AMQP(Advanced Message Queueing Protocol) ๊ทœ๊ฒฉ ๊ธฐ๋ฐ˜์˜ ๋ฉ”์‹œ์ง€ ํ†ต์‹ ์„ ํ†ตํ•ด Heat Engine์œผ๋กœ ์ด๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์žˆ์–ด์š”.


Heat Engine์€ ์ˆ˜์‹ ํ•œ ํ…œํ”Œ๋ฆฟ๊ณผ API ํŒŒ๋ผ๋ฏธํ„ฐ์— ํฌํ•จ๋œ ์‚ฌ์šฉ์ž ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธํ”„๋ผ ๋ฐ ํด๋ผ์šฐ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•˜์—ฌ Nova API, Neutron API ๋“ฑ๊ณผ ๊ฐ™์€ ์˜คํ”ˆ์Šคํƒ ํ”„๋กœ์ ํŠธ๋“ค์˜ API๋ฅผ ํ˜ธ์ถœํ•œ๋‹ต๋‹ˆ๋‹ค.

Heat์„ ์ด์šฉํ•˜๋ฉด ๋งŽ์€ ์‹œ์Šคํ…œ ์‚ฌ์šฉ๋Ÿ‰์— ๋งž์ถฐ ์ปดํ“จํŠธ ๋…ธ๋“œ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ž๋™์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์–ด์š”. CPU ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๊ณผ ๊ฐ™์€ ์š”์†Œ๋ฅผ ๊ณ ๋ คํ•˜๋Š” ์‚ฌ์ „ ์ •์˜๋œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ๊ตฌ์„ฑํ•˜์—ฌ ํ•„์š”ํ•  ๋•Œ, ์ถ”๊ฐ€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์–ด์š”.


์ด๋Š” Auto Scaling(์˜คํ†  ์Šค์ผ€์ผ๋ง) ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ, ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” YAML ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทœ์น™์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ด๋Ÿฌํ•œ ๊ทœ์น™์€ ์›๊ฒฉ ๋ถ„์„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ์Šคํ…œ ๋ถ€ํ•˜๋ฅผ ํ‰๊ฐ€ํ•˜์—ฌ ์Šคํƒ์— ๋” ๋งŽ์€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ ์šฉํ•œ๋‹ต๋‹ˆ๋‹ค.

๋ถ€ํ•˜๊ฐ€ ๊ฐ์†Œํ•˜๋ฉด ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ธ์Šคํ„ด์Šค๋Š” ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์–ด์š”.

Auto Scaling(์ž๋™ ํ™•์žฅ)
๊ด€๋ จ ์šฉ์–ด
์ƒ์„ธ ๋‚ด์šฉ
Stack(์Šคํƒ) ์Šคํƒ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์šด์˜ ์‹œ ํ•„์š”ํ•œ ๋ชจ๋“  ์ž์›์„ ๋‚˜ํƒ€๋ƒ„.

๋‹จ์ผ ์ธ์Šคํ„ด์Šค ๋ฐ ํ•ด๋‹น ์ž์›๋งŒํผ ๊ฐ„๋‹จํ•˜๊ฑฐ๋‚˜, ๋‹ค๊ณ„์ธต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“  ์ž์› ์ข…์†์„ฑ์ด ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๋งŒํผ ๋ณต์žกํ•ด ์งˆ ์ˆ˜ ์žˆ์Œ.
Template(ํ…œํ”Œ๋ฆฟ) ์‹คํ–‰ํ•  Heat์— ๋Œ€ํ•œ ์ผ๋ จ์˜ ์ž‘์—…์„ ์ •์˜ํ•˜๋Š” YAML Script.
Template File(ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ) Telemetry์—์„œ ์‘๋‹ตํ•˜๋Š” ์ž„๊ณ„๊ฐ’์„ ์ •์˜ํ•˜๊ณ , ์ž๋™ ํ™•์žฅ ๊ทธ๋ฃน ์ •์˜.
Environment File(ํ™˜๊ฒฝ ํŒŒ์ผ) ํ™˜๊ฒฝ์— ๋Œ€ํ•œ Build ์ •๋ณด (์‚ฌ์šฉํ•  ํ”Œ๋ ˆ์ด๋ฒ„ ๋ฐ ์ด๋ฏธ์ง€, ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ• ๋ฐ ์„ค์น˜ํ•  Software) ์ •์˜.




 

    ๐Ÿ”ฝ ๊ตฌ์„ฑ ์š”์†Œ ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ

       ๐Ÿ“ฆ Heat ์ดˆ๊ธฐ ๊ตฌ์„ฑ - ์ปจํŠธ๋กค๋Ÿฌ ๋…ธ๋“œ

์ตœ์ดˆ Keystone์— ์‚ฌ์šฉ์ž์™€ ์„œ๋น„์Šค, ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค์–ด ์ค„๊ฒŒ์š”.

openstack user create --domain default --project service --password servicepassword heat


์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์œ„์™€ ๊ฐ™์ด ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”. servicepassword์—๋Š” ํ•ด๋‹น ๊ณ„์ •์ด ์‚ฌ์šฉํ•  ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋˜๊ณ , ๋˜๋„๋ก ํŠน์ˆ˜๋ฌธ์ž๋Š” ๋„ฃ์ง€ ์•Š๋Š”๊ฑธ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.


openstack role add --project service --user heat admin


๊ทธ๋ฆฌ๊ณ , ์œ„ ๊ณ„์ •์„ ๊ด€๋ฆฌ์ž ์—ญํ• ๋กœ ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ์–ด์š”.


openstack role create heat_stack_owner


์ด๋ฒˆ์—” heat_stack_owner ๋ผ๋Š” ์—ญํ• ์„ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.


openstack role create heat_stack_user


๊ทธ๋ฆฌ๊ณ , heat_stack_user ๊ถŒํ•œ๋„ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.


openstack role add --project admin --user admin heat_stack_owner


admin ๊ณ„์ •์— heat_stack_owner ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ์–ด์š”.


openstack service create --name heat --description "Openstack Orchestration" orchestration


๊ทธ๋ฆฌ๊ณ , heat์ด๋ผ๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.


openstack service create --name heat-cfn --description "Openstack Orchestration" cloudformation


๊ทธ๋Ÿฐ ๋’ค heat-cfn ์ด๋ผ๋Š” ์„œ๋น„์Šค๋„ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.


heat_api=private-controller



openstack endpoint create --region RegionOne orchestration public http://$heat_api:8004/v1/%\(tenant_id\)s; openstack endpoint create --region RegionOne orchestration internal http://$heat_api:8004/v1/%\(tenant_id\)s

 

openstack endpoint create --region RegionOne orchestration admin http://$heat_api:8004/v1/%\(tenant_id\)s


๊ทธ๋ฆฌ๊ณ , ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์— ๋Œ€ํ•œ public, internal, admin ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.



openstack endpoint create --region RegionOne cloudformation public http://$heat_api:8000/v1; openstack endpoint create --region RegionOne cloudformation internal http://$heat_api:8000/v1



openstack endpoint create --region RegionOne cloudformation admin http://$heat_api:8000/v1


์ด๋ฒˆ์—” cloudformation์— ๋Œ€ํ•œ public, internal, admin ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.



openstack domain create --description "Stack projects and users" heat


๊ทธ๋ฆฌ๊ณ , heat ์ด๋ผ๋Š” ๋„๋ฉ”์ธ์„ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.


openstack user create --domain heat --password servicepassword heat_domain_admin


๊ทธ๋ฆฌ๊ณ  ์œ„์™€ ๊ฐ™์ด heat_doamin_admin ์ด๋ผ๋Š” ๊ณ„์ •์„ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.
servicepassword์—๋Š” ํ•ด๋‹น ๊ณ„์ •์ด ์‚ฌ์šฉํ•  ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋˜๊ณ , ๋˜๋„๋ก ํŠน์ˆ˜๋ฌธ์ž๋Š” ๋„ฃ์ง€ ์•Š๋Š”๊ฑธ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.


openstack role add --domain heat --user heat_domain_admin admin


๊ทธ๋ฆฌ๊ณ , heat_domain_admin ๊ณ„์ •์—๊ฒŒ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์˜€์–ด์š”.

 

 

 

       ๐Ÿ“ฆ Heat ์ดˆ๊ธฐ ๊ตฌ์„ฑ - Database

์ด๋ฒˆ์—” DB๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ณ„์ •์„ ๋งŒ๋“ค์–ด ๋ณผ๊ฒŒ์š”.



์œ„์™€ ๊ฐ™์ด DB๋ฅผ ๋งŒ๋“ค๊ณ , ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ณ , ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์˜€์–ด์š”.

 

 

 

       ๐Ÿ“ฆ Heat Networking ๊ตฌ์„ฑ - ์ปจํŠธ๋กค๋Ÿฌ ๋…ธ๋“œ (๋„คํŠธ์›Œํฌ ๋…ธ๋“œ)

๋งŒ์•ฝ ์ฃผ๋‹ˆ์™€ ๋‹ค๋ฅด๊ฒŒ ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ๋ฅผ ๋”ฐ๋กœ ๊ตฌ์„ฑํ–ˆ๋‹ค๋ฉด ์ด ๋ถ€๋ถ„์€ ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ์—์„œ ์ง„ํ–‰ํ•ด ์ฃผ์–ด์•ผ ํ•ด์š”.

apt install heat-api heat-api-cfn heat-engine python3-heatclient python3-vitrageclient python3-zunclient


์ตœ์ดˆ ์œ„์™€ ๊ฐ™์ด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด ์ค„๊ฒŒ์š”.



 

vim /etc/heat/heat.conf [DEFAULT]

 

[DEFAULT]
deferred_auth_method = trusts
trusts_delegated_roles = heat_stack_owner
# Heat API Host
heat_metadata_server_url = http://private-controller:8000
heat_waitcondition_server_url = http://private-controller:8000/v1/waitcondition
heat_stack_user_role = heat_stack_user
# Heat domain name
stack_user_domain_name = heat 
# Heat domain admin username
stack_domain_admin = heat_domain_admin
# Heat domain admin's password
stack_domain_admin_password = servicepassword
# RabbitMQ connection info
transport_url = rabbit://openstack:password@private-controller



์œ„์™€ ๊ฐ™์ด ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฐ๊ฐ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์–ด์•ผ ํ•ด์š”.


vim /etc/heat/heat.conf [database] ์ถ”๊ฐ€

 

[database]
connection = mysql+pymysql://heat:password@192.168.20.254/heat

 

vim /etc/heat/heat.conf [clients_keystone] ์ถ”๊ฐ€

 

[clients_keystone]
auth_uri = http://private-controller:5000



vim /etc/heat/heat.conf [heat_api] ์ถ”๊ฐ€



[heat_api]
bind_host = 192.168.20.3
bind_port = 8004 
#cert_file = /etc/heat/fullchain.pem
#key_file = /etc/heat/privkey.pem




vim /etc/heat/heat.conf [heat_api_cfn] ์ถ”๊ฐ€



[heat_api_cfn]
bind_host = 192.168.20.3
bind_port = 8000 
#cert_file = /etc/heat/fullchain.pem
#key_file = /etc/heat/privkey.pem




vim /etc/heat/heat.conf [keystone_authtoken] ๋ณ€๊ฒฝ

 

[keystone_authtoken]
www_authenticate_uri = http://private-controller:5000
auth_url = http://private-controller:5000
memcached_servers = private-controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = heat 
password = servicepassword
# if using self-signed certs on Apache2 Keystone, turn to [true]
insecure = false
๋ฐ˜์‘ํ˜•




vim /etc/heat/heat.conf [trustee] ์ถ”๊ฐ€



[trustee]
auth_url = http://private-controller:5000
auth_type = password
user_domain_name = default
username = heat 
password = servicepassword



์—ฌ๊ธฐ๊นŒ์ง€ ๋ณ€๊ฒฝ์„ ์™„๋ฃŒํ•˜์˜€์œผ๋ฉด ์ €์žฅํ•˜๊ณ , ๋‚˜์˜ต๋‹ˆ๋‹ค.



chmod 640 /etc/heat/heat.conf; chgrp heat /etc/heat/heat.conf


ํ•ด๋‹น ์„ค์ • ํŒŒ์ผ์˜ ๊ถŒํ•œ๊ณผ ๊ทธ๋ฃน์„ ์œ„์™€ ๊ฐ™์ด ๋ณ€๊ฒฝํ•ด ์ฃผ์—ˆ์–ด์š”.



su -s /bin/bash heat -c "heat-manage db_sync"


๊ทธ๋ฆฌ๊ณ , DB์— ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.


systemctl restart heat-api heat-api-cfn heat-engine; systemctl enable heat-api heat-api-cfn heat-engine



๊ทธ๋ฆฌ๊ณ , ๋ฐ๋ชฌ์€ ์žฌ๊ธฐ๋™ํ•˜๊ณ , ์„œ๋น„์Šค์— ๋“ฑ๋กํ•ด ์ฃผ์—ˆ์–ด์š”.

 

 

 

       ๐Ÿ“ฆ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• - ์ปจํŠธ๋กค๋Ÿฌ ๋…ธ๋“œ

Heat ์„œ๋น„์Šค ๋ฐ ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•˜์—ฌ ํ…œํ”Œ๋ฆฟ์„ ๋ฐฐํฌํ•ด ๋ณด๋„๋ก ํ• ๊ฒŒ์š”.

apt install -y python3-heatclient


์ตœ์ดˆ heatclient ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด ์ฃผ์–ด์•ผ ํ•ด์š”.



mkdir -p /root/heat/template



vim mkdir -p /root/heat/template/sample-stack.yml

 

heat_template_version: 2021-04-16

description: Heat Sample Template

parameters:
  ImageID:
    type: string
    description: Image used to boot a server
  NetID:
    type: string
    description: Network ID for the server

resources:
  server1:
    type: OS::Nova::Server
    properties:
      name: "Heat_Deployed_Server"
      image: { get_param: ImageID }
      flavor: "m1.small"
      networks:
      - network: { get_param: NetID }

outputs:
  server1_private_ip:
    description: IP address of the server in the private network
    value: { get_attr: [ server1, first_address ] }
728x90


์œ„์™€ ๊ฐ™์ด ํ…Œ์ŠคํŠธ์šฉ ํ…œ๋ธ”๋ฆฟ์„ ๋งŒ๋“ค์–ด ๋ณด์•˜์–ด์š”.


openstack image list



ํ˜„์žฌ ์ฃผ๋‹ˆ์˜ ์˜คํ”ˆ์Šคํƒ์—์„œ ๋ณด์œ ํ•œ OS ์ด๋ฏธ์ง€ ๋ชฉ๋ก์„ ์กฐํšŒํ•ด ๋ณด์•˜์–ด์š”.


openstack network list


๊ทธ๋ฆฌ๊ณ  ์˜คํ”ˆ์Šคํƒ์— ๊ตฌ์„ฑํ•œ ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ ๋ชฉ๋ก์„ ํ™•์ธํ•ด ๋ณด์•˜์–ด์š”.



openstack flavor create --id 0 --vcpus 1 --ram 2048 --disk 10 m1.small



๊ทธ๋ฆฌ๊ณ  ์œ„์™€ ๊ฐ™์ด m1.small ์ด๋ผ๋Š” flavor๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.

 

๐Ÿ’ก ์ฐธ๊ณ  ์‚ฌํ•ญ
flavor๋ž€? ์˜คํ”ˆ์Šคํƒ์—์„œ flavor๋ž€ ์ธ์Šคํ„ด์Šค(๊ฐ€์ƒ ๋จธ์‹ )์˜ ํฌ๊ธฐ์™€ ๊ตฌ์„ฑ์„ ์ •์˜ํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ Set(์„ธํŠธ) ์˜๋ฏธ.
Flavor๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์–ด๋–ค ์ž์›์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ค‘์š”ํ•œ ์—ญํ• .

โˆ™ vCPU(๊ฐ€์ƒ CPU): Flavor๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์ƒ CPU ์ˆ˜.
โˆ™ RAM: ์ธ์Šคํ„ด์Šค์— ํ• ๋‹น๋œ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰.
โˆ™ Disk ๊ณต๊ฐ„: ์ธ์Šคํ„ด์Šค์˜ ๋””์Šคํฌ ๊ณต๊ฐ„ ํฌ๊ธฐ๋ฅผ ์˜๋ฏธ. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋””์Šคํฌ ์œ ํ˜•๊ณผ ํ•จ๊ป˜ ์ œ๊ณต.
โˆ™ Storage Type: ์ธ์Šคํ„ด์Šค์˜ ๋””์Šคํฌ์— ์‚ฌ์šฉ๋˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์œ ํ˜• ์ง€์ •. ์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ฐ˜ HDD, SSD ๋“ฑ์œผ๋กœ ๊ตฌ๋ถ„.
โˆ™ ID ๋ฐ ์ด๋ฆ„: Flavor ์‹๋ณ„์„ ์œ„ํ•œ ๊ณ ์œ  ID ๋ฐ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„ ํฌํ•จ.

Flavor๋Š” ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ์š”๊ตฌ์— ๋งž๊ฒŒ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์กฐ์ ˆํ•˜๊ณ , ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Œ. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž‘์ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜ธ์ŠคํŒ… ์šฉ๋„๋ผ๋ฉด ์ž‘์€ CPU ๋ฐ RAM ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ Flavor๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ณ , DB ์„œ๋ฒ„๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋ ค๋ฉด ๋” ๋งŽ์€ CPU ๋ฐ RAM์„ ๊ฐ€์ง„ Flavor ์„ ํƒ ๊ฐ€๋Šฅ. ์ด๋Ÿฌํ•œ ์œ ์—ฐ์„ฑ์€ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ , ๋น„์šฉ์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ๋„์›€.

 

 

{"originWidth":3502,"originHeight":178,"style":"widthContent","caption":"Int_Net_ID=$(openstack network list



openstack stack create -t /root/heat/template/sample-stack.yml --parameter "ImageID=Ubuntu2204;NetID=$Int_Net_ID" Sample-Stack



์œ„์™€ ๊ฐ™์ด ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์•˜์–ด์š”.



openstack stack list



๋ช‡ ๋ถ„์ด ์ง€๋‚˜๋ฉด Stack Status๊ฐ€ CREATE_COMPLETE์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ ,
๊ทธ๋Ÿฐ ๋’ค openstack server list ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

 

 

๐Ÿ’ก ์ฐธ๊ณ  ์‚ฌํ•ญ
Stack ์ œ๊ฑฐ ๋ช…๋ น์–ด: openstack stack delete --yes {Stack ์ด๋ฆ„}

 

 

 

 

Openstack Essentials Second Edition Paperback

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

๐Ÿง ์ฐธ๊ณ  ์ž๋ฃŒ

 

Ubuntu 22.04 LTS : OpenStack Zed : Configure Heat (Control Node) : Server World

root@dlp ~(keystone)# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 103 Server version: 10.6.7-MariaDB-2ubuntu1.1 Ubuntu 22.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;

www.server-world.info

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•