ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์€ ์šฐ๋ฆฌ ์‚ถ ์†์œผ๋กœ ์ ์  ๋” ๊นŠ์ˆ™์ด ์นจํˆฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ ํ•œ ๋ฒˆ์ด๋ผ๋„ ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์€ ์‚ฌ๋žŒ์€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํด๋ผ์šฐ๋“œ๊ฐ€ ์ •ํ™•ํžˆ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•„๋Š” ์‚ฌ๋žŒ์€ ๊ฑฐ์˜ ์—†์œผ๋ฉฐ ์•„์ด๋””์–ด ์ˆ˜์ค€์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. 5G๋Š” ์ด๋ฏธ ํ˜„์‹ค์ด ๋˜๊ณ  ์žˆ์œผ๋ฉฐ ํ†ต์‹  ์ธํ”„๋ผ๋Š” ์™„์ „ํ•œ ํ•˜๋“œ์›จ์–ด ์†”๋ฃจ์…˜์—์„œ ๊ฐ€์ƒํ™”๋œ "๊ธฐ๋‘ฅ"์œผ๋กœ ์ „ํ™˜ํ–ˆ์„ ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐ๋‘ฅ ์†”๋ฃจ์…˜์—์„œ ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜์œผ๋กœ ์ด๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋‚ด๋ถ€ ์„ธ๊ณ„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ , ํŠนํžˆ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„์˜ ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋™์ผํ•œ ๊ฐ€์ƒํ™” - ํ”„๋กœํ•„ ๋ณด๊ธฐ?

๋…ผ๋ฆฌ์ ์ธ ์งˆ๋ฌธ ๊ทธ ์ด์ƒ์ž…๋‹ˆ๋‹ค. ์•„๋‹ˆ์š”. ๊ฐ€์ƒํ™” ์—†์ด๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ฐ€์ƒํ™”๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ์ •์˜๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…(์ดํ•˜ ํด๋ผ์šฐ๋“œ) ๋ถ„์‚ฐ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค๋Š” ์„œ๋น„์Šค ์ œ๊ณต์—…์ฒด์— ๋Œ€ํ•œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ์˜จ๋””๋งจ๋“œ ๋ฐฉ์‹์œผ๋กœ ๋ฐฐํฌ ๋ฐ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์ƒํ™” - ์ด๋Š” ํ•˜๋‚˜์˜ ๋ฌผ๋ฆฌ์  ์—”ํ„ฐํ‹ฐ(์˜ˆ: ์„œ๋ฒ„)๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ€์ƒ ์—”ํ„ฐํ‹ฐ๋กœ ๋‚˜๋ˆ„์–ด ๋ฆฌ์†Œ์Šค ํ™œ์šฉ๋„๋ฅผ ๋†’์ด๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 3๊ฐœ์˜ ์„œ๋ฒ„๊ฐ€ 25-30%๋กœ ๋กœ๋“œ๋˜์—ˆ์œผ๋‚˜ ๊ฐ€์ƒํ™” ํ›„์—๋Š” 1๊ฐœ์˜ ์„œ๋ฒ„๊ฐ€ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. 80-90%). ๋‹น์—ฐํžˆ ๊ฐ€์ƒํ™”๋Š” ์ผ๋ถ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ดํผ๋ฐ”์ด์ €์— ๊ณต๊ธ‰ํ•ด์•ผ ํ•˜์ง€๋งŒ ์‹ค์Šต์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ฒŒ์ž„์€ ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒํ™”์˜ ์ด์ƒ์ ์ธ ์˜ˆ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ค€๋น„ํ•˜๋Š” VMWare ๋˜๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ์ œ๊ฐ€ ์„ ํ˜ธํ•˜๋Š” KVM์ด์ง€๋งŒ ์ด๋Š” ์ทจํ–ฅ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๊นจ๋‹ซ์ง€ ๋ชปํ•œ ์ฑ„ ๊ฐ€์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์‹ฌ์ง€์–ด ์ฒ  ๋ผ์šฐํ„ฐ๋„ ์ด๋ฏธ ๊ฐ€์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ตœ์‹  ๋ฒ„์ „์˜ JunOS์—์„œ๋Š” ์šด์˜ ์ฒด์ œ๊ฐ€ ์‹ค์‹œ๊ฐ„ Linux ๋ฐฐํฌํŒ(Wind River 9) ์œ„์— ๊ฐ€์ƒ ๋จธ์‹ ์œผ๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€์ƒํ™”๋Š” ํด๋ผ์šฐ๋“œ๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ๊ฐ€์ƒํ™” ์—†์ด๋Š” ํด๋ผ์šฐ๋“œ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ€์ƒํ™”๋Š” ํด๋ผ์šฐ๋“œ๊ฐ€ ๊ตฌ์ถ•๋˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ํ•˜๋‚˜์˜ L2 ๋„๋ฉ”์ธ์— ๋ชจ์•„์„œ ํด๋ผ์šฐ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ , ์ผ์ข…์˜ ์•ค์„œ๋ธ”์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ VLAN์„ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๊ฐœ์˜ yaml ํ”Œ๋ ˆ์ด๋ถ์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์ž๋™์œผ๋กœ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์—ฌ๊ธฐ์— ์žฌ๋ฐํ•˜๋Š” ๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋” ์ •ํ™•ํ•˜๊ฒ ์ง€๋งŒ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ƒ์„ฑ๋œ ํ”„๋ž‘์ผ„์Šˆํƒ€์ธ์€ ๋น„๋ก ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๊ถ๊ทน์ ์ธ ๊ฟˆ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•œ ํด๋ผ์šฐ๋“œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋™์ผํ•œ Openstack์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณธ์งˆ์ ์œผ๋กœ ์—ฌ์ „ํžˆ ํ”„๋ž‘์ผ„์Šˆํƒ€์ธ์ด์ง€๋งŒ ์•„ ๋ญ, ์ง€๊ธˆ์€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์œ„์— ์ œ์‹œ๋œ ์ •์˜์—์„œ ์‹ค์ œ๋กœ ํด๋ผ์šฐ๋“œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์™„์ „ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ NIST(National Institute of Standards and Technology)์˜ ๋ฌธ์„œ์—์„œ๋Š” ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ๊ฐ€ ๊ฐ–์ถฐ์•ผ ํ•  5๊ฐ€์ง€ ์ฃผ์š” ํŠน์ง•์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

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

๊ด‘๋ฒ”์œ„ํ•œ ์„œ๋น„์Šค ๊ฐ€์šฉ์„ฑ. ํ‘œ์ค€ PC์™€ ์”ฌ ํด๋ผ์ด์–ธํŠธ, ๋ชจ๋ฐ”์ผ ์žฅ์น˜๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ‘œ์ค€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค๋ฅผ ํ’€๋กœ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค ํ’€์€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฒฉ๋ฆฌ๋˜๊ณ  ์ƒํ˜ธ ์˜ํ–ฅ๊ณผ ๋ฆฌ์†Œ์Šค ๊ฒฝ์Ÿ์ด ์—†๋„๋ก ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ๋„ ํ’€์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด๋Š” ์ค‘๋ณต ์ฃผ์†Œ ์ง€์ •์„ ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ’€์€ ํ•„์š”์— ๋”ฐ๋ผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ’€์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์š”ํ•œ ์ˆ˜์ค€์˜ ๋ฆฌ์†Œ์Šค ๋‚ด๊ฒฐํ•จ์„ฑ๊ณผ ๋ฌผ๋ฆฌ์  ๋ฐ ๊ฐ€์ƒ ๋ฆฌ์†Œ์Šค์˜ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ์ˆ˜์‹ ์ž์—๊ฒŒ๋Š” ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค ์„ธํŠธ(์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์œ„์น˜ํ•œ ์œ„์น˜, ๋ฆฌ์†Œ์Šค์˜ ์ˆ˜)๊ฐ€ ๊ฐ„๋‹จํžˆ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๋ฐ ์Šค์œ„์น˜ - ํด๋ผ์ด์–ธํŠธ์—๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ณต๊ธ‰์ž๊ฐ€ ์ด๋Ÿฌํ•œ ์ž์›์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ํ™•๋ณดํ•ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์กฐ๊ฑด์— ๋Œ€ํ•œ ๋น ๋ฅธ ์ ์‘. ์„œ๋น„์Šค๋Š” ์œ ์—ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์ œ๊ณตํ•˜๊ณ , ์žฌ๋ถ„๋ฐฐํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ ๋˜๋Š” ์ถ•์†Œํ•ด์•ผ ํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ๋Š” ํด๋ผ์šฐ๋“œ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋์ด ์—†๋‹ค๋Š” ๋Š๋‚Œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์˜ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ๊ณ ์žฅ๋‚˜์„œ ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ๊ณ ์žฅ๋‚˜์„œ Apple iCloud์˜ ๋””์Šคํฌ ๊ณต๊ฐ„ ์ผ๋ถ€๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค๋Š” ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ท€ํ•˜์˜ ์ž…์žฅ์—์„œ ์ด ์„œ๋น„์Šค์˜ ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ๋ฌดํ•œํ•ฉ๋‹ˆ๋‹ค. 2TB๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ณ  ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. Google.Drive ๋˜๋Š” Yandex.Disk์—์„œ๋„ ๋น„์Šทํ•œ ์˜ˆ๋ฅผ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์€ ๋Œ€๋ถ€๋ถ„ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด๋ผ๋Š” ์ ์„ ๊ณ ๋ คํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ํ”„๋ผ์ด๋น— ํด๋ผ์šฐ๋“œ(์ฆ‰, ํšŒ์‚ฌ ๋‚ด๋ถ€ ์š”๊ตฌ์— ๋”ฐ๋ผ ์ถœ์‹œ๋œ ํด๋ผ์šฐ๋“œ)์˜ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์•ฝ๊ฐ„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์™„๋ฃŒํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์˜ ๋ชจ๋“  ์ด์ ์„ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

๊ทธ๋Ÿฌ๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์ด๋‚˜ ๊ธฐ์กด ๊ธฐ์ˆ , ์ƒˆ๋กœ์šด ํ”„๋กœํ† ์ฝœ์€ ๋ฌด์–ธ๊ฐ€๋ฅผ ์œ„ํ•ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(๋ฌผ๋ก  RIP-ng๋Š” ์ œ์™ธ). ํ”„๋กœํ† ์ฝœ์„ ์œ„ํ•ด ํ”„๋กœํ† ์ฝœ์ด ํ•„์š”ํ•œ ์‚ฌ๋žŒ์€ ์—†์Šต๋‹ˆ๋‹ค(๋ฌผ๋ก  RIP-ng๋ฅผ ์ œ์™ธํ•˜๊ณ ). ์‚ฌ์šฉ์ž/ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ผ์ข…์˜ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์šฐ๋“œ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์€ ๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” Dropbox ๋˜๋Š” Google.Docs์™€ ๊ฐ™์€ ์ตœ์†Œํ•œ ๋‘ ๊ฐ€์ง€ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์ž˜ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด ๊ธฐ์‚ฌ๋Š” Google.Docs ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋Š” ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์˜ ์ผ๋ถ€์ผ ๋ฟ, ๋” ์ •ํ™•ํ•˜๊ฒŒ๋Š” SaaS ํ˜•ํƒœ์˜ ์„œ๋น„์Šค์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” SaaS, PaaS, IaaS์˜ ์„ธ ๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์„œ๋น„์Šค๋Š” ๊ท€ํ•˜์˜ ์š•๊ตฌ์™€ ๋Šฅ๋ ฅ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๊ฐ๊ฐ์„ ์ˆœ์„œ๋Œ€๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

SaaS (Software as a Service) Yandex.Mail ๋˜๋Š” Gmail๊ณผ ๊ฐ™์€ ์ด๋ฉ”์ผ ์„œ๋น„์Šค์™€ ๊ฐ™์ด ํด๋ผ์ด์–ธํŠธ์— ๋ณธ๊ฒฉ์ ์ธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์ด ์„œ๋น„์Šค ์ œ๊ณต ๋ชจ๋ธ์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ์„œ ๊ท€ํ•˜๋Š” ์‹ค์ œ๋กœ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์„œ๋น„์Šค ์„ค์ •, ๋‚ด๊ฒฐํ•จ์„ฑ ๋˜๋Š” ์ค‘๋ณต์„ฑ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๊ท€ํ•˜์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ›ผ์†ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์„œ๋น„์Šค ์ œ๊ณต์—…์ฒด๊ฐ€ ๊ท€ํ•˜๋ฅผ ์œ„ํ•ด ๋‚˜๋จธ์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค ์ œ๊ณต์ž์˜ ๊ด€์ ์—์„œ ๊ทธ๋Š” ์„œ๋ฒ„ ํ•˜๋“œ์›จ์–ด ๋ฐ ํ˜ธ์ŠคํŠธ ์šด์˜ ์ฒด์ œ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์„ค์ •์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ์ „์ฒด ์„œ๋น„์Šค๋ฅผ ์ „์ ์œผ๋กœ ์ฑ…์ž„์ง‘๋‹ˆ๋‹ค.

์„œ๋น„์Šค ํ˜• ํ”Œ๋žซํผ (PaaS) โ€” ์ด ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ๋•Œ ์„œ๋น„์Šค ๊ณต๊ธ‰์ž๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ์ž‘์—…๋ฌผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์›น ์„œ๋ฒ„). ์„œ๋น„์Šค ์ œ๊ณต์ž๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๊ฐ€์ƒ ์„œ๋ฒ„(์‚ฌ์‹ค์ƒ RAM/CPU/์Šคํ† ๋ฆฌ์ง€/Net ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค ์ง‘ํ•ฉ)๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ด ์„œ๋ฒ„์— OS์™€ ํ•„์š”ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๊นŒ์ง€ ์„ค์น˜ํ–ˆ์ง€๋งŒ, ์ด ๋ชจ๋“  ์ž‘์—…์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‘๋‹ตํ•˜๋Š” ์„œ๋น„์Šค ์„ฑ๋Šฅ์„ ์œ„ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ์‚ฌ๋ก€์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„œ๋น„์Šค ์ œ๊ณต์ž๋Š” ๋ฌผ๋ฆฌ์  ์žฅ๋น„, ํ•˜์ดํผ๋ฐ”์ด์ €, ๊ฐ€์ƒ ๋จธ์‹  ์ž์ฒด, ๋„คํŠธ์›Œํฌ ๊ฐ€์šฉ์„ฑ ๋“ฑ์˜ ์„ฑ๋Šฅ์„ ์ฑ…์ž„์ง€์ง€๋งŒ ์„œ๋น„์Šค ์ž์ฒด๋Š” ๋” ์ด์ƒ ์ฑ…์ž„ ์˜์—ญ์— ์†ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ธํ”„๋ผ๋กœ์„œ์˜ ์„œ๋น„์Šค (IaaS) - ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ด๋ฏธ ๋” ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์„œ๋น„์Šค ๊ณต๊ธ‰์ž๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์™„์ „ํ•œ ๊ฐ€์ƒํ™” ์ธํ”„๋ผ, ์ฆ‰ CPU ์ฝ”์–ด, RAM, ๋„คํŠธ์›Œํฌ ๋“ฑ๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ๋ฆฌ์†Œ์Šค ์„ธํŠธ(ํ’€)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ - ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ• ๋‹น๋œ ํ’€(ํ• ๋‹น๋Ÿ‰) ๋‚ด์—์„œ ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” ์ž‘์—…์€ ๊ณต๊ธ‰์ž์—๊ฒŒ ํŠน๋ณ„ํžˆ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณ ๊ฐ์ด ์ž์‹ ๋งŒ์˜ vEPC๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋“ , ๋ฏธ๋‹ˆ ์šด์˜์ž๋ฅผ ๋งŒ๋“ค๊ณ  ํ†ต์‹  ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‹ถ๋“  ์ƒ๊ด€์—†์ด ๊ทธ๋ ‡๊ฒŒ ํ•˜์„ธ์š”. ์ด๋Ÿฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์„œ๋น„์Šค ๊ณต๊ธ‰์ž๋Š” ๋ฆฌ์†Œ์Šค, ๋‚ด๊ฒฐํ•จ์„ฑ ๋ฐ ๊ฐ€์šฉ์„ฑ์„ ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ’€๋งํ•˜๊ณ  ์–ธ์ œ๋“ ์ง€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” OS๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ. ํด๋ผ์ด์–ธํŠธ๋Š” ๋„คํŠธ์›Œํฌ ์„ค์ •(์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ ์ œ์™ธ)์„ ํฌํ•จํ•˜์—ฌ ์…€ํ”„ ์„œ๋น„์Šค ํฌํ„ธ ๋ฐ ์ฝ˜์†”์„ ํ†ตํ•ด ๋ชจ๋“  ๊ฐ€์ƒ ๋จธ์‹  ๋ฐ ๊ธฐํƒ€ ๋ฐ˜์ง์ด๋ฅผ ์ง์ ‘ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜คํ”ˆ์Šคํƒ์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์„ธ ๊ฐ€์ง€ ์˜ต์…˜ ๋ชจ๋‘์—์„œ ์„œ๋น„์Šค ์ œ๊ณต์—…์ฒด์—๋Š” ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ ์ƒ์„ฑ์„ ์ง€์›ํ•˜๋Š” OS๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ SaaS์˜ ๊ฒฝ์šฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ถ€์„œ๊ฐ€ ์ „์ฒด ๊ธฐ์ˆ  ์Šคํƒ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ธํ”„๋ผ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋ถ€์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋‹ค๋ฅธ ๋ถ€์„œ์— IaaS๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ด ๋ถ€์„œ๋Š” ๊ณ ๊ฐ์—๊ฒŒ SaaS๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. OpenStack์€ ์—ฌ๋Ÿฌ ์Šค์œ„์น˜, ์„œ๋ฒ„ ๋ฐ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์„ ๋‹จ์ผ ๋ฆฌ์†Œ์Šค ํ’€๋กœ ์ˆ˜์ง‘ํ•˜๊ณ , ์ด ๊ณตํ†ต ํ’€์„ ํ•˜์œ„ ํ’€(ํ…Œ๋„ŒํŠธ)๋กœ ๋ถ„ํ• ํ•˜๊ณ , ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์— ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์šด์˜ ์ฒด์ œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

OpenStack ํ‘œ์ค€ ์ธ์ฆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ API๋ฅผ ํ†ตํ•ด ํ”„๋กœ๋น„์ €๋‹ ๋ฐ ๊ด€๋ฆฌ๋˜๋Š” ๋Œ€๊ทœ๋ชจ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค ํ’€, ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€ ๋ฐ ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์šด์˜ ์ฒด์ œ์ž…๋‹ˆ๋‹ค.

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

์ด ์ž๋ฃŒ๋ฅผ ์ž‘์„ฑํ•  ๋‹น์‹œ OpenStack ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ
์‚ฌ์ง„ ์ถœ์ฒ˜: openstack.org

OpenStack์— ํฌํ•จ๋œ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ ๊ตฌ์„ฑ ์š”์†Œ ์ง‘ํ•ฉ์„ ์†”๋ฃจ์…˜์— ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋ฃจํŠธ ๊ตฌ์„ฑ ์š”์†Œ์ด๋ฏ€๋กœ ์ด๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์†”๋ฃจ์…˜ ์ „์ฒด๊ฐ€ ์™„์ „ํžˆ ๋˜๋Š” ๋ถ€๋ถ„์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค.

  • ๋Œ€์‹œ๋ณด๋“œ โ€” OpenStack ์„œ๋น„์Šค ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์›น ๊ธฐ๋ฐ˜ GUI
  • ์š”์ง€ ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ž๊ฒฉ ์ฆ๋ช… ๋ฐ ํ•ด๋‹น ์—ญํ• ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ID ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
  • ์ค‘์„ฑ์ž - ๋‹ค์–‘ํ•œ OpenStack ์„œ๋น„์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ„ ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค(VM ๊ฐ„์˜ ์—ฐ๊ฒฐ ๋ฐ ์™ธ๋ถ€ ์„ธ๊ณ„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ํฌํ•จ)
  • ์‹ ๋” โ€” ๊ฐ€์ƒ ๋จธ์‹ ์šฉ ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ ์„ฑ โ€” ๊ฐ€์ƒ ๋จธ์‹ ์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ ๊ด€๋ฆฌ
  • ์„ฌ๊ด‘ โ€” ๊ฐ€์ƒ ๋จธ์‹  ์ด๋ฏธ์ง€ ๋ฐ ์Šค๋ƒ…์ƒท ์ €์žฅ์†Œ
  • ๋น ๋ฅธ โ€” ์ €์žฅ์†Œ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์šด๊ณ ๊ณ„ โ€” ์›๊ฒฉ ์ธก์ •์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ  ์†Œ๋น„๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ธก์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค
  • ์—ด โ€” ๋ฆฌ์†Œ์Šค ์ž๋™ ์ƒ์„ฑ ๋ฐ ํ”„๋กœ๋น„์ €๋‹์„ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜ ์กฐ์ •

๋ชจ๋“  ํ”„๋กœ์ ํŠธ์™€ ๊ทธ ๋ชฉ์ ์˜ ์ „์ฒด ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

๊ฐ OpenStack ๊ตฌ์„ฑ ์š”์†Œ๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋‹ค๋ฅธ ํด๋ผ์šฐ๋“œ ์šด์˜ ์ฒด์ œ ์„œ๋น„์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜์—ฌ ํ†ตํ•ฉ ์ธํ”„๋ผ๋ฅผ ์ƒ์„ฑํ•˜๋Š” API๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Nova๋Š” ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ์™€ ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•œ API๋ฅผ ์ œ๊ณตํ•˜๊ณ , Glance๋Š” ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ์™€ ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ API๋ฅผ ์ œ๊ณตํ•˜๊ณ , Cinder๋Š” ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€์™€ ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ๋งค์šฐ ๊ธด๋ฐ€ํ•˜๊ฒŒ ์ƒํ˜ธ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋”ฐ์ง€๊ณ  ๋ณด๋ฉด OpenStack์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ์„œ๋น„์Šค๋Š” ๊ฒฐ๊ตญ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ์ผ์ข…์˜ ๊ฐ€์ƒ ๋จธ์‹ (ํ˜น์€ ์ปจํ…Œ์ด๋„ˆ)์ž…๋‹ˆ๋‹ค. ์งˆ๋ฌธ์ด ์ƒ๊น๋‹ˆ๋‹ค. ์™œ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ์š”์†Œ๊ฐ€ ํ•„์š”ํ•œ๊ฐ€์š”?

OpenStack์—์„œ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ๋„คํŠธ์›Œํฌ ๋ฐ ์˜๊ตฌ ์Šคํ† ๋ฆฌ์ง€์— ์—ฐ๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. Horizon(๋Œ€์‹œ๋ณด๋“œ)์„ ํ†ตํ•œ ์š”์ฒญ์ด๋“  CLI๋ฅผ ํ†ตํ•œ ์š”์ฒญ์ด๋“  ๋จธ์‹  ์ƒ์„ฑ ์š”์ฒญ์„ ์ƒ์„ฑํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๋ฐœ์ƒํ•˜๋Š” ์ผ์€ Keystone์— ๋Œ€ํ•œ ์š”์ฒญ ์Šน์ธ์ž…๋‹ˆ๋‹ค. ๋จธ์‹ ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒ๋ฆฌ, ์ดˆ์•ˆ ํ• ๋‹น๋Ÿ‰ ๋“ฑ์„ ํ™•์ธํ•˜์„ธ์š”.
  2. Keystone์€ ์š”์ฒญ์„ ์ธ์ฆํ•˜๊ณ  ์‘๋‹ต ๋ฉ”์‹œ์ง€์— ์ธ์ฆ ํ† ํฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ํ† ํฐ์€ ๋‚˜์ค‘์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Keystone์œผ๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›์€ ํ›„ ์š”์ฒญ์€ Nova(nova api)๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  3. Nova-api๋Š” ์ด์ „์— ์ƒ์„ฑ๋œ ์ธ์ฆ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ Keystone์— ์—ฐ๋ฝํ•˜์—ฌ ์š”์ฒญ์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. Keystone์€ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ด ์ธ์ฆ ํ† ํฐ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ถŒํ•œ ๋ฐ ์ œํ•œ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  5. Nova-api๋Š” nova-database์— ์ƒˆ VM์— ๋Œ€ํ•œ ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•˜๊ณ  ๋จธ์‹  ์ƒ์„ฑ ์š”์ฒญ์„ nova-scheduler์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  6. Nova-scheduler๋Š” ์ง€์ •๋œ ๋งค๊ฐœ๋ณ€์ˆ˜, ๊ฐ€์ค‘์น˜ ๋ฐ ์˜์—ญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ VM์ด ๋ฐฐํฌ๋  ํ˜ธ์ŠคํŠธ(์ปดํ“จํ„ฐ ๋…ธ๋“œ)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๊ธฐ๋ก๊ณผ VM ID๊ฐ€ nova-database์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.
  7. ๋‹ค์Œ์œผ๋กœ, nova-scheduler๋Š” nova-compute์— ์ ‘์†ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค ๋ฐฐํฌ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. Nova-compute๋Š” nova-conductor์— ์ ‘์†ํ•˜์—ฌ ๊ธฐ๊ณ„ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค(nova-conductor๋Š” nova-database์™€ nova-compute ์‚ฌ์ด์—์„œ ํ”„๋ก์‹œ ์„œ๋ฒ„ ์—ญํ• ์„ ํ•˜๋Š” nova ์š”์†Œ๋กœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด nova-database์— ๋Œ€ํ•œ ์š”์ฒญ ์ˆ˜๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค) ์ผ๊ด€์„ฑ ๋ถ€ํ•˜ ๊ฐ์†Œ).
  8. Nova-conductor๋Š” nova-database์—์„œ ์š”์ฒญ๋œ ์ •๋ณด๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ nova-compute์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  9. ๋‹ค์Œ์œผ๋กœ nova-compute๋Š” ์‹œ์„ ์„ ํ˜ธ์ถœํ•˜์—ฌ ์ด๋ฏธ์ง€ ID๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. Glace๋Š” Keystone์—์„œ ์š”์ฒญ์„ ๊ฒ€์ฆํ•˜๊ณ  ์š”์ฒญ๋œ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  10. Nova-compute๋Š” ์ค‘์„ฑ์ž์™€ ์ ‘์ด‰ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. Glance์™€ ์œ ์‚ฌํ•˜๊ฒŒ Neutron์€ Keystone์—์„œ ์š”์ฒญ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ•ญ๋ชฉ(ํฌํŠธ ์‹๋ณ„์ž ๋“ฑ)์„ ์ƒ์„ฑํ•˜๊ณ  ํฌํŠธ ์ƒ์„ฑ ์š”์ฒญ์„ ์ƒ์„ฑํ•œ ํ›„ ์š”์ฒญ๋œ ์ •๋ณด๋ฅผ nova-compute์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  11. Nova-compute์€ ๊ฐ€์ƒ ๋จธ์‹ ์— ๋ณผ๋ฅจ์„ ํ• ๋‹นํ•ด ๋‹ฌ๋ผ๋Š” ์š”์ฒญ์œผ๋กœ cinder์— ์—ฐ๋ฝํ•ฉ๋‹ˆ๋‹ค. Glance์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Cider๋Š” Keystone์—์„œ ์š”์ฒญ์„ ๊ฒ€์ฆํ•˜๊ณ  ๋ณผ๋ฅจ ์ƒ์„ฑ ์š”์ฒญ์„ ์ƒ์„ฑํ•œ ํ›„ ์š”์ฒญ๋œ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  12. Nova-compute์€ libvirt์— ์—ฐ๋ฝํ•˜์—ฌ ์ง€์ •๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋ฐฐํฌํ•ด ๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๊ฐ„๋‹จํ•œ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒ‰๋ณด๊ธฐ์—๋Š” ๊ฐ„๋‹จํ•œ ์ž‘์—…์ด ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์š”์†Œ ๊ฐ„์˜ API ํ˜ธ์ถœ ์†Œ์šฉ๋Œ์ด๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋ณด์‹œ๋‹ค์‹œํ”ผ ์ด์ „์— ์ง€์ •๋œ ์„œ๋น„์Šค๋„ ์ƒํ˜ธ ์ž‘์šฉ์ด ๋ฐœ์ƒํ•˜๋Š” ๋” ์ž‘์€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋จธ์‹ ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—… ์ค‘ ์ž‘์€ ๋ถ€๋ถ„์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ ๊ท ํ˜•์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค, ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค, DNS๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค, ๋ฒ ์–ด๋ฉ”ํƒˆ ์„œ๋ฒ„ ํ”„๋กœ๋น„์ €๋‹์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์ƒ ๋จธ์‹ ์„ ์–‘๋–ผ์ฒ˜๋Ÿผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐ€์ƒํ™”๊ฐ€ ์•„๋‹Œ). ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ๋จธ์‹ ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฐฑ์—… ๋“ฑ์„ ํ†ตํ•ด ๋จธ์‹ ์„ ๋ณต์›ํ•˜์ง€๋งŒ ํด๋ผ์šฐ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ฐ€์ƒ ๋จธ์‹ ์ด ๊ทธ๋ ‡๊ฒŒ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์ถ•๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ€์ƒ ๋จธ์‹ ์ด "์ฃฝ์—ˆ์Šต๋‹ˆ๋‹ค". ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. - ํ…œํ”Œ๋ฆฟ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ์ฐจ๋Ÿ‰์ด ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ๊ทธ๋“ค์ด ๋งํ–ˆ๋“ฏ์ด ๋ถ„๋Œ€๋Š” ์ „ํˆฌ๊ธฐ์˜ ์†์‹ค์„ ์•Œ์•„์ฐจ๋ฆฌ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ ์ด๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Heat ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜์‹ญ ๊ฐœ์˜ ๋„คํŠธ์›Œํฌ์™€ ๊ฐ€์ƒ ๋จธ์‹ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์—†์ด๋Š” ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ๊ฐ€ ์—†๋‹ค๋Š” ์ ์„ ํ•ญ์ƒ ๋ช…์‹ฌํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์š”์†Œ๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์š”์†Œ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํด๋ผ์šฐ๋“œ์—๋Š” ์™„์ „ํžˆ ๋น„์ •์  ๋„คํŠธ์›Œํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ ์–ธ๋”๋ ˆ์ด ๋„คํŠธ์›Œํฌ๋Š” ๋‹ค์†Œ ์ •์ ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋…ธ๋“œ์™€ ์Šค์œ„์น˜๋Š” ๋งค์ผ ์ถ”๊ฐ€๋˜์ง€ ์•Š์ง€๋งŒ ์˜ค๋ฒ„๋ ˆ์ด ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ง€์†์ ์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•„์—ฐ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋„คํŠธ์›Œํฌ๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋˜๊ณ , ์ƒˆ๋กœ์šด ๊ฐ€์ƒ ๋จธ์‹ ์ด ๋‚˜ํƒ€๋‚˜๊ณ  ์ด์ „ ๋„คํŠธ์›Œํฌ๋Š” ๋‚˜ํƒ€๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฃผ์‚ฌ์œ„. ๊ทธ๋ฆฌ๊ณ  ๊ธฐ์‚ฌ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ œ๊ณต๋œ ํด๋ผ์šฐ๋“œ ์ •์˜์—์„œ ๊ธฐ์–ตํ–ˆ๋“ฏ์ด ๋ฆฌ์†Œ์Šค๋Š” ์„œ๋น„์Šค ์ œ๊ณต์—…์ฒด์˜ ๊ฐœ์ž…์„ ์ตœ์†Œํ•œ์œผ๋กœ(๋˜๋Š” ๋” ์ข‹๊ฒŒ๋Š”) ํ•˜์ง€ ์•Š๊ณ  ์ž๋™์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ• ๋‹น๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ˜„์žฌ http/https๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ธ ๊ณ„์ •์˜ ํ˜•ํƒœ๋กœ ํ”„๋ŸฐํŠธ์—”๋“œ ํ˜•ํƒœ๋กœ ์กด์žฌํ•˜๋Š” ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค ์ œ๊ณต ์œ ํ˜•๊ณผ ๋ฐฑ์—”๋“œ๋กœ ๊ทผ๋ฌดํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์—”์ง€๋‹ˆ์–ด์ธ Vasily๋Š” ํด๋ผ์šฐ๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐ”์‹ค๋ฆฌ์˜ ์†์ด ์—ฌ๋Ÿ ๊ฐœ์ธ ๊ฒฝ์šฐ.

๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค์ธ Neutron์€ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์„œ๋น„์Šค๋Š” NaaS(Network-as-a-Service)๋ผ๋Š” ์ถ”์ƒํ™” ๊ณ„์ธต์„ ์ œ๊ณตํ•˜์—ฌ Openstack์˜ ๋„คํŠธ์›Œํ‚น ๋ถ€๋ถ„์„ ๊ฐ•ํ™”ํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋„คํŠธ์›Œํฌ๋Š” ๊ฐ€์ƒ CPU ์ฝ”์–ด๋‚˜ RAM ์šฉ๋Ÿ‰๊ณผ ๊ฐ™์€ ๊ฐ€์ƒ ์ธก์ • ๊ฐ€๋Šฅ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ OpenStack์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์•„ํ‚คํ…์ฒ˜๋กœ ์ด๋™ํ•˜๊ธฐ ์ „์— ์ด ๋„คํŠธ์›Œํฌ๊ฐ€ OpenStack์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๋„คํŠธ์›Œํฌ๊ฐ€ ํด๋ผ์šฐ๋“œ์˜ ์ค‘์š”ํ•˜๊ณ  ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์ธ ์ด์œ ๋ฅผ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‘ ๊ฐœ์˜ RED ํด๋ผ์ด์–ธํŠธ VM๊ณผ ๋‘ ๊ฐœ์˜ GREEN ํด๋ผ์ด์–ธํŠธ VM์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋จธ์‹ ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‘ ๊ฐœ์˜ ํ•˜์ดํผ๋ฐ”์ด์ €์— ์œ„์น˜ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

ํ˜„์žฌ ์ด๊ฒƒ์€ ๋‹จ์ง€ 4๊ฐœ์˜ ์„œ๋ฒ„๋ฅผ ๊ฐ€์ƒํ™”ํ•œ ๊ฒƒ์ผ ๋ฟ์ด๊ณ  ๊ทธ ์ด์ƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๊ฐ€ ํ•œ ์ผ์€ 4๊ฐœ์˜ ์„œ๋ฒ„๋ฅผ ๊ฐ€์ƒํ™”ํ•˜์—ฌ ๋‘ ๊ฐœ์˜ ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ๊นŒ์ง€๋Š” ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„์„ ๊ฐ€์ƒํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด 4๊ฐœ์˜ ๋จธ์‹ ์„ ์Œ์œผ๋กœ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋ฉฐ ํด๋ผ์ด์–ธํŠธ๋Š” L2 ์—ฐ๊ฒฐ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ์Šค์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ•ด๋‹น ๋ฐฉํ–ฅ์œผ๋กœ ํŠธ๋ ํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  Linux ๋ธŒ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ openvswitch(๋‚˜์ค‘์— ์ด์— ๋Œ€ํ•ด ๋‹ค์‹œ ์„ค๋ช…)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋งŽ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์Šค์œ„์น˜๋ฅผ ํ†ตํ•ด ์ง€์†์ ์œผ๋กœ L2๋ฅผ ์ถ”์ง„ํ•˜๋Š” ๊ฒƒ์€ ์ตœ์„ ์˜ ์•„์ด๋””์–ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ถ€์„œ, ์„œ๋น„์Šค ๋ฐ์Šคํฌ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ช‡ ๋‹ฌ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋ช‡ ์ฃผ๊ฐ€ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ํ˜„๋Œ€ ์„ธ๊ณ„์—์„œ๋Š” ์ด๊ฒƒ์ด ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํšŒ์‚ฌ๊ฐ€ ์ด๋ฅผ ๋นจ๋ฆฌ ์ดํ•ดํ• ์ˆ˜๋ก ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•˜์ดํผ๋ฐ”์ด์ € ์‚ฌ์ด์—์„œ ๊ฐ€์ƒ ๋จธ์‹ ์ด ํ†ต์‹ ํ•  L3 ๋„คํŠธ์›Œํฌ๋ฅผ ์„ ํƒํ•˜๊ณ , ์ด L3 ๋„คํŠธ์›Œํฌ ์œ„์— ๊ฐ€์ƒ ๋จธ์‹ ์˜ ํŠธ๋ž˜ํ”ฝ์ด ์‹คํ–‰๋  ๊ฐ€์ƒ L2 ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ์บก์Šํ™”๋กœ GRE, Geneve ๋˜๋Š” VxLAN์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน๋ณ„ํžˆ ์ค‘์š”ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ง€๊ธˆ์€ ํ›„์ž์— ์ดˆ์ ์„ ๋งž์ถฐ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

VTEP๋ฅผ ์–ด๋”˜๊ฐ€์— ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋ชจ๋“  ์‚ฌ๋žŒ์ด VxLAN ์šฉ์–ด์— ์ต์ˆ™ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค). ์„œ๋ฒ„์—์„œ ๋ฐ”๋กœ L3 ๋„คํŠธ์›Œํฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜๋ฏ€๋กœ ์„œ๋ฒ„ ์ž์ฒด์— VTEP๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฉฐ OVS(OpenvSwitch)๋Š” ์ด ์ž‘์—…์„ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋””์ž์ธ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

VM ๊ฐ„์˜ ํŠธ๋ž˜ํ”ฝ์€ ๋‚˜๋ˆ„์–ด์ ธ์•ผ ํ•˜๋ฏ€๋กœ ๊ฐ€์ƒ ๋จธ์‹ ์œผ๋กœ ํ–ฅํ•˜๋Š” ํฌํŠธ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ VLAN ๋ฒˆํ˜ธ๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํƒœ๊ทธ ๋ฒˆํ˜ธ๋Š” ํ•˜๋‚˜์˜ ๊ฐ€์ƒ ์Šค์œ„์น˜ ๋‚ด์—์„œ๋งŒ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. VxLAN์— ์บก์Šํ™”ํ•˜๋ฉด VNI๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์‰ฝ๊ฒŒ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

์ด์ œ ๋ฌธ์ œ ์—†์ด ๋จธ์‹ ๊ณผ ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํด๋ผ์ด์–ธํŠธ์— ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์ด ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๋„คํŠธ์›Œํฌ ๊ฐ„ ๋ฃจํŒ…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ค‘์•™ ์ง‘์ค‘์‹ ๋ผ์šฐํŒ…์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ„๋‹จํ•œ ์˜ต์…˜์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํŠธ๋ž˜ํ”ฝ์€ ํŠน์ˆ˜ ์ „์šฉ ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ๋ฅผ ํ†ตํ•ด ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค(์ผ๋ฐ˜์ ์œผ๋กœ ์ œ์–ด ๋…ธ๋“œ์™€ ๊ฒฐํ•ฉ๋˜๋ฏ€๋กœ ๋™์ผํ•œ ๋‚ด์šฉ์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค).

๋ณต์žกํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ œ์–ด ๋…ธ๋“œ์— ๋ธŒ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ํŠธ๋ž˜ํ”ฝ์„ ๊ทธ๊ณณ์œผ๋กœ ์œ ๋„ํ•œ ๋‹ค์Œ ํ•„์š”ํ•œ ๊ณณ์œผ๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฌธ์ œ๋Š” RED ํด๋ผ์ด์–ธํŠธ๋Š” 10.0.0.0/24 ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , GREEN ํด๋ผ์ด์–ธํŠธ๋Š” 10.0.0.0/24 ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ต์ฐจํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ๋กœ ๋ผ์šฐํŒ…๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํƒ€๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ์™€ ํด๋ผ์ด์–ธํŠธ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ๊ฐ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์‹ค์ œ๋กœ Linux ๋„คํŠธ์›Œํฌ ์Šคํƒ์˜ ๋ณต์‚ฌ๋ณธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋„ค์ž„์ŠคํŽ˜์ด์Šค RED์˜ ํด๋ผ์ด์–ธํŠธ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค GREEN์˜ ํด๋ผ์ด์–ธํŠธ์™€ ์™„์ „ํžˆ ๊ฒฉ๋ฆฌ๋ฉ๋‹ˆ๋‹ค(์Œ, ์ด๋Ÿฌํ•œ ํด๋ผ์ด์–ธํŠธ ๋„คํŠธ์›Œํฌ ๊ฐ„์˜ ๋ผ์šฐํŒ…์€ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋˜๋Š” ์—…์ŠคํŠธ๋ฆผ ์ „์†ก ์žฅ๋น„๋ฅผ ํ†ตํ•ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค).

์ฆ‰, ๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์–ป์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

L2 ํ„ฐ๋„์€ ๋ชจ๋“  ์ปดํ“จํŒ… ๋…ธ๋“œ์—์„œ ์ œ์–ด ๋…ธ๋“œ๋กœ ์ˆ˜๋ ด๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„คํŠธ์›Œํฌ์˜ L3 ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ๋…ธ๋“œ๋Š” ๊ฐ๊ฐ ๊ฒฉ๋ฆฌ๋ฅผ ์œ„ํ•œ ์ „์šฉ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ทธ ๊ฒฐ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

ํ•ฉ๋ฆฌ์ ์ธ ์งˆ๋ฌธ์€ ์™œ ์ปดํ“จํŒ… ๋…ธ๋“œ ์ž์ฒด์— ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š”๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํฐ ๋ฌธ์ œ๋Š” ์•„๋‹ˆ๋ฉฐ, ๋ถ„์‚ฐ ๋ผ์šฐํ„ฐ(DVR)๋ฅผ ์ผœ๋ฉด ์ž‘๋™๋ฉ๋‹ˆ๋‹ค. ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” OpenStack์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์˜ต์…˜์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๋ถ€ํ•˜ ๊ธฐ๋Šฅ์˜ ๊ฒฝ์šฐ ๋ถ„์‚ฐ ๋ผ์šฐํ„ฐ์™€ SR-IOV, ํŒจ์Šค์Šค๋ฃจ ๋“ฑ์˜ ๊ฐ€์† ๊ธฐ์ˆ ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ๋งํ•˜๋Š” ๋ฐ”์™€ ๊ฐ™์ด ์ด๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค. ๋จผ์ € ๊ธฐ๋ณธ์ ์ธ ๋ถ€๋ถ„์„ ์‚ดํŽด๋ณธ ํ›„, ์„ธ๋ถ€์ ์ธ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์šฐ๋ฆฌ ๊ณ„ํš์€ ์ด๋ฏธ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์šฐ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ๋“  ์šฐ๋ฆฌ ๋จธ์‹ ์„ ๋ณดํ˜ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ–ฅํ•œ ์Šค์œ„์น˜ ์ธํ„ฐํŽ˜์ด์Šค์— ํ•„ํ„ฐ๋ฅผ ๋†“์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งค๋ฒˆ ์ฝ˜์†”์„ ํ†ตํ•ด ๋กœ๊ทธ์ธํ•˜์—ฌ ์ฃผ์†Œ๋ฅผ ๋“ฑ๋กํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ๊ฐ€์ƒ๋จธ์‹ ์ด IP ์ฃผ์†Œ๋ฅผ ์ž๋™์œผ๋กœ ํš๋“ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๊ณ„๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํ‰๋ฒ”ํ•œ iptables๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ ์•ˆ ๋ ๊นŒ์š”?

์ฆ‰, ์ด์ œ ํ† ํด๋กœ์ง€๊ฐ€ ์ข€ ๋” ๋ณต์žกํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

๊ณ„์† ์ง„ํ–‰ํ•ฉ์‹œ๋‹ค. DHCP ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ DHCP ์„œ๋ฒ„๋ฅผ ์ฐพ๋Š” ๊ฐ€์žฅ ์ด์ƒ์ ์ธ ์žฅ์†Œ๋Š” ์œ„์—์„œ ์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ์ œ์–ด ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

๊ทธ๋Ÿฌ๋‚˜ ์ž‘์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์žฌ๋ถ€ํŒ…๋˜๊ณ  DHCP ์ฃผ์†Œ ์ž„๋Œ€์— ๋Œ€ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๊ธฐ๊ณ„์— ์ƒˆ๋กœ์šด ์ฃผ์†Œ๊ฐ€ ๋ถ€์—ฌ๋˜๋Š” ๊ฒƒ์€ ๋…ผ๋ฆฌ์ ์ด์ง€๋งŒ ์ด๋Š” ๊ทธ๋ฆฌ ํŽธ๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•ด DNS ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ฃผ์†Œ๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ํŠน๋ณ„ํžˆ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(k8s์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„๊ณผ ์œ ์‚ฌ). ๊ทธ๋Ÿฌ๋‚˜ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์†Œ๋Š” DHCP๋ฅผ ํ†ตํ•ด ๋ฐœ๊ธ‰๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์˜ DNS ์„œ๋ฒ„ ๋ฐ ์™ธ๋ถ€ DNS ์„œ๋ฒ„์™€์˜ ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ๊ทธ๋‹ค์ง€ ์œ ์—ฐํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ๋‘ ๋ฒˆ์งธ ์˜ต์…˜์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ๊ณ„๊ฐ€ ์ด๋ฏธ ์ฃผ์†Œ๋ฅผ ์ˆ˜์‹ ํ•œ ๊ฒฝ์šฐ DHCP ์„œ๋ฒ„๊ฐ€ ๊ธฐ๊ณ„์— ์–ด๋–ค ์ฃผ์†Œ๋ฅผ ๋ฐœํ–‰ํ• ์ง€ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๊ณ„์— ๋ฐœํ–‰๋œ ์ฃผ์†Œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์˜ต์…˜์€ ์ž๋™์ฐจ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค์ด์–ด๊ทธ๋žจ์— ์—์ด์ „ํŠธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

๋…ผ์˜ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•˜๋‚˜์˜ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๊ฐ€ ์ „์ฒด ๋„คํŠธ์›Œํฌ์— ๊ฑธ์ณ ์œ ํšจํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์–ด๋ ค์šธ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„คํŠธ์›Œํฌ์˜ ํ• ๋‹น์„ ์ง€์†์ ์œผ๋กœ ํ• ๋‹นํ•˜๊ณ  ์ œ์–ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•ด ์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ๋‹จ์ผ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์€ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฃผ์†Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ๊ฐ ํด๋ผ์ด์–ธํŠธ์˜ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•ด ๊ณ ์œ ํ•œ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ์„ ํƒํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋จธ์‹  ๋ฐฐํฌ๊ฐ€ ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ๋˜ํ•œ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋ฅผ ๋ฏธ๋ฆฌ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐฐํฌ ์‹œ ์™ธ๋ถ€ ์ฃผ์†Œ๋ฅผ ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ๊ณผ ์—ฐ๊ฒฐํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ NAT๊ฐ€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. NAT ๋ณ€ํ™˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ์„ธ๊ณ„์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž, ์—ฌ๊ธฐ์— ์ž‘์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„๊ฐ€ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ฆ‰ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ์— ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” ๊ทธ ๋ฐ˜๋Œ€๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ•  ๋•Œ ์ œ์–ด ๋…ธ๋“œ๊ฐ€ ์ด ํŠธ๋ž˜ํ”ฝ์ด ํด๋ผ์ด์–ธํŠธ A์˜ ๊ฐ€์ƒ ๋จธ์‹  A๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž„์„ ์ดํ•ดํ•˜๋„๋ก ๋Œ€์ƒ NAT๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์™ธ๋ถ€ ์ฃผ์†Œ(์˜ˆ: 100.1.1.1)์—์„œ NAT ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. .10.0.0.1, ๋‚ด๋ถ€ ์ฃผ์†Œ 100. ์ด ๊ฒฝ์šฐ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์ผํ•œ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋‚ด๋ถ€ ๊ฒฉ๋ฆฌ๋Š” ์™„์ „ํžˆ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ œ์–ด ๋…ธ๋“œ์—์„œ dNAT์™€ sNAT๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ ๋™ ์ฃผ์†Œ๊ฐ€ ์žˆ๋Š” ๋‹จ์ผ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ• ์ง€, ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ• ์ง€, ์•„๋‹ˆ๋ฉด ๋‘˜ ๋‹ค๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ• ์ง€๋Š” ํด๋ผ์šฐ๋“œ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋Š” ํ•ญ๋ชฉ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋‹ค์ด์–ด๊ทธ๋žจ์— ๋ถ€๋™ ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ด์ „์— ์ด๋ฏธ ์ถ”๊ฐ€๋œ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋Š” ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค. ๊ฐ ํด๋ผ์ด์–ธํŠธ์—๋Š” ์ž์ฒด ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ๋Š” ์™ธ๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ VLAN 200 ๋ฐ XNUMX์œผ๋กœ ํ‘œ์‹œ๋จ).

๊ฒฐ๊ณผ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์–ด๋Š ์ •๋„ ์œ ์—ฐ์„ฑ์€ ์žˆ์ง€๋งŒ ์•„์ง ๋‚ด๊ฒฐํ•จ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์—†๋Š” ํฅ๋ฏธ๋กญ๊ณ  ์‹ ์ค‘ํ•œ ์†”๋ฃจ์…˜์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

์ฒซ์งธ, ์ œ์–ด ๋…ธ๋“œ๋Š” ๋‹จ ํ•˜๋‚˜๋ฟ์ž…๋‹ˆ๋‹ค. ์ด ๋…ธ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ๋ชจ๋“  ์‹œ์Šคํ…œ์ด ๋ถ•๊ดด๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์ตœ์†Œํ•œ 3๊ฐœ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ์ฟผ๋Ÿผ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋‹ค์ด์–ด๊ทธ๋žจ์— ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

๋‹น์—ฐํžˆ ๋ชจ๋“  ๋…ธ๋“œ๋Š” ๋™๊ธฐํ™”๋˜๋ฉฐ ํ™œ์„ฑ ๋…ธ๋“œ๊ฐ€ ๋– ๋‚˜๋ฉด ๋‹ค๋ฅธ ๋…ธ๋“œ๊ฐ€ ๊ทธ ์ฑ…์ž„์„ ๋Œ€์‹ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ฌธ์ œ๋Š” ๊ฐ€์ƒ ๋จธ์‹  ๋””์Šคํฌ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ํ•˜์ดํผ๋ฐ”์ด์ € ์ž์ฒด์— ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ ํ•˜์ดํผ๋ฐ”์ด์ €์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์ „์ฒด ์„œ๋ฒ„๋ฅผ ์†์‹คํ•˜๋ฉด ์Šต๊ฒฉ์ด ์žˆ์–ด๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์ผ์ข…์˜ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ํ”„๋ŸฐํŠธ ์—”๋“œ ์—ญํ• ์„ ํ•  ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ข…๋ฅ˜์˜ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ๋ ์ง€๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ํŠน๋ณ„ํžˆ ์ค‘์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ๋””์Šคํฌ์™€ ๋…ธ๋“œ, ๊ทธ๋ฆฌ๊ณ  ์ „์ฒด ์บ๋น„๋‹›์˜ ์žฅ์• ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํŒŒ์ด๋ฒ„ ์ฑ„๋„์„ ์‚ฌ์šฉํ•˜๋Š” SAN ๋„คํŠธ์›Œํฌ๋„ ์žˆ์ง€๋งŒ ์†”์งํžˆ ๋งํ•ด์„œ FC๋Š” ์ด๋ฏธ ๊ณผ๊ฑฐ์˜ ์œ ๋ฌผ์ž…๋‹ˆ๋‹ค. ์ „์†ก ๋ถ„์•ผ์˜ E1๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์‚ฌ์šฉ๋˜์ง€๋งŒ ๊ทธ๊ฒƒ ์—†์ด๋Š” ์ ˆ๋Œ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์—๋งŒ. ๋”ฐ๋ผ์„œ ์ €๋Š” ๋” ํฅ๋ฏธ๋กœ์šด ๋‹ค๋ฅธ ๋Œ€์•ˆ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ธฐ ๋•Œ๋ฌธ์— 2020๋…„์—๋Š” FC ๋„คํŠธ์›Œํฌ๋ฅผ ์ž๋ฐœ์ ์œผ๋กœ ๊ตฌ์ถ•ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋น„๋ก ๊ฐ์ž์˜ ํ•œ๊ณ„๊ฐ€ ์žˆ์ง€๋งŒ FC๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•œ ์ „๋ถ€๋ผ๊ณ  ๋ฏฟ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋…ผ์Ÿํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ์€ ์ž์‹ ์˜ ์˜๊ฒฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ์ƒ๊ฐ์— ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ํ•ด๊ฒฐ์ฑ…์€ Ceph์™€ ๊ฐ™์€ SDS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Ceph๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒจ๋ฆฌํ‹ฐ ๊ฒ€์‚ฌ(raid 5 ๋˜๋Š” 6๊ณผ ์œ ์‚ฌ)๊ฐ€ ํฌํ•จ๋œ ์ฝ”๋“œ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ๋””์Šคํฌ ์œ„์น˜๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋‹ค๋ฅธ ๋””์Šคํฌ์— ๋Œ€ํ•œ ์ „์ฒด ๋ฐ์ดํ„ฐ ๋ณต์ œ๋กœ ๋๋‚˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฑ์—… ์˜ต์…˜์„ ๊ฐ–์ถ˜ ๊ณ ๊ฐ€์šฉ์„ฑ ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€ ์†”๋ฃจ์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„, ์บ๋น„๋‹›์˜ ์„œ๋ฒ„ ๋“ฑ

Ceph๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด 3๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ๋” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์€ ๋ธ”๋ก, ๊ฐ์ฒด ๋ฐ ํŒŒ์ผ ์Šคํ† ๋ฆฌ์ง€ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์Šคํ‚ค๋งˆ์— ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

์ฐธ๊ณ : ํ•˜์ดํผ์ปจ๋ฒ„์ง€๋“œ ์ปดํ“จํŒ… ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ceph ์Šคํ† ๋ฆฌ์ง€ ์ „์šฉ ๋…ธ๋“œ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ ๋…ธ๋“œ์— ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ(์˜ˆ: ์Šคํ† ๋ฆฌ์ง€+์ปดํ“จํŒ…)์„ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. SDS๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง€์ •ํ•œ ์˜ˆ์•ฝ ์ˆ˜์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ˆ์•ฝํ•˜๋ฏ€๋กœ ๋™์ผํ•œ ๋‚ด๊ฒฐํ•จ์„ฑ ์ฒด๊ณ„๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•˜์ดํผ์ปจ๋ฒ„์ง€๋“œ ๋…ธ๋“œ๋Š” ํ•ญ์ƒ ํƒ€ํ˜‘์ ์ž…๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๋…ธ๋“œ๋Š” ์–ธ๋œป ๋ณด๊ธฐ์— ๊ณต๊ธฐ๋ฅผ ๊ฐ€์—ดํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ(๊ฐ€์ƒ ๋จธ์‹ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—) SDS ์„œ๋น„์Šค์— CPU ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค(์‹ค์ œ๋กœ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค). ๋…ธ๋“œ, ๋””์Šคํฌ ๋“ฑ ์žฅ์•  ๋ฐœ์ƒ ํ›„ ๋ณต์ œ ๋ฐ ๋ณต๊ตฌ) ์ฆ‰, ์ปดํ“จํŒ… ๋…ธ๋“œ๋ฅผ ์Šคํ† ๋ฆฌ์ง€์™€ ๊ฒฐํ•ฉํ•˜๋ฉด ์ปดํ“จํŒ… ๋…ธ๋“œ์˜ ์„ฑ๋Šฅ์ด ์ผ๋ถ€ ์†์‹ค๋ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์€ ์–ด๋–ป๊ฒŒ๋“  ๊ด€๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋จธ์‹ , ๋„คํŠธ์›Œํฌ, ๊ฐ€์ƒ ๋ผ์šฐํ„ฐ ๋“ฑ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋Œ€์‹œ๋ณด๋“œ ์—ญํ• ์„ ํ•  ์ œ์–ด ๋…ธ๋“œ์— ์„œ๋น„์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” http/https๋ฅผ ํ†ตํ•ด ์ด ํฌํ„ธ์— ์—ฐ๊ฒฐํ•˜๊ณ  ํ•„์š”ํ•œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์Œ, ๊ฑฐ์˜).

๊ฒฐ๊ณผ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์ด์ œ ๋‚ด๊ฒฐํ•จ์„ฑ ์‹œ์Šคํ…œ์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ธํ”„๋ผ์˜ ๋ชจ๋“  ์š”์†Œ๋Š” ์–ด๋–ป๊ฒŒ๋“  ๊ด€๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Openstack์€ ๊ฐ๊ฐ ํŠน์ • ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ์ ํŠธ ์ง‘ํ•ฉ์ด๋ผ๊ณ  ์ด์ „์— ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ ๊ตฌ์„ฑํ•˜๊ณ  ์ œ์–ดํ•ด์•ผ ํ•  ์š”์†Œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ค‘์„ฑ์ž ์•„ํ‚คํ…์ฒ˜

OpenStack์—์„œ๋Š” ๊ฐ€์ƒ ๋จธ์‹  ํฌํŠธ๋ฅผ ๊ณตํ†ต L2 ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ L2 ๋„คํŠธ์›Œํฌ์— ์œ„์น˜ํ•œ VM ๊ฐ„์˜ ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ ๋ฌผ๋ก  ์™ธ๋ถ€ ๋ผ์šฐํŒ…์„ ๋ณด์žฅํ•˜๊ณ  NAT, Floating IP, DHCP ๋“ฑ๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด Neutron์ž…๋‹ˆ๋‹ค.

๋†’์€ ์ˆ˜์ค€์—์„œ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค(๊ธฐ๋ณธ ๋ถ€๋ถ„)์˜ ์ž‘๋™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

VM์„ ์‹œ์ž‘ํ•  ๋•Œ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ํŠน์ • VM(๋˜๋Š” ํฌํŠธ)์— ๋Œ€ํ•œ ํฌํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด์— ๋Œ€ํ•ด DHCP ์„œ๋น„์Šค์— ์•Œ๋ฆฝ๋‹ˆ๋‹ค.
  2. ์ƒˆ๋กœ์šด ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(libvirt๋ฅผ ํ†ตํ•ด).
  3. VM์€ 1๋‹จ๊ณ„์—์„œ ์ƒ์„ฑ๋œ ํฌํŠธ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ด์ƒํ•˜๊ฒŒ๋„ Neutron์˜ ์ž‘์—…์€ Linux๋ฅผ ์‚ฌ์šฉํ•ด ๋ณธ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์นœ์ˆ™ํ•œ ํ‘œ์ค€ ๋ฉ”์ปค๋‹ˆ์ฆ˜(๋„ค์ž„์ŠคํŽ˜์ด์Šค, iptables, Linux ๋ธŒ๋ฆฌ์ง€, openvswitch, conntrack ๋“ฑ)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

Neutron์ด SDN ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ์ฆ‰์‹œ ๋ช…ํ™•ํžˆ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์„ฑ์ž๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ƒํ˜ธ ์—ฐ๊ฒฐ๋œ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

OpenStack-์ค‘์„ฑ์ž-์„œ๋ฒ„ API๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์š”์ฒญ๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ๋ฐ๋ชฌ์ž…๋‹ˆ๋‹ค. ์ด ์•…๋งˆ๋Š” ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋“ฑ๋ก์— ๊ด€์—ฌํ•˜์ง€ ์•Š์ง€๋งŒ ์ด์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์ œ๊ณตํ•˜์—ฌ ์›ํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์š”์†Œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. OpenStack ๋…ธ๋“œ์˜ Neutron ์—์ด์ „ํŠธ๋Š” Neutron ์„œ๋ฒ„์— ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.

Neutron-server๋Š” ์‹ค์ œ๋กœ Python์œผ๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ, ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • REST ์„œ๋น„์Šค
  • Neutron ํ”Œ๋Ÿฌ๊ทธ์ธ(์ฝ”์–ด/์„œ๋น„์Šค)

REST ์„œ๋น„์Šค๋Š” ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ(์˜ˆ: ์ผ๋ถ€ ์ •๋ณด ์ œ๊ณต ์š”์ฒญ ๋“ฑ)๋กœ๋ถ€ํ„ฐ API ํ˜ธ์ถœ์„ ์ˆ˜์‹ ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์€ API ์š”์ฒญ ์ค‘์— ํ˜ธ์ถœ๋˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ/๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์„œ๋น„์Šค ์†์„ฑ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์„œ๋น„์Šค์™€ ๋ฃจํŠธ์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ Horse ํ”Œ๋Ÿฌ๊ทธ์ธ์€ VM ๊ฐ„์˜ ์ฃผ์†Œ ๊ณต๊ฐ„ ๋ฐ L2 ์—ฐ๊ฒฐ ๊ด€๋ฆฌ๋ฅผ ์ฃผ๋กœ ๋‹ด๋‹นํ•˜๋ฉฐ ์„œ๋น„์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด๋ฏธ VPN ๋˜๋Š” FW์™€ ๊ฐ™์€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ˜„์žฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—

์„œ๋น„์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ง ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ•˜๋‚˜๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜คํ”ˆ์Šคํƒ-์ค‘์„ฑ์ž-ml2 ํ‘œ์ค€ OpenStack ๋ฃจํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด์ „ ๋ฒ„์ „๊ณผ ๋‹ฌ๋ฆฌ ๋ชจ๋“ˆ์‹ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ€์ง€๋ฉฐ ์—ฐ๊ฒฐ๋œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž์ฒด๋Š” ์‹ค์ œ๋กœ OpenStack์ด ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„์—์„œ ๊ฐ–๋Š” ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์ž ์‹œ ํ›„์— ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž์ฒด๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฃจํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊ต์ฒด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด Contrail Networking์ด ์ด๋Ÿฌํ•œ ๊ต์ฒด๋ฅผ ์ˆ˜ํ–‰ํ•จ).

RPC ์„œ๋น„์Šค(rabbitmq-server) โ€” ๋Œ€๊ธฐ์—ด ๊ด€๋ฆฌ ๋ฐ ๋‹ค๋ฅธ OpenStack ์„œ๋น„์Šค์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์€ ๋ฌผ๋ก  ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค ์—์ด์ „ํŠธ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์—์ด์ „ํŠธ โ€” ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๊ฐ€ ๊ตฌ์„ฑ๋˜๋Š” ๊ฐ ๋…ธ๋“œ์— ์œ„์น˜ํ•œ ์—์ด์ „ํŠธ์ž…๋‹ˆ๋‹ค.

์—์ด์ „ํŠธ์—๋Š” ์—ฌ๋Ÿฌ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋Œ€๋ฆฌ์ธ์€ L2 ์—์ด์ „ํŠธ. ์ด๋Ÿฌํ•œ ์—์ด์ „ํŠธ๋Š” ์ œ์–ด ๋…ธ๋“œ(๋” ์ •ํ™•ํ•˜๊ฒŒ๋Š” ํ…Œ๋„ŒํŠธ์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ)๋ฅผ ํฌํ•จํ•œ ๊ฐ ํ•˜์ดํผ๋ฐ”์ด์ €์—์„œ ์‹คํ–‰๋˜๋ฉฐ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๊ณตํ†ต L2 ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•˜๊ณ  ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๊ฒฝ๊ณ ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค( ์˜ˆ๋ฅผ ๋“ค์–ด ํฌํŠธ๋ฅผ ๋น„ํ™œ์„ฑํ™”/ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ ๋œ ์ค‘์š”ํ•œ ์—์ด์ „ํŠธ๋Š” L3 ์—์ด์ „ํŠธ. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์—์ด์ „ํŠธ๋Š” ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ(์ข…์ข… ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ๊ฐ€ ์ œ์–ด ๋…ธ๋“œ์™€ ๊ฒฐํ•ฉ๋จ)์—์„œ๋งŒ ์‹คํ–‰๋˜๋ฉฐ ํ…Œ๋„ŒํŠธ ๋„คํŠธ์›Œํฌ ๊ฐ„(ํ•ด๋‹น ๋„คํŠธ์›Œํฌ์™€ ๋‹ค๋ฅธ ํ…Œ๋„ŒํŠธ์˜ ๋„คํŠธ์›Œํฌ ๊ฐ„ ๋ชจ๋‘, ์™ธ๋ถ€ ์„ธ๊ณ„์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š”) ๋ผ์šฐํŒ…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. NAT ๋ฐ DHCP ์„œ๋น„์Šค). ๊ทธ๋Ÿฌ๋‚˜ DVR(๋ถ„์‚ฐ ๋ผ์šฐํ„ฐ)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ปดํ“จํŒ… ๋…ธ๋“œ์—๋„ L3 ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ํ•„์š”์„ฑ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

L3 ์—์ด์ „ํŠธ๋Š” Linux ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ํ…Œ๋„ŒํŠธ์— ๊ฒฉ๋ฆฌ๋œ ์ž์ฒด ๋„คํŠธ์›Œํฌ ์ง‘ํ•ฉ๊ณผ ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ…ํ•˜๊ณ  ๋ ˆ์ด์–ด 2 ๋„คํŠธ์›Œํฌ์— ๊ฒŒ์ดํŠธ์›จ์ด ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์ƒ ๋ผ์šฐํ„ฐ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค โ€” ๋„คํŠธ์›Œํฌ, ์„œ๋ธŒ๋„ท, ํฌํŠธ, ํ’€ ๋“ฑ์˜ ์‹๋ณ„์ž ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

์‹ค์ œ๋กœ Neutron์€ ๋„คํŠธ์›Œํฌ ์—”ํ„ฐํ‹ฐ ์ƒ์„ฑ ์‹œ API ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜๊ณ  ์š”์ฒญ์„ ์ธ์ฆํ•˜๋ฉฐ RPC(์ผ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‚˜ ์—์ด์ „ํŠธ์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒฝ์šฐ) ๋˜๋Š” REST API(SDN์—์„œ ํ†ต์‹ ํ•˜๋Š” ๊ฒฝ์šฐ)๋ฅผ ํ†ตํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด ์—์ด์ „ํŠธ์— ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญํ•œ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ง€์นจ.

์ด์ œ ํ…Œ์ŠคํŠธ ์„ค์น˜(๋ฐฐํฌ ๋ฐฉ๋ฒ•๊ณผ ํฌํ•จ ๋‚ด์šฉ์€ ๋‚˜์ค‘์— ์‹ค์ œ ๋ถ€๋ถ„์—์„œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค)๋กœ ๋Œ์•„๊ฐ€์„œ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

(overcloud) [stack@undercloud ~]$ openstack network agent list  
+--------------------------------------+--------------------+-------------------------------------+-------------------+-------+-------+---------------------------+
| ID                                   | Agent Type         | Host                                | Availability Zone | Alive | State | Binary                    |
+--------------------------------------+--------------------+-------------------------------------+-------------------+-------+-------+---------------------------+
| 10495de9-ba4b-41fe-b30a-b90ec3f8728b | Open vSwitch agent | overcloud-novacompute-1.localdomain | None              | :-)   | UP    | neutron-openvswitch-agent |
| 1515ad4a-5972-46c3-af5f-e5446dff7ac7 | L3 agent           | overcloud-controller-0.localdomain  | nova              | :-)   | UP    | neutron-l3-agent          |
| 322e62ca-1e5a-479e-9a96-4f26d09abdd7 | DHCP agent         | overcloud-controller-0.localdomain  | nova              | :-)   | UP    | neutron-dhcp-agent        |
| 9c1de2f9-bac5-400e-998d-4360f04fc533 | Open vSwitch agent | overcloud-novacompute-0.localdomain | None              | :-)   | UP    | neutron-openvswitch-agent |
| d99c5657-851e-4d3c-bef6-f1e3bb1acfb0 | Open vSwitch agent | overcloud-controller-0.localdomain  | None              | :-)   | UP    | neutron-openvswitch-agent |
| ff85fae6-5543-45fb-a301-19c57b62d836 | Metadata agent     | overcloud-controller-0.localdomain  | None              | :-)   | UP    | neutron-metadata-agent    |
+--------------------------------------+--------------------+-------------------------------------+-------------------+-------+-------+---------------------------+
(overcloud) [stack@undercloud ~]$ 

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

์‹ค์ œ๋กœ ์ด๊ฒƒ์ด ๋‰ดํŠธ๋ก ์˜ ์ „์ฒด ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ด์ œ ML2 ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์‹œ๊ฐ„์„ ํˆฌ์žํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“ˆํ˜• ๋ ˆ์ด์–ด 2

์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ‘œ์ค€ OpenStack ๋ฃจํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋ฉฐ ๋ชจ๋“ˆ์‹ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ML2 ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ด์ „ ๋ฒ„์ „์€ ๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ์˜ ์„ค์น˜์—์„œ ์—ฌ๋Ÿฌ ๊ธฐ์ˆ ์„ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, openvswitch์™€ linuxbridge๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(์ฒซ ๋ฒˆ์งธ ๋˜๋Š” ๋‘ ๋ฒˆ์งธ). ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ํ•ด๋‹น ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ–์ถ˜ ML2 ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.

ML2์—๋Š” ๋‘ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ, ์ฆ‰ ์œ ํ˜• ๋“œ๋ผ์ด๋ฒ„์™€ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋“œ๋ผ์ด๋ฒ„๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ํ˜• ๋“œ๋ผ์ด๋ฒ„ VxLAN, VLAN, GRE ๋“ฑ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ๊ธฐ์ˆ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ๋“œ๋ผ์ด๋ฒ„๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€ ๊ธฐ์ˆ ์€ ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ ๋ฐ VLAN ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋ฅผ ์œ„ํ•œ VxLAN ์บก์Šํ™”์ž…๋‹ˆ๋‹ค.

์œ ํ˜• ๋“œ๋ผ์ด๋ฒ„์—๋Š” ๋‹ค์Œ ๋„คํŠธ์›Œํฌ ์œ ํ˜•์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

ํ‰๋ฉด - ํƒœ๊น… ์—†๋Š” ๋„คํŠธ์›Œํฌ
VLAN - ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ๋„คํŠธ์›Œํฌ
์ง€๋ฐฉ์˜ โ€” ์˜ฌ์ธ์› ์„ค์น˜๋ฅผ ์œ„ํ•œ ํŠน๋ณ„ํ•œ ์œ ํ˜•์˜ ๋„คํŠธ์›Œํฌ(์ด๋Ÿฌํ•œ ์„ค์น˜๋Š” ๊ฐœ๋ฐœ์ž๋‚˜ ๊ต์œก์„ ์œ„ํ•ด ํ•„์š”ํ•จ)
GRE โ€” GRE ํ„ฐ๋„์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ
VxLAN โ€” VxLAN ํ„ฐ๋„์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ

๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋“œ๋ผ์ด๋ฒ„ ์œ ํ˜• ๋“œ๋ผ์ด๋ฒ„์— ์ง€์ •๋œ ๊ธฐ์ˆ ์˜ ๊ตฌ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋„๊ตฌ(์˜ˆ: openvswitch, sr-iov, opendaylight, OVN ๋“ฑ)๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋“œ๋ผ์ด๋ฒ„์˜ ๊ตฌํ˜„์— ๋”ฐ๋ผ Neutron์ด ์ œ์–ดํ•˜๋Š” โ€‹โ€‹์—์ด์ „ํŠธ๊ฐ€ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜ L2 ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ, ๋ผ์šฐํŒ… ๋“ฑ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์™ธ๋ถ€ SDN ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ: ML2๋ฅผ OVS์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ OVS๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ ์ปดํ“จํŒ… ๋…ธ๋“œ์— L2 ์—์ด์ „ํŠธ๊ฐ€ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ˆ๋ฅผ ๋“ค์–ด OVN ๋˜๋Š” OpenDayLight๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ OVS์˜ ์ œ์–ด๋Š” ํ•ด๋‹น ๊ด€ํ• ๊ถŒ์— ์†ํ•ฉ๋‹ˆ๋‹ค. Neutron์€ ๋ฃจํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด ์ปจํŠธ๋กค๋Ÿฌ์— ๋ช…๋ น์„ ์ œ๊ณตํ•˜๊ณ  ์ด๋ฏธ ์ง€์‹œ๋œ ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Open vSwitch์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ OpenStack์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋Š” Open vSwitch์ž…๋‹ˆ๋‹ค.
Juniper Contrail ๋˜๋Š” Nokia Nuage์™€ ๊ฐ™์€ ์ถ”๊ฐ€ ๊ณต๊ธ‰์—…์ฒด SDN ์—†์ด OpenStack์„ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ OVS๋Š” ํด๋ผ์šฐ๋“œ ๋„คํŠธ์›Œํฌ์˜ ์ฃผ์š” ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ ์š”์†Œ์ด๋ฉฐ iptables, conntrack, ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ํ•จ๊ป˜ ๋ณธ๊ฒฉ์ ์ธ ๋ฉ€ํ‹ฐ ํ…Œ๋„Œ์‹œ ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ ์ด ๊ตฌ์„ฑ ์š”์†Œ๋Š” ํƒ€์‚ฌ ๋…์ (๊ณต๊ธ‰์—…์ฒด) SDN ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ต์ฒด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OVS๋Š” ๊ฐ€์ƒํ™”๋œ ํ™˜๊ฒฝ์—์„œ ๊ฐ€์ƒ ํŠธ๋ž˜ํ”ฝ ์ „๋‹ฌ์ž๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋œ ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด ์Šค์œ„์น˜์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ OVS๋Š” QoS, LACP, VLAN, VxLAN, GENEVE, OpenFlow, DPDK ๋“ฑ๊ณผ ๊ฐ™์€ ๊ธฐ์ˆ ์„ ํฌํ•จํ•˜๋Š” ๋งค์šฐ ์ ์ ˆํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : OVS๋Š” ์ฒ˜์Œ์—๋Š” ๋ถ€ํ•˜๊ฐ€ ๋†’์€ ํ†ต์‹  ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ์†Œํ”„ํŠธ ์Šค์œ„์น˜๋กœ ์ƒ๊ฐ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์›น ์„œ๋ฒ„๋‚˜ ๋ฉ”์ผ ์„œ๋ฒ„์™€ ๊ฐ™์ด ๋Œ€์—ญํญ์„ ๋œ ์š”๊ตฌํ•˜๋Š” IT ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ OVS๋Š” ์ถ”๊ฐ€๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์œผ๋ฉฐ ํ˜„์žฌ OVS ๊ตฌํ˜„์„ ํ†ตํ•ด ์„ฑ๋Šฅ๊ณผ ๊ธฐ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์–ด ๊ธฐ๋Šฅ์ด ๋งŽ์ด ๋กœ๋“œ๋œ ํ†ต์‹  ์‚ฌ์—…์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด DPDK ๊ฐ€์†์„ ์ง€์›ํ•˜๋Š” OVS ๊ตฌํ˜„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ์•„์•ผ ํ•  OVS์˜ ์„ธ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ปค๋„ ๋ชจ๋“ˆ โ€” ์ œ์–ด ์š”์†Œ๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ๋œ ๊ทœ์น™์— ๋”ฐ๋ผ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปค๋„ ๊ณต๊ฐ„์— ์œ„์น˜ํ•œ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.
  • v์Šค์œ„์น˜ ๋ฐ๋ชฌ(ovs-vswitchd)์€ ์ปค๋„ ๋ชจ๋“ˆ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋‹ด๋‹นํ•˜๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์Šค์œ„์น˜ ์ž‘๋™ ๋…ผ๋ฆฌ๋ฅผ ์ง์ ‘์ ์œผ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„ - ๊ตฌ์„ฑ์ด ์ €์žฅ๋˜๋Š” OVS๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฐ ํ˜ธ์ŠคํŠธ์— ์žˆ๋Š” ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. SDN ์ปจํŠธ๋กค๋Ÿฌ๋Š” OVSDB ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ชจ๋“ˆ์„ ํ†ตํ•ด ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ธฐ๋Šฅ์—๋Š” ovs-vsctl, ovs-appctl, ovs-ofctl ๋“ฑ๊ณผ ๊ฐ™์€ ์ผ๋ จ์˜ ์ง„๋‹จ ๋ฐ ๊ด€๋ฆฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ Openstack์€ EPC, SBC, HLR ๋“ฑ๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ์„ Openstack์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด ํ†ต์‹  ์‚ฌ์—…์ž๊ฐ€ ๋„๋ฆฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ธฐ๋Šฅ์€ ๊ทธ๋Œ€๋กœ OVS์— ๋ฌธ์ œ ์—†์ด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์˜ˆ๋ฅผ ๋“ค์–ด EPC๋Š” ๊ฐ€์ž…์ž ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•œ ๋‹ค์Œ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ์—„์ฒญ๋‚œ ์–‘์˜ ํŠธ๋ž˜ํ”ฝ(ํ˜„์žฌ ํŠธ๋ž˜ํ”ฝ ์–‘์€ ์ดˆ๋‹น ์ˆ˜๋ฐฑ ๊ธฐ๊ฐ€๋น„ํŠธ์— ๋‹ฌํ•จ) ๋‹น์—ฐํžˆ ์ปค๋„ ๊ณต๊ฐ„์„ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ํŠธ๋ž˜ํ”ฝ์„ ์œ ๋„ํ•˜๋Š” ๊ฒƒ์€(ํฌ์›Œ๋”๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปค๋„ ๊ณต๊ฐ„์— ์œ„์น˜ํ•˜๋ฏ€๋กœ) ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ OVS๋Š” ์ปค๋„์„ ์šฐํšŒํ•˜์—ฌ NIC์—์„œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด DPDK ๊ฐ€์† ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์— ์™„์ „ํžˆ ๋ฐฐํฌ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : ํ†ต์‹  ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ๋ฐฐํฌ๋œ ํด๋ผ์šฐ๋“œ์˜ ๊ฒฝ์šฐ OVS๋ฅผ ์šฐํšŒํ•˜๋Š” ์ปดํ“จํŒ… ๋…ธ๋“œ์—์„œ ์ง์ ‘ ์Šค์œ„์นญ ์žฅ๋น„๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SR-IOV ๋ฐ ํŒจ์Šค์Šค๋ฃจ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ด ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ๋ ˆ์ด์•„์›ƒ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

์ž, ์ด์ œ ์‹ค์šฉ์ ์ธ ๋ถ€๋ถ„์œผ๋กœ ๋„˜์–ด๊ฐ€์„œ ๊ทธ๊ฒƒ์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ๊ฐ„๋‹จํ•œ OpenStack ์„ค์น˜๋ฅผ ๋ฐฐํฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹คํ—˜์„ ์œ„ํ•œ ์„œ๋ฒ„ ์„ธํŠธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ํ•˜๋‚˜์˜ ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„์— ํ”„๋กœํ† ํƒ€์ž…์„ ์กฐ๋ฆฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๋‹น์—ฐํžˆ ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์€ ์ƒ์—…์  ๋ชฉ์ ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์ง€๋งŒ Openstack์—์„œ ๋„คํŠธ์›Œํฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์˜ˆ๋ฅผ ๋ณด๋ ค๋ฉด ์ด๋Ÿฌํ•œ ์„ค์น˜๋งŒ์œผ๋กœ ๋ˆˆ์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋Ÿฌํ•œ ์„ค์น˜๋Š” ๊ตํ†ต ์ƒํ™ฉ ๋“ฑ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ต์œก ๋ชฉ์ ์œผ๋กœ ํ›จ์”ฌ ๋” ํฅ๋ฏธ ๋กญ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์ธ ๋ถ€๋ถ„๋งŒ ๋ณด๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  ๋‘ ๊ฐœ์˜ ๋„คํŠธ์›Œํฌ๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์„ ํ‚ค์šฐ๊ณ , ์ด ๋ ˆ์ด์•„์›ƒ์˜ ๋‘ ๋ฒˆ์งธ ๋„คํŠธ์›Œํฌ๋Š” ์–ธ๋”ํด๋ผ์šฐ๋“œ ๋ฐ DNS ์„œ๋ฒ„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค์—๋งŒ ๋…์ ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค๋ฃจ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ณ„๋„์˜ ๋Œ€๊ทœ๋ชจ ๊ธฐ์‚ฌ์— ๋Œ€ํ•œ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์ˆœ์„œ๋Œ€๋กœ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ์•ฝ๊ฐ„์˜ ์ด๋ก ์ž…๋‹ˆ๋‹ค. TripleO(Openstack on Openstack)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Openstack์„ ์„ค์น˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. TripleO์˜ ํ•ต์‹ฌ์€ ์–ธ๋”ํด๋ผ์šฐ๋“œ๋ผ๊ณ  ํ•˜๋Š” OpenStack ์˜ฌ์ธ์›(์ฆ‰, ํ•˜๋‚˜์˜ ๋…ธ๋“œ์—)์„ ์„ค์น˜ํ•œ ๋‹ค์Œ ๋ฐฐํฌ๋œ Openstack์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฒ„ํด๋ผ์šฐ๋“œ๋ผ๊ณ  ํ•˜๋Š” ์šด์˜์šฉ Openstack์„ ์„ค์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ธ๋”ํด๋ผ์šฐ๋“œ๋Š” ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„(๋ฒ ์–ด๋ฉ”ํƒˆ)(Ironic ํ”„๋กœ์ ํŠธ)๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํ“จํŒ…, ์ œ์–ด, ์Šคํ† ๋ฆฌ์ง€ ๋…ธ๋“œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์šฐ๋ฆฌ๋Š” Openstack์„ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด ํƒ€์‚ฌ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Openstack์„ ์‚ฌ์šฉํ•˜์—ฌ Openstack์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜๊ฐ€ ์ง„ํ–‰๋ ์ˆ˜๋ก ๋”์šฑ ๋ช…ํ™•ํ•ด์งˆ ๊ฒƒ์ด๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ๋‹จ์ˆœํ™”๋ฅผ ์œ„ํ•ด ๋‚ด๋ถ€ OpenStack ๋„คํŠธ์›Œํฌ์— ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ชจ๋“  ๊ฒƒ์ด ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ ์—ฌ๋ถ€๋Š” ์†”๋ฃจ์…˜์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๊ฒฉ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์™€ ์ •ํ™•ํžˆ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ ํŠธ๋ž˜ํ”ฝ์€ ๋™์ผํ•œ ๋„คํŠธ์›Œํฌ์—์„œ ํ๋ฆ…๋‹ˆ๋‹ค. ์ƒ์—…์šฉ ์„ค์น˜์˜ ๊ฒฝ์šฐ ๋‹น์—ฐํžˆ ๋‹ค๋ฅธ VLAN๊ณผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฉ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ceph ์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ฆฌ ํŠธ๋ž˜ํ”ฝ๊ณผ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ ์ž์ฒด(๋””์Šคํฌ์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ ์•ก์„ธ์Šค ๋“ฑ)๋Š” ๊ฒฉ๋ฆฌ๋œ ๊ฒฝ์šฐ ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ธŒ๋„ท(์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ฆฌ ๋ฐ ์Šคํ† ๋ฆฌ์ง€)์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ์ด ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„ํ• ํ•˜์—ฌ ์†”๋ฃจ์…˜์˜ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋”์šฑ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. , ์„œ๋กœ ๋‹ค๋ฅธ ํฌํŠธ๋ฅผ ํ†ตํ•ด ๋˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ QoS ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ์ด ์‹ ํ˜ธ ํŠธ๋ž˜ํ”ฝ์„ ์••๋ฐ•ํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๊ทธ๋“ค์€ ๋™์ผํ•œ ๋„คํŠธ์›Œํฌ์— ์ ‘์†ํ•  ๊ฒƒ์ด๋ฉฐ ์‹ค์ œ๋กœ ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๋ฅผ ์–ด๋–ค ์‹์œผ๋กœ๋“  ์ œํ•œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : ๊ฐ€์ƒ ๋จธ์‹ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‹คํ–‰ํ•  ์˜ˆ์ •์ด๋ฏ€๋กœ ๋จผ์ € ์ค‘์ฒฉ๋œ ๊ฐ€์ƒํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ค‘์ฒฉ๋œ ๊ฐ€์ƒํ™”๊ฐ€ ํ™œ์„ฑํ™”๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


[root@hp-gen9 bormoglotx]# cat /sys/module/kvm_intel/parameters/nested
N
[root@hp-gen9 bormoglotx]# 

๋ฌธ์ž N์ด ๋ณด์ด๋ฉด ๋„คํŠธ์›Œํฌ์—์„œ ์ฐพ์€ ๊ฐ€์ด๋“œ์— ๋”ฐ๋ผ ์ค‘์ฒฉ๋œ ๊ฐ€์ƒํ™”์— ๋Œ€ํ•œ ์ง€์›์„ ํ™œ์„ฑํ™”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฌํ•œ .

๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ๋‹ค์Œ ํšŒ๋กœ๋ฅผ ์กฐ๋ฆฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

์ œ ๊ฒฝ์šฐ์—๋Š” ํ–ฅํ›„ ์„ค์น˜์— ํฌํ•จ๋  ๊ฐ€์ƒ ๋จธ์‹ ์„ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด(๊ทธ ์ค‘ 7๊ฐœ๊ฐ€ ์žˆ์ง€๋งŒ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ง€ ์•Š์œผ๋ฉด 4๊ฐœ๋กœ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค) OpenvSwitch๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ovs ๋ธŒ๋ฆฌ์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ํฌํŠธ ๊ทธ๋ฃน์„ ํ†ตํ•ด ๊ฐ€์ƒ ๋จธ์‹ ์„ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ xml ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.


[root@hp-gen9 ~]# virsh net-dumpxml ovs-network-1        
<network>
  <name>ovs-network-1</name>
  <uuid>7a2e7de7-fc16-4e00-b1ed-4d190133af67</uuid>
  <forward mode='bridge'/>
  <bridge name='ovs-br1'/>
  <virtualport type='openvswitch'/>
  <portgroup name='trunk-1'>
    <vlan trunk='yes'>
      <tag id='100'/>
      <tag id='101'/>
      <tag id='102'/>
    </vlan>
  </portgroup>
  <portgroup name='access-100'>
    <vlan>
      <tag id='100'/>
    </vlan>
  </portgroup>
  <portgroup name='access-101'>
    <vlan>
      <tag id='101'/>
    </vlan>
  </portgroup>
</network>

์—ฌ๊ธฐ์—๋Š” ๋‘ ๊ฐœ์˜ ์•ก์„ธ์Šค์™€ ํ•˜๋‚˜์˜ ํŠธ๋ ํฌ ๋“ฑ ์„ธ ๊ฐœ์˜ ํฌํŠธ ๊ทธ๋ฃน์ด ์„ ์–ธ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(ํ›„์ž๋Š” DNS ์„œ๋ฒ„์— ํ•„์š”ํ–ˆ์ง€๋งŒ ์ด ๊ทธ๋ฃน ์—†์ด ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜ ์ค‘ ๋” ํŽธ๋ฆฌํ•œ ์ชฝ). ๋‹ค์Œ์œผ๋กœ ์ด ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ virsh net-define์„ ํ†ตํ•ด ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.


virsh net-define ovs-network-1.xml 
virsh net-start ovs-network-1 
virsh net-autostart ovs-network-1 

์ด์ œ ํ•˜์ดํผ๋ฐ”์ด์ € ํฌํŠธ ๊ตฌ์„ฑ์„ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.


[root@hp-gen9 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens1f0   
TYPE=Ethernet
NAME=ens1f0
DEVICE=ens1f0
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=ovs-br1
ONBOOT=yes
OVS_OPTIONS="trunk=100,101,102"
[root@hp-gen9 ~]
[root@hp-gen9 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ovs-br1 
DEVICE=ovs-br1
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.255.200
PREFIX=24
[root@hp-gen9 ~]# 

์ฐธ๊ณ : ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” VLAN ํƒœ๊ทธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํฌํŠธ ovs-br1์˜ ์ฃผ์†Œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด sudo ovs-vsctl set port ovs-br1 tag=100 ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์žฌ๋ถ€ํŒ… ํ›„์—๋Š” ์ด ํƒœ๊ทธ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. (๋ˆ„๊ตฐ๊ฐ€ ์ด ํƒœ๊ทธ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ๊ณ„์‹œ๋‹ค๋ฉด ๋งค์šฐ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.) ํ•˜์ง€๋งŒ ์ด ์ฃผ์†Œ๋Š” ์„ค์น˜ ์ค‘์—๋งŒ ํ•„์š”ํ•˜๊ณ  Openstack์ด ์™„์ „ํžˆ ๋ฐฐํฌ๋œ ํ›„์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ ์–ธ๋”ํด๋ผ์šฐ๋“œ ๋จธ์‹ ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.


virt-install  -n undercloud --description "undercloud"  --os-type=Linux  --os-variant=centos7.0  --ram=8192  --vcpus=8  --disk path=/var/lib/libvirt/images/undercloud.qcow2,bus=virtio,size=40,format=qcow2 --network network:ovs-network-1,model=virtio,portgroup=access-100 --network network:ovs-network-1,model=virtio,portgroup=access-101 --graphics none  --location /var/lib/libvirt/boot/CentOS-7-x86_64-Minimal-2003.iso --extra-args console=ttyS0

์„ค์น˜ํ•˜๋Š” ๋™์•ˆ ์ปดํ“จํ„ฐ ์ด๋ฆ„, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์‚ฌ์šฉ์ž, ntp ์„œ๋ฒ„ ๋“ฑ๊ณผ ๊ฐ™์€ ํ•„์š”ํ•œ ๋ชจ๋“  ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ฆ‰์‹œ ํฌํŠธ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ์„ค์น˜ ํ›„ ๋‹ค์Œ์„ ํ†ตํ•ด ์ปดํ“จํ„ฐ์— ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ฝ˜์†”์„ ์—ด๊ณ  ํ•„์š”ํ•œ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์„ธ์š”. ๊ธฐ์„ฑ ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ œ๊ฐ€ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ตœ์†Œ Centos 7 ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ VM์„ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜๋˜๋ฉด ์–ธ๋”ํด๋ผ์šฐ๋“œ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


[root@hp-gen9 bormoglotx]# virsh list
 Id    Name                           State
----------------------------------------------------
 6     dns-server                     running
 62    undercloud                     running

๋จผ์ € ์„ค์น˜ ํ”„๋กœ์„ธ์Šค์— ํ•„์š”ํ•œ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo yum update -y
sudo yum install -y net-tools
sudo yum install -y wget
sudo yum install -y ipmitool

์–ธ๋”ํด๋ผ์šฐ๋“œ ์„ค์น˜

์Šคํƒ ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•œ ํ›„ sudoer์— ์ถ”๊ฐ€ํ•˜๊ณ  ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ ๋„ sudo๋ฅผ ํ†ตํ•ด ๋ฃจํŠธ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


useradd stack
passwd stack

echo โ€œstack ALL=(root) NOPASSWD:ALLโ€ > /etc/sudoers.d/stack
chmod 0440 /etc/sudoers.d/stack

์ด์ œ ํ˜ธ์ŠคํŠธ ํŒŒ์ผ์— ์ „์ฒด ์–ธ๋”ํด๋ผ์šฐ๋“œ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.


vi /etc/hosts

127.0.0.1   undercloud.openstack.rnd localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

๋‹ค์Œ์œผ๋กœ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ํ•„์š”ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.


sudo yum install -y https://trunk.rdoproject.org/centos7/current/python2-tripleo-repos-0.0.1-0.20200409224957.8bac392.el7.noarch.rpm
sudo -E tripleo-repos -b queens current
sudo -E tripleo-repos -b queens current ceph
sudo yum install -y python-tripleoclient
sudo yum install -y ceph-ansible

์ฐธ๊ณ : ceph๋ฅผ ์„ค์น˜ํ•  ๊ณ„ํš์ด ์—†๋‹ค๋ฉด ceph ๊ด€๋ จ ๋ช…๋ น์„ ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ €๋Š” Queens ๋ฆด๋ฆฌ์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์›ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฆด๋ฆฌ์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์–ธ๋”ํด๋ผ์šฐ๋“œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ ์Šคํƒ์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.


cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf

์ด์ œ ์ด ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์—ฌ ์„ค์น˜์— ๋งž๊ฒŒ ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ์‹œ์ž‘ ๋ถ€๋ถ„์— ๋‹ค์Œ ์ค„์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

vi undercloud.conf
[DEFAULT]
undercloud_hostname = undercloud.openstack.rnd
local_ip = 192.168.255.1/24
network_gateway = 192.168.255.1
undercloud_public_host = 192.168.255.2
undercloud_admin_host = 192.168.255.3
undercloud_nameservers = 192.168.255.253
generate_service_certificate = false
local_interface = eth0
local_mtu = 1450
network_cidr = 192.168.255.0/24
masquerade = true
masquerade_network = 192.168.255.0/24
dhcp_start = 192.168.255.11
dhcp_end = 192.168.255.50
inspection_iprange = 192.168.255.51,192.168.255.100
scheduler_max_attempts = 10

์ด์ œ ์„ค์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

undercloud_hostname โ€” ์–ธ๋”ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„์˜ ์ „์ฒด ์ด๋ฆ„์€ DNS ์„œ๋ฒ„์˜ ํ•ญ๋ชฉ๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

local_ip โ€” ๋„คํŠธ์›Œํฌ ํ”„๋กœ๋น„์ €๋‹์„ ์œ„ํ•œ ๋กœ์ปฌ ์–ธ๋”ํด๋ผ์šฐ๋“œ ์ฃผ์†Œ

๋„คํŠธ์›Œํฌ_๊ฒŒ์ดํŠธ์›จ์ด โ€” ์˜ค๋ฒ„ํด๋ผ์šฐ๋“œ ๋…ธ๋“œ ์„ค์น˜ ์ค‘ ์™ธ๋ถ€ ์„ธ๊ณ„์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•œ ๊ฒŒ์ดํŠธ์›จ์ด ์—ญํ• ์„ ํ•˜๋Š” ๋™์ผํ•œ ๋กœ์ปฌ ์ฃผ์†Œ๋„ ๋กœ์ปฌ IP์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

undercloud_public_host โ€” ์™ธ๋ถ€ API ์ฃผ์†Œ, ํ”„๋กœ๋น„์ €๋‹ ๋„คํŠธ์›Œํฌ์˜ ๋ฌด๋ฃŒ ์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

undercloud_admin_host ๋‚ด๋ถ€ API ์ฃผ์†Œ, ํ”„๋กœ๋น„์ €๋‹ ๋„คํŠธ์›Œํฌ์˜ ๋ฌด๋ฃŒ ์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

undercloud_nameservers - DNS ์„œ๋ฒ„

generate_service_certificate - ์ด ์ค„์€ ํ˜„์žฌ ์˜ˆ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. false๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์„ค์น˜ ์ค‘์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ๋ฌธ์ œ๋Š” Red Hat ๋ฒ„๊ทธ ์ถ”์ ๊ธฐ์— ์„ค๋ช…๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

local_interface ๋„คํŠธ์›Œํฌ ํ”„๋กœ๋น„์ €๋‹์˜ ์ธํ„ฐํŽ˜์ด์Šค. ์ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์–ธ๋”ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ ์ค‘์— ์žฌ๊ตฌ์„ฑ๋˜๋ฏ€๋กœ ์–ธ๋”ํด๋ผ์šฐ๋“œ์— ๋‘ ๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์•ก์„ธ์Šค์šฉ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ํ”„๋กœ๋น„์ €๋‹์šฉ์ž…๋‹ˆ๋‹ค.

local_mtu โ€” MTU. ํ…Œ์ŠคํŠธ ์—ฐ๊ตฌ์†Œ๊ฐ€ ์žˆ๊ณ  OVS ์Šค์œ„์น˜ ํฌํŠธ์˜ MTU๊ฐ€ 1500์ด๋ฏ€๋กœ VxLAN์— ์บก์Šํ™”๋œ ํŒจํ‚ท์ด ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฅผ 1450์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

network_cidr โ€” ๋„คํŠธ์›Œํฌ ํ”„๋กœ๋น„์ €๋‹

๊ฐ€์žฅ ๋ฌด๋„ํšŒ โ€” NAT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์— ์•ก์„ธ์Šค

๊ฐ€์žฅ ๋ฌด๋„ํšŒ_๋„คํŠธ์›Œํฌ - NAT๊ฐ€ ์ ์šฉ๋  ๋„คํŠธ์›Œํฌ

dhcp_start โ€” ์˜ค๋ฒ„ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ ์ค‘ ๋…ธ๋“œ์— ์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋  ์ฃผ์†Œ ํ’€์˜ ์‹œ์ž‘ ์ฃผ์†Œ

dhcp_end โ€” ์˜ค๋ฒ„ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ ์ค‘ ๋…ธ๋“œ์— ์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋  ์ฃผ์†Œ ํ’€์˜ ์ตœ์ข… ์ฃผ์†Œ

๊ฒ€์‚ฌ_iprange โ€” ๋‚ด๋ถ€ ์กฐ์‚ฌ์— ํ•„์š”ํ•œ ์ฃผ์†Œ ํ’€(์œ„ ํ’€๊ณผ ์ค‘๋ณต๋˜์–ด์„œ๋Š” ์•ˆ ๋จ)

Scheduler_max_attempts โ€” ์˜ค๋ฒ„ํด๋ผ์šฐ๋“œ ์„ค์น˜๋ฅผ ์œ„ํ•œ ์ตœ๋Œ€ ์‹œ๋„ ํšŸ์ˆ˜(๋…ธ๋“œ ์ˆ˜๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผ ํ•จ)

ํŒŒ์ผ์„ ์„ค๋ช…ํ•œ ํ›„ ์–ธ๋”ํด๋ผ์šฐ๋“œ๋ฅผ ๋ฐฐํฌํ•˜๋ผ๋Š” ๋ช…๋ น์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


openstack undercloud install

๋‹ค๋ฆฌ๋ฏธ์— ๋”ฐ๋ผ ์ ˆ์ฐจ๋Š” 10~30๋ถ„ ์ •๋„ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

vi undercloud.conf
2020-08-13 23:13:12,668 INFO: 
#############################################################################
Undercloud install complete.

The file containing this installation's passwords is at
/home/stack/undercloud-passwords.conf.

There is also a stackrc file at /home/stack/stackrc.

These files are needed to interact with the OpenStack services, and should be
secured.

#############################################################################

์ด ์ถœ๋ ฅ์€ ์–ธ๋”ํด๋ผ์šฐ๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด์ œ ์–ธ๋”ํด๋ผ์šฐ๋“œ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ณ  ์˜ค๋ฒ„ํด๋ผ์šฐ๋“œ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ifconfig ์ถœ๋ ฅ์„ ๋ณด๋ฉด ์ƒˆ๋กœ์šด ๋ธŒ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋‚˜ํƒ€๋‚œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[stack@undercloud ~]$ ifconfig
br-ctlplane: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 192.168.255.1  netmask 255.255.255.0  broadcast 192.168.255.255
        inet6 fe80::5054:ff:fe2c:89e  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:2c:08:9e  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1095 (1.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 20  bytes 1292 (1.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

์ด์ œ ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์˜ค๋ฒ„ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์ถœ๋ ฅ์—์„œ โ€‹โ€‹ํ•˜๋‚˜์˜ ๋…ธ๋“œ์— ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(undercloud) [stack@undercloud ~]$ openstack host list
+--------------------------+-----------+----------+
| Host Name                | Service   | Zone     |
+--------------------------+-----------+----------+
| undercloud.openstack.rnd | conductor | internal |
| undercloud.openstack.rnd | scheduler | internal |
| undercloud.openstack.rnd | compute   | nova     |
+--------------------------+-----------+----------+

์–ธ๋”ํด๋ผ์šฐ๋“œ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„์˜ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.


(undercloud) [stack@undercloud ~]$ python -m json.tool /etc/os-net-config/config.json 
{
    "network_config": [
        {
            "addresses": [
                {
                    "ip_netmask": "192.168.255.1/24"
                }
            ],
            "members": [
                {
                    "dns_servers": [
                        "192.168.255.253"
                    ],
                    "mtu": 1450,
                    "name": "eth0",
                    "primary": "true",
                    "type": "interface"
                }
            ],
            "mtu": 1450,
            "name": "br-ctlplane",
            "ovs_extra": [
                "br-set-external-id br-ctlplane bridge-id br-ctlplane"
            ],
            "routes": [],
            "type": "ovs_bridge"
        }
    ]
}
(undercloud) [stack@undercloud ~]$

์˜ค๋ฒ„ํด๋ผ์šฐ๋“œ ์„ค์น˜

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

๊ฐ€์ƒ ๋จธ์‹ ์˜ ๋””์Šคํฌ๊ฐ€ ์žˆ๋Š” ํด๋”๋กœ ์ด๋™ํ•˜์—ฌ ํ•„์š”ํ•œ ํฌ๊ธฐ์˜ ๋””์Šคํฌ๋ฅผ ์ƒ์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -o preallocation=metadata control-1.qcow2 60G
qemu-img create -f qcow2 -o preallocation=metadata compute-1.qcow2 60G
qemu-img create -f qcow2 -o preallocation=metadata compute-2.qcow2 60G
qemu-img create -f qcow2 -o preallocation=metadata storage-1.qcow2 160G
qemu-img create -f qcow2 -o preallocation=metadata storage-2.qcow2 160G

์šฐ๋ฆฌ๋Š” ๋ฃจํŠธ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๊ถŒํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ด๋Ÿฌํ•œ ๋””์Šคํฌ์˜ ์†Œ์œ ์ž๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


[root@hp-gen9 images]# ls -lh
total 5.8G
drwxr-xr-x. 2 qemu qemu 4.0K Aug 13 16:15 backups
-rw-r--r--. 1 root root  61G Aug 14 03:07 compute-1.qcow2
-rw-r--r--. 1 root root  61G Aug 14 03:07 compute-2.qcow2
-rw-r--r--. 1 root root  61G Aug 14 03:07 control-1.qcow2
-rw-------. 1 qemu qemu  41G Aug 14 03:03 dns-server.qcow2
-rw-r--r--. 1 root root 161G Aug 14 03:07 storage-1.qcow2
-rw-r--r--. 1 root root 161G Aug 14 03:07 storage-2.qcow2
-rw-------. 1 qemu qemu  41G Aug 14 03:07 undercloud.qcow2
[root@hp-gen9 images]# 
[root@hp-gen9 images]# 
[root@hp-gen9 images]# chown qemu:qemu /var/lib/libvirt/images/*qcow2
[root@hp-gen9 images]# ls -lh
total 5.8G
drwxr-xr-x. 2 qemu qemu 4.0K Aug 13 16:15 backups
-rw-r--r--. 1 qemu qemu  61G Aug 14 03:07 compute-1.qcow2
-rw-r--r--. 1 qemu qemu  61G Aug 14 03:07 compute-2.qcow2
-rw-r--r--. 1 qemu qemu  61G Aug 14 03:07 control-1.qcow2
-rw-------. 1 qemu qemu  41G Aug 14 03:03 dns-server.qcow2
-rw-r--r--. 1 qemu qemu 161G Aug 14 03:07 storage-1.qcow2
-rw-r--r--. 1 qemu qemu 161G Aug 14 03:07 storage-2.qcow2
-rw-------. 1 qemu qemu  41G Aug 14 03:08 undercloud.qcow2
[root@hp-gen9 images]# 

์ฐธ๊ณ : ์—ฐ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ceph๋ฅผ ์„ค์น˜ํ•  ๊ณ„ํš์ด ์—†๋‹ค๋ฉด ๋ช…๋ น์€ ์ตœ์†Œ 3๊ฐœ์˜ ๋””์Šคํฌ๊ฐ€ ํฌํ•จ๋œ ์ตœ์†Œ XNUMX๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์ง€๋งŒ ํ…œํ”Œ๋ฆฟ์—๋Š” ๊ฐ€์ƒ ๋””์Šคํฌ vda, vdb ๋“ฑ์ด ์‚ฌ์šฉ๋  ๊ฒƒ์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ข‹์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค์Œ ๋จธ์‹ ์„ ๋ชจ๋‘ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


virt-install --name control-1 --ram 32768 --vcpus 8 --os-variant centos7.0 --disk path=/var/lib/libvirt/images/control-1.qcow2,device=disk,bus=virtio,format=qcow2 --noautoconsole --vnc  --network network:ovs-network-1,model=virtio,portgroup=access-100 --network network:ovs-network-1,model=virtio,portgroup=trunk-1 --dry-run --print-xml > /tmp/control-1.xml  

virt-install --name storage-1 --ram 16384 --vcpus 4 --os-variant centos7.0 --disk path=/var/lib/libvirt/images/storage-1.qcow2,device=disk,bus=virtio,format=qcow2 --noautoconsole --vnc  --network network:ovs-network-1,model=virtio,portgroup=access-100 --dry-run --print-xml > /tmp/storage-1.xml  

virt-install --name storage-2 --ram 16384 --vcpus 4 --os-variant centos7.0 --disk path=/var/lib/libvirt/images/storage-2.qcow2,device=disk,bus=virtio,format=qcow2 --noautoconsole --vnc  --network network:ovs-network-1,model=virtio,portgroup=access-100 --dry-run --print-xml > /tmp/storage-2.xml  

virt-install --name compute-1 --ram 32768 --vcpus 12 --os-variant centos7.0 --disk path=/var/lib/libvirt/images/compute-1.qcow2,device=disk,bus=virtio,format=qcow2 --noautoconsole --vnc  --network network:ovs-network-1,model=virtio,portgroup=access-100 --dry-run --print-xml > /tmp/compute-1.xml  

virt-install --name compute-2 --ram 32768 --vcpus 12 --os-variant centos7.0 --disk path=/var/lib/libvirt/images/compute-2.qcow2,device=disk,bus=virtio,format=qcow2 --noautoconsole --vnc  --network network:ovs-network-1,model=virtio,portgroup=access-100 --dry-run --print-xml > /tmp/compute-2.xml 

๋งˆ์ง€๋ง‰์—๋Š” /tmp/ ํด๋”์˜ ๊ฐ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์„ค๋ช…์ด ํฌํ•จ๋œ xml ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” -print-xml > /tmp/storage-1.xml ๋ช…๋ น์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ virsh์—์„œ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๋จธ์‹ ์„ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


virsh define --file /tmp/control-1.xml
virsh define --file /tmp/compute-1.xml
virsh define --file /tmp/compute-2.xml
virsh define --file /tmp/storage-1.xml
virsh define --file /tmp/storage-2.xml

[root@hp-gen9 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 6     dns-server                     running
 64    undercloud                     running
 -     compute-1                      shut off
 -     compute-2                      shut off
 -     control-1                      shut off
 -     storage-1                      shut off
 -     storage-2                      shut off

[root@hp-gen9 ~]#

์ด์ œ ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. TripleO๋Š” ์„ค์น˜ ๋ฐ ๊ฒ€์‚ฌ ์ค‘์— IPMI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ž์ฒด ๊ฒ€์‚ฌ๋Š” ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ํ•˜๋“œ์›จ์–ด๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ์ž์ฒด ๊ฒ€์‚ฌ๋Š” ๋ฒ ์–ด๋ฉ”ํƒˆ ์„œ๋ฒ„์™€ ์ž‘๋™ํ•˜๋„๋ก ์„ค๊ณ„๋œ ์„œ๋น„์Šค์ธ ironic์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋“œ์›จ์–ด IPMI ์„œ๋ฒ„์—๋Š” ๋ณ„๋„์˜ ํฌํŠธ(๋˜๋Š” ๊ณต์œ  ํฌํŠธ, ๊ทธ๋Ÿฌ๋‚˜ ์ค‘์š”ํ•˜์ง€ ์•Š์Œ)๊ฐ€ ์žˆ์ง€๋งŒ ๊ฐ€์ƒ ๋จธ์‹ ์—๋Š” ๊ทธ๋Ÿฌํ•œ ํฌํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ IPMI ํฌํŠธ๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ์ธ vbmc๋ผ๋Š” ๋„๊ตฌ๊ฐ€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๋‰˜์•™์Šค๋Š” ํŠนํžˆ ESXI ํ•˜์ดํผ๋ฐ”์ด์ €์— ์ด๋Ÿฌํ•œ ์‹คํ—˜์‹ค์„ ์„ค์ •ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์†”์งํžˆ ๋งํ•ด์„œ vbmc์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์ด ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๋ฏ€๋กœ ๋ชจ๋“  ๊ฒƒ์„ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. .

vbmc๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:


yum install yum install python2-virtualbmc

OS๊ฐ€ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉด ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

yum install -y https://www.rdoproject.org/repos/rdo-release.rpm

์ด์ œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์˜ ๋ชจ๋“  ๊ฒƒ์€ ๋ถˆ๋ช…์˜ˆ์Šค๋Ÿฌ์šธ ์ •๋„๋กœ ์ง„๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ vbmc ๋ชฉ๋ก์— ์„œ๋ฒ„๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.


[root@hp-gen9 ~]# vbmc list

[root@hp-gen9 ~]# 

ํ‘œ์‹œํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜๋™์œผ๋กœ ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


[root@hp-gen9 ~]# vbmc add control-1 --port 7001 --username admin --password admin
[root@hp-gen9 ~]# vbmc add storage-1 --port 7002 --username admin --password admin
[root@hp-gen9 ~]# vbmc add storage-2 --port 7003 --username admin --password admin
[root@hp-gen9 ~]# vbmc add compute-1 --port 7004 --username admin --password admin
[root@hp-gen9 ~]# vbmc add compute-2 --port 7005 --username admin --password admin
[root@hp-gen9 ~]#
[root@hp-gen9 ~]# vbmc list
+-------------+--------+---------+------+
| Domain name | Status | Address | Port |
+-------------+--------+---------+------+
| compute-1   | down   | ::      | 7004 |
| compute-2   | down   | ::      | 7005 |
| control-1   | down   | ::      | 7001 |
| storage-1   | down   | ::      | 7002 |
| storage-2   | down   | ::      | 7003 |
+-------------+--------+---------+------+
[root@hp-gen9 ~]#

์„ค๋ช… ์—†์ด๋„ ๋ช…๋ น ๊ตฌ๋ฌธ์ด ๋ช…ํ™•ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ๋กœ์„œ๋Š” ๋ชจ๋“  ์„ธ์…˜์ด DOWN ์ƒํƒœ์ž…๋‹ˆ๋‹ค. UP ์ƒํƒœ๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


[root@hp-gen9 ~]# vbmc start control-1
2020-08-14 03:15:57,826.826 13149 INFO VirtualBMC [-] Started vBMC instance for domain control-1
[root@hp-gen9 ~]# vbmc start storage-1 
2020-08-14 03:15:58,316.316 13149 INFO VirtualBMC [-] Started vBMC instance for domain storage-1
[root@hp-gen9 ~]# vbmc start storage-2
2020-08-14 03:15:58,851.851 13149 INFO VirtualBMC [-] Started vBMC instance for domain storage-2
[root@hp-gen9 ~]# vbmc start compute-1
2020-08-14 03:15:59,307.307 13149 INFO VirtualBMC [-] Started vBMC instance for domain compute-1
[root@hp-gen9 ~]# vbmc start compute-2
2020-08-14 03:15:59,712.712 13149 INFO VirtualBMC [-] Started vBMC instance for domain compute-2
[root@hp-gen9 ~]# 
[root@hp-gen9 ~]# 
[root@hp-gen9 ~]# vbmc list
+-------------+---------+---------+------+
| Domain name | Status  | Address | Port |
+-------------+---------+---------+------+
| compute-1   | running | ::      | 7004 |
| compute-2   | running | ::      | 7005 |
| control-1   | running | ::      | 7001 |
| storage-1   | running | ::      | 7002 |
| storage-2   | running | ::      | 7003 |
+-------------+---------+---------+------+
[root@hp-gen9 ~]#

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค).


firewall-cmd --zone=public --add-port=7001/udp --permanent
firewall-cmd --zone=public --add-port=7002/udp --permanent
firewall-cmd --zone=public --add-port=7003/udp --permanent
firewall-cmd --zone=public --add-port=7004/udp --permanent
firewall-cmd --zone=public --add-port=7005/udp --permanent
firewall-cmd --reload

์ด์ œ ์–ธ๋”ํด๋ผ์šฐ๋“œ์— ๊ฐ€์„œ ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ์ฃผ์†Œ๋Š” 192.168.255.200์ž…๋‹ˆ๋‹ค. ์–ธ๋”ํด๋ผ์šฐ๋“œ์—์„œ๋Š” ๋ฐฐํฌ ์ค€๋น„ ์ค‘์— ํ•„์š”ํ•œ ipmitool ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.


[stack@undercloud ~]$ ipmitool -I lanplus -U admin -P admin -H 192.168.255.200 -p 7001 power status          
Chassis Power is off
[stack@undercloud ~]$ ipmitool -I lanplus -U admin -P admin -H 192.168.255.200 -p 7001 power on
Chassis Power Control: Up/On
[stack@undercloud ~]$ 

[root@hp-gen9 ~]# virsh list 
 Id    Name                           State
----------------------------------------------------
 6     dns-server                     running
 64    undercloud                     running
 65    control-1                      running

๋ณด์‹œ๋‹ค์‹œํ”ผ vbmc๋ฅผ ํ†ตํ•ด ์ œ์–ด ๋…ธ๋“œ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋„๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


[stack@undercloud ~]$ ipmitool -I lanplus -U admin -P admin -H 192.168.255.200 -p 7001 power off
Chassis Power Control: Down/Off
[stack@undercloud ~]$ ipmitool -I lanplus -U admin -P admin -H 192.168.255.200 -p 7001 power status
Chassis Power is off
[stack@undercloud ~]$ 

[root@hp-gen9 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 6     dns-server                     running
 64    undercloud                     running
 -     compute-1                      shut off
 -     compute-2                      shut off
 -     control-1                      shut off
 -     storage-1                      shut off
 -     storage-2                      shut off

[root@hp-gen9 ~]#

๋‹ค์Œ ๋‹จ๊ณ„๋Š” ์˜ค๋ฒ„ํด๋ผ์šฐ๋“œ๊ฐ€ ์„ค์น˜๋  ๋…ธ๋“œ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋…ธ๋“œ์— ๋Œ€ํ•œ ์„ค๋ช…์ด ํฌํ•จ๋œ json ํŒŒ์ผ์„ ์ค€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ ์–ด ์„œ๋ฒ„์— ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ ํŒŒ์ผ์€ ๊ฐ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด vbmc๊ฐ€ ์‹คํ–‰๋˜๋Š” ํฌํŠธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.


[root@hp-gen9 ~]# virsh domiflist --domain control-1 
Interface  Type       Source     Model       MAC
-------------------------------------------------------
-          network    ovs-network-1 virtio      52:54:00:20:a2:2f
-          network    ovs-network-1 virtio      52:54:00:3f:87:9f

[root@hp-gen9 ~]# virsh domiflist --domain compute-1
Interface  Type       Source     Model       MAC
-------------------------------------------------------
-          network    ovs-network-1 virtio      52:54:00:98:e9:d6

[root@hp-gen9 ~]# virsh domiflist --domain compute-2
Interface  Type       Source     Model       MAC
-------------------------------------------------------
-          network    ovs-network-1 virtio      52:54:00:6a:ea:be

[root@hp-gen9 ~]# virsh domiflist --domain storage-1
Interface  Type       Source     Model       MAC
-------------------------------------------------------
-          network    ovs-network-1 virtio      52:54:00:79:0b:cb

[root@hp-gen9 ~]# virsh domiflist --domain storage-2
Interface  Type       Source     Model       MAC
-------------------------------------------------------
-          network    ovs-network-1 virtio      52:54:00:a7:fe:27

์ฐธ๊ณ : ์ œ์–ด ๋…ธ๋“œ์—๋Š” ๋‘ ๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์ง€๋งŒ ์ด ๊ฒฝ์šฐ์—๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์„ค์น˜์—์„œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ํ•˜๋‚˜๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ json ํŒŒ์ผ์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋น„์ €๋‹์ด ์ˆ˜ํ–‰๋  ํฌํŠธ์˜ Poppy ์ฃผ์†Œ, ๋…ธ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ  ipmi์— ๋„๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


{
    "nodes":[
        {
            "mac":[
                "52:54:00:20:a2:2f"
            ],
            "cpu":"8",
            "memory":"32768",
            "disk":"60",
            "arch":"x86_64",
            "name":"control-1",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"admin",
            "pm_addr":"192.168.255.200",
            "pm_port":"7001"
        },
        {
            "mac":[
                "52:54:00:79:0b:cb"
            ],
            "cpu":"4",
            "memory":"16384",
            "disk":"160",
            "arch":"x86_64",
            "name":"storage-1",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"admin",
            "pm_addr":"192.168.255.200",
            "pm_port":"7002"
        },
        {
            "mac":[
                "52:54:00:a7:fe:27"
            ],
            "cpu":"4",
            "memory":"16384",
            "disk":"160",
            "arch":"x86_64",
            "name":"storage-2",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"admin",
            "pm_addr":"192.168.255.200",
            "pm_port":"7003"
        },
        {
            "mac":[
                "52:54:00:98:e9:d6"
            ],
            "cpu":"12",
            "memory":"32768",
            "disk":"60",
            "arch":"x86_64",
            "name":"compute-1",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"admin",
            "pm_addr":"192.168.255.200",
            "pm_port":"7004"
        },
        {
            "mac":[
                "52:54:00:6a:ea:be"
            ],
            "cpu":"12",
            "memory":"32768",
            "disk":"60",
            "arch":"x86_64",
            "name":"compute-2",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"admin",
            "pm_addr":"192.168.255.200",
            "pm_port":"7005"
        }
    ]
}

์ด์ œ ์•„์ด๋Ÿฌ๋‹ˆํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ค€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด wget์„ ํ†ตํ•ด ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

(undercloud) [stack@undercloud ~]$ sudo wget https://images.rdoproject.org/queens/delorean/current-tripleo-rdo/overcloud-full.tar --no-check-certificate
(undercloud) [stack@undercloud ~]$ sudo wget https://images.rdoproject.org/queens/delorean/current-tripleo-rdo/ironic-python-agent.tar --no-check-certificate
(undercloud) [stack@undercloud ~]$ ls -lh
total 1.9G
-rw-r--r--. 1 stack stack 447M Aug 14 10:26 ironic-python-agent.tar
-rw-r--r--. 1 stack stack 1.5G Aug 14 10:26 overcloud-full.tar
-rw-------. 1 stack stack  916 Aug 13 23:10 stackrc
-rw-r--r--. 1 stack stack  15K Aug 13 22:50 undercloud.conf
-rw-------. 1 stack stack 2.0K Aug 13 22:50 undercloud-passwords.conf
(undercloud) [stack@undercloud ~]$ mkdir images/
(undercloud) [stack@undercloud ~]$ tar -xpvf ironic-python-agent.tar -C ~/images/
ironic-python-agent.initramfs
ironic-python-agent.kernel
(undercloud) [stack@undercloud ~]$ tar -xpvf overcloud-full.tar -C ~/images/                       
overcloud-full.qcow2
overcloud-full.initrd
overcloud-full.vmlinuz
(undercloud) [stack@undercloud ~]$ 
(undercloud) [stack@undercloud ~]$ ls -lh images/
total 1.9G
-rw-rw-r--. 1 stack stack 441M Aug 12 17:24 ironic-python-agent.initramfs
-rwxr-xr-x. 1 stack stack 6.5M Aug 12 17:24 ironic-python-agent.kernel
-rw-r--r--. 1 stack stack  53M Aug 12 17:14 overcloud-full.initrd
-rw-r--r--. 1 stack stack 1.4G Aug 12 17:18 overcloud-full.qcow2
-rwxr-xr-x. 1 stack stack 6.5M Aug 12 17:14 overcloud-full.vmlinuz
(undercloud) [stack@undercloud ~]$

์–ธ๋”ํด๋ผ์šฐ๋“œ์— ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ:

(undercloud) [stack@undercloud ~]$ openstack overcloud image upload --image-path ~/images/
Image "overcloud-full-vmlinuz" was uploaded.
+--------------------------------------+------------------------+-------------+---------+--------+
|                  ID                  |          Name          | Disk Format |   Size  | Status |
+--------------------------------------+------------------------+-------------+---------+--------+
| c2553770-3e0f-4750-b46b-138855b5c385 | overcloud-full-vmlinuz |     aki     | 6761064 | active |
+--------------------------------------+------------------------+-------------+---------+--------+
Image "overcloud-full-initrd" was uploaded.
+--------------------------------------+-----------------------+-------------+----------+--------+
|                  ID                  |          Name         | Disk Format |   Size   | Status |
+--------------------------------------+-----------------------+-------------+----------+--------+
| 949984e0-4932-4e71-af43-d67a38c3dc89 | overcloud-full-initrd |     ari     | 55183045 | active |
+--------------------------------------+-----------------------+-------------+----------+--------+
Image "overcloud-full" was uploaded.
+--------------------------------------+----------------+-------------+------------+--------+
|                  ID                  |      Name      | Disk Format |    Size    | Status |
+--------------------------------------+----------------+-------------+------------+--------+
| a2f2096d-c9d7-429a-b866-c7543c02a380 | overcloud-full |    qcow2    | 1487475712 | active |
+--------------------------------------+----------------+-------------+------------+--------+
Image "bm-deploy-kernel" was uploaded.
+--------------------------------------+------------------+-------------+---------+--------+
|                  ID                  |       Name       | Disk Format |   Size  | Status |
+--------------------------------------+------------------+-------------+---------+--------+
| e413aa78-e38f-404c-bbaf-93e582a8e67f | bm-deploy-kernel |     aki     | 6761064 | active |
+--------------------------------------+------------------+-------------+---------+--------+
Image "bm-deploy-ramdisk" was uploaded.
+--------------------------------------+-------------------+-------------+-----------+--------+
|                  ID                  |        Name       | Disk Format |    Size   | Status |
+--------------------------------------+-------------------+-------------+-----------+--------+
| 5cf3aba4-0e50-45d3-929f-27f025dd6ce3 | bm-deploy-ramdisk |     ari     | 461759376 | active |
+--------------------------------------+-------------------+-------------+-----------+--------+
(undercloud) [stack@undercloud ~]$

๋ชจ๋“  ์ด๋ฏธ์ง€๊ฐ€ ๋กœ๋“œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ ์ค‘


(undercloud) [stack@undercloud ~]$  openstack image list
+--------------------------------------+------------------------+--------+
| ID                                   | Name                   | Status |
+--------------------------------------+------------------------+--------+
| e413aa78-e38f-404c-bbaf-93e582a8e67f | bm-deploy-kernel       | active |
| 5cf3aba4-0e50-45d3-929f-27f025dd6ce3 | bm-deploy-ramdisk      | active |
| a2f2096d-c9d7-429a-b866-c7543c02a380 | overcloud-full         | active |
| 949984e0-4932-4e71-af43-d67a38c3dc89 | overcloud-full-initrd  | active |
| c2553770-3e0f-4750-b46b-138855b5c385 | overcloud-full-vmlinuz | active |
+--------------------------------------+------------------------+--------+
(undercloud) [stack@undercloud ~]$

ํ•œ ๊ฐ€์ง€ ๋” - DNS ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


(undercloud) [stack@undercloud ~]$ openstack subnet list
+--------------------------------------+-----------------+--------------------------------------+------------------+
| ID                                   | Name            | Network                              | Subnet           |
+--------------------------------------+-----------------+--------------------------------------+------------------+
| f45dea46-4066-42aa-a3c4-6f84b8120cab | ctlplane-subnet | 6ca013dc-41c2-42d8-9d69-542afad53392 | 192.168.255.0/24 |
+--------------------------------------+-----------------+--------------------------------------+------------------+
(undercloud) [stack@undercloud ~]$ openstack subnet show f45dea46-4066-42aa-a3c4-6f84b8120cab
+-------------------+-----------------------------------------------------------+
| Field             | Value                                                     |
+-------------------+-----------------------------------------------------------+
| allocation_pools  | 192.168.255.11-192.168.255.50                             |
| cidr              | 192.168.255.0/24                                          |
| created_at        | 2020-08-13T20:10:37Z                                      |
| description       |                                                           |
| dns_nameservers   |                                                           |
| enable_dhcp       | True                                                      |
| gateway_ip        | 192.168.255.1                                             |
| host_routes       | destination='169.254.169.254/32', gateway='192.168.255.1' |
| id                | f45dea46-4066-42aa-a3c4-6f84b8120cab                      |
| ip_version        | 4                                                         |
| ipv6_address_mode | None                                                      |
| ipv6_ra_mode      | None                                                      |
| name              | ctlplane-subnet                                           |
| network_id        | 6ca013dc-41c2-42d8-9d69-542afad53392                      |
| prefix_length     | None                                                      |
| project_id        | a844ccfcdb2745b198dde3e1b28c40a3                          |
| revision_number   | 0                                                         |
| segment_id        | None                                                      |
| service_types     |                                                           |
| subnetpool_id     | None                                                      |
| tags              |                                                           |
| updated_at        | 2020-08-13T20:10:37Z                                      |
+-------------------+-----------------------------------------------------------+
(undercloud) [stack@undercloud ~]$ 
(undercloud) [stack@undercloud ~]$ neutron subnet-update f45dea46-4066-42aa-a3c4-6f84b8120cab --dns-nameserver 192.168.255.253                                    
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Updated subnet: f45dea46-4066-42aa-a3c4-6f84b8120cab
(undercloud) [stack@undercloud ~]$

์ด์ œ ์šฐ๋ฆฌ๋Š” ์ž๊ธฐ ์„ฑ์ฐฐ ๋ช…๋ น์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

(undercloud) [stack@undercloud ~]$ openstack overcloud node import --introspect --provide inspection.json 
Started Mistral Workflow tripleo.baremetal.v1.register_or_update. Execution ID: d57456a3-d8ed-479c-9a90-dff7c752d0ec
Waiting for messages on queue 'tripleo' with no timeout.


5 node(s) successfully moved to the "manageable" state.
Successfully registered node UUID b4b2cf4a-b7ca-4095-af13-cc83be21c4f5
Successfully registered node UUID b89a72a3-6bb7-429a-93bc-48393d225838
Successfully registered node UUID 20a16cc0-e0ce-4d88-8f17-eb0ce7b4d69e
Successfully registered node UUID bfc1eb98-a17a-4a70-b0b6-6c0db0eac8e8
Successfully registered node UUID 766ab623-464c-423d-a529-d9afb69d1167
Waiting for introspection to finish...
Started Mistral Workflow tripleo.baremetal.v1.introspect. Execution ID: 6b4d08ae-94c3-4a10-ab63-7634ec198a79
Waiting for messages on queue 'tripleo' with no timeout.
Introspection of node b89a72a3-6bb7-429a-93bc-48393d225838 completed. Status:SUCCESS. Errors:None
Introspection of node 20a16cc0-e0ce-4d88-8f17-eb0ce7b4d69e completed. Status:SUCCESS. Errors:None
Introspection of node bfc1eb98-a17a-4a70-b0b6-6c0db0eac8e8 completed. Status:SUCCESS. Errors:None
Introspection of node 766ab623-464c-423d-a529-d9afb69d1167 completed. Status:SUCCESS. Errors:None
Introspection of node b4b2cf4a-b7ca-4095-af13-cc83be21c4f5 completed. Status:SUCCESS. Errors:None
Successfully introspected 5 node(s).
Started Mistral Workflow tripleo.baremetal.v1.provide. Execution ID: f5594736-edcf-4927-a8a0-2a7bf806a59a
Waiting for messages on queue 'tripleo' with no timeout.
5 node(s) successfully moved to the "available" state.
(undercloud) [stack@undercloud ~]$

์ถœ๋ ฅ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ชจ๋“  ๊ฒƒ์ด ์˜ค๋ฅ˜ ์—†์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


(undercloud) [stack@undercloud ~]$ openstack baremetal node list
+--------------------------------------+-----------+---------------+-------------+--------------------+-------------+
| UUID                                 | Name      | Instance UUID | Power State | Provisioning State | Maintenance |
+--------------------------------------+-----------+---------------+-------------+--------------------+-------------+
| b4b2cf4a-b7ca-4095-af13-cc83be21c4f5 | control-1 | None          | power off   | available          | False       |
| b89a72a3-6bb7-429a-93bc-48393d225838 | storage-1 | None          | power off   | available          | False       |
| 20a16cc0-e0ce-4d88-8f17-eb0ce7b4d69e | storage-2 | None          | power off   | available          | False       |
| bfc1eb98-a17a-4a70-b0b6-6c0db0eac8e8 | compute-1 | None          | power off   | available          | False       |
| 766ab623-464c-423d-a529-d9afb69d1167 | compute-2 | None          | power off   | available          | False       |
+--------------------------------------+-----------+---------------+-------------+--------------------+-------------+
(undercloud) [stack@undercloud ~]$ 

๋…ธ๋“œ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋‹ค๋ฅธ ์ƒํƒœ์— ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋กœ๊ทธ๋ฅผ ๋ณด๊ณ  ์ด๋Ÿฌํ•œ ์ผ์ด ๋ฐœ์ƒํ•œ ์ด์œ ๋ฅผ ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ๊ฐ€์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ฐ€์ƒ ๋จธ์‹  ๋˜๋Š” vbmc ์‚ฌ์šฉ๊ณผ ๊ด€๋ จ๋œ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์„ธ์š”.

๋‹ค์Œ์œผ๋กœ, ์–ด๋–ค ๋…ธ๋“œ๊ฐ€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋…ธ๋“œ๊ฐ€ ๋ฐฐํฌ๋  ํ”„๋กœํ•„์„ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


(undercloud) [stack@undercloud ~]$ openstack overcloud profiles list
+--------------------------------------+-----------+-----------------+-----------------+-------------------+
| Node UUID                            | Node Name | Provision State | Current Profile | Possible Profiles |
+--------------------------------------+-----------+-----------------+-----------------+-------------------+
| b4b2cf4a-b7ca-4095-af13-cc83be21c4f5 | control-1 | available       | None            |                   |
| b89a72a3-6bb7-429a-93bc-48393d225838 | storage-1 | available       | None            |                   |
| 20a16cc0-e0ce-4d88-8f17-eb0ce7b4d69e | storage-2 | available       | None            |                   |
| bfc1eb98-a17a-4a70-b0b6-6c0db0eac8e8 | compute-1 | available       | None            |                   |
| 766ab623-464c-423d-a529-d9afb69d1167 | compute-2 | available       | None            |                   |
+--------------------------------------+-----------+-----------------+-----------------+-------------------+
(undercloud) [stack@undercloud ~]$ openstack flavor list
+--------------------------------------+---------------+------+------+-----------+-------+-----------+
| ID                                   | Name          |  RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------------------------------------+---------------+------+------+-----------+-------+-----------+
| 168af640-7f40-42c7-91b2-989abc5c5d8f | swift-storage | 4096 |   40 |         0 |     1 | True      |
| 52148d1b-492e-48b4-b5fc-772849dd1b78 | baremetal     | 4096 |   40 |         0 |     1 | True      |
| 56e66542-ae60-416d-863e-0cb192d01b09 | control       | 4096 |   40 |         0 |     1 | True      |
| af6796e1-d0c4-4bfe-898c-532be194f7ac | block-storage | 4096 |   40 |         0 |     1 | True      |
| e4d50fdd-0034-446b-b72c-9da19b16c2df | compute       | 4096 |   40 |         0 |     1 | True      |
| fc2e3acf-7fca-4901-9eee-4a4d6ef0265d | ceph-storage  | 4096 |   40 |         0 |     1 | True      |
+--------------------------------------+---------------+------+------+-----------+-------+-----------+
(undercloud) [stack@undercloud ~]$

๊ฐ ๋…ธ๋“œ์— ๋Œ€ํ•œ ํ”„๋กœํ•„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.


openstack baremetal node set --property capabilities='profile:control,boot_option:local' b4b2cf4a-b7ca-4095-af13-cc83be21c4f5
openstack baremetal node set --property capabilities='profile:ceph-storage,boot_option:local' b89a72a3-6bb7-429a-93bc-48393d225838
openstack baremetal node set --property capabilities='profile:ceph-storage,boot_option:local' 20a16cc0-e0ce-4d88-8f17-eb0ce7b4d69e
openstack baremetal node set --property capabilities='profile:compute,boot_option:local' bfc1eb98-a17a-4a70-b0b6-6c0db0eac8e8
openstack baremetal node set --property capabilities='profile:compute,boot_option:local' 766ab623-464c-423d-a529-d9afb69d1167

๋ชจ๋“  ์ž‘์—…์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ–ˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


(undercloud) [stack@undercloud ~]$ openstack overcloud profiles list
+--------------------------------------+-----------+-----------------+-----------------+-------------------+
| Node UUID                            | Node Name | Provision State | Current Profile | Possible Profiles |
+--------------------------------------+-----------+-----------------+-----------------+-------------------+
| b4b2cf4a-b7ca-4095-af13-cc83be21c4f5 | control-1 | available       | control         |                   |
| b89a72a3-6bb7-429a-93bc-48393d225838 | storage-1 | available       | ceph-storage    |                   |
| 20a16cc0-e0ce-4d88-8f17-eb0ce7b4d69e | storage-2 | available       | ceph-storage    |                   |
| bfc1eb98-a17a-4a70-b0b6-6c0db0eac8e8 | compute-1 | available       | compute         |                   |
| 766ab623-464c-423d-a529-d9afb69d1167 | compute-2 | available       | compute         |                   |
+--------------------------------------+-----------+-----------------+-----------------+-------------------+
(undercloud) [stack@undercloud ~]$

๋ชจ๋“  ๊ฒƒ์ด ์ •ํ™•ํ•˜๋ฉด ์˜ค๋ฒ„ํด๋ผ์šฐ๋“œ๋ฅผ ๋ฐฐํฌํ•˜๋ผ๋Š” ๋ช…๋ น์„ ๋‚ด๋ฆฝ๋‹ˆ๋‹ค.

openstack overcloud deploy --templates --control-scale 1 --compute-scale 2  --ceph-storage-scale 2 --control-flavor control --compute-flavor compute  --ceph-storage-flavor ceph-storage --libvirt-type qemu

์‹ค์ œ ์„ค์น˜์—์„œ๋Š” ์‚ฌ์šฉ์ž ์ •์˜๋œ ํ…œํ”Œ๋ฆฟ์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ํ…œํ”Œ๋ฆฟ์˜ ๊ฐ ํŽธ์ง‘ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งค์šฐ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ์•ž์„œ ์ž‘์„ฑํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•œ ์„ค์น˜๋งŒ์œผ๋กœ๋„ ์ž‘๋™ ๋ฐฉ์‹์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ด ๊ฒฝ์šฐ ์ค‘์ฒฉ๋œ ๊ฐ€์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ --libvirt-type qemu ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด์ œ ์•ฝ ํ•œ ์‹œ๊ฐ„ ๋˜๋Š” ๊ทธ ์ด์ƒ(ํ•˜๋“œ์›จ์–ด ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ)์ด ์žˆ์œผ๋ฉฐ ์ด ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋‹ค์Œ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž„ ๋ฟ์ž…๋‹ˆ๋‹ค.


2020-08-14 08:39:21Z [overcloud]: CREATE_COMPLETE  Stack CREATE completed successfully

 Stack overcloud CREATE_COMPLETE 

Host 192.168.255.21 not found in /home/stack/.ssh/known_hosts
Started Mistral Workflow tripleo.deployment.v1.get_horizon_url. Execution ID: fcb996cd-6a19-482b-b755-2ca0c08069a9
Overcloud Endpoint: http://192.168.255.21:5000/
Overcloud Horizon Dashboard URL: http://192.168.255.21:80/dashboard
Overcloud rc file: /home/stack/overcloudrc
Overcloud Deployed
(undercloud) [stack@undercloud ~]$

์ด์ œ ์—ฐ๊ตฌ, ์‹คํ—˜ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ OpenStack ๋ฒ„์ „์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ ์Šคํƒ์—๋Š” ๋‘ ๊ฐœ์˜ ํŒŒ์ผ, ์ฆ‰ stackrc(์–ธ๋”ํด๋ผ์šฐ๋“œ ๊ด€๋ฆฌ์šฉ)์™€ ๋‘ ๋ฒˆ์งธ overcloudrc(์˜ค๋ฒ„ํด๋ผ์šฐ๋“œ ๊ด€๋ฆฌ์šฉ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒŒ์ผ์—๋Š” ์ธ์ฆ์— ํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์†Œ์Šค๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


(undercloud) [stack@undercloud ~]$ openstack server list
+--------------------------------------+-------------------------+--------+-------------------------+----------------+--------------+
| ID                                   | Name                    | Status | Networks                | Image          | Flavor       |
+--------------------------------------+-------------------------+--------+-------------------------+----------------+--------------+
| fd7d36f4-ce87-4b9a-93b0-add2957792de | overcloud-controller-0  | ACTIVE | ctlplane=192.168.255.15 | overcloud-full | control      |
| edc77778-8972-475e-a541-ff40eb944197 | overcloud-novacompute-1 | ACTIVE | ctlplane=192.168.255.26 | overcloud-full | compute      |
| 5448ce01-f05f-47ca-950a-ced14892c0d4 | overcloud-cephstorage-1 | ACTIVE | ctlplane=192.168.255.34 | overcloud-full | ceph-storage |
| ce6d862f-4bdf-4ba3-b711-7217915364d7 | overcloud-novacompute-0 | ACTIVE | ctlplane=192.168.255.19 | overcloud-full | compute      |
| e4507bd5-6f96-4b12-9cc0-6924709da59e | overcloud-cephstorage-0 | ACTIVE | ctlplane=192.168.255.44 | overcloud-full | ceph-storage |
+--------------------------------------+-------------------------+--------+-------------------------+----------------+--------------+
(undercloud) [stack@undercloud ~]$ 


(undercloud) [stack@undercloud ~]$ source overcloudrc 
(overcloud) [stack@undercloud ~]$ 
(overcloud) [stack@undercloud ~]$ openstack project list
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 4eed7d0f06544625857d51cd77c5bd4c | admin   |
| ee1c68758bde41eaa9912c81dc67dad8 | service |
+----------------------------------+---------+
(overcloud) [stack@undercloud ~]$ 
(overcloud) [stack@undercloud ~]$ 
(overcloud) [stack@undercloud ~]$ openstack network agent list  
+--------------------------------------+--------------------+-------------------------------------+-------------------+-------+-------+---------------------------+
| ID                                   | Agent Type         | Host                                | Availability Zone | Alive | State | Binary                    |
+--------------------------------------+--------------------+-------------------------------------+-------------------+-------+-------+---------------------------+
| 10495de9-ba4b-41fe-b30a-b90ec3f8728b | Open vSwitch agent | overcloud-novacompute-1.localdomain | None              | :-)   | UP    | neutron-openvswitch-agent |
| 1515ad4a-5972-46c3-af5f-e5446dff7ac7 | L3 agent           | overcloud-controller-0.localdomain  | nova              | :-)   | UP    | neutron-l3-agent          |
| 322e62ca-1e5a-479e-9a96-4f26d09abdd7 | DHCP agent         | overcloud-controller-0.localdomain  | nova              | :-)   | UP    | neutron-dhcp-agent        |
| 9c1de2f9-bac5-400e-998d-4360f04fc533 | Open vSwitch agent | overcloud-novacompute-0.localdomain | None              | :-)   | UP    | neutron-openvswitch-agent |
| d99c5657-851e-4d3c-bef6-f1e3bb1acfb0 | Open vSwitch agent | overcloud-controller-0.localdomain  | None              | :-)   | UP    | neutron-openvswitch-agent |
| ff85fae6-5543-45fb-a301-19c57b62d836 | Metadata agent     | overcloud-controller-0.localdomain  | None              | :-)   | UP    | neutron-metadata-agent    |
+--------------------------------------+--------------------+-------------------------------------+-------------------+-------+-------+---------------------------+
(overcloud) [stack@undercloud ~]$

์„ค์น˜ ์ž‘์—…์—๋Š” ์—ฌ์ „ํžˆ ์ž‘์€ ํ„ฐ์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… ์ค‘์ธ ์‹œ์Šคํ…œ์ด ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปจํŠธ๋กค๋Ÿฌ์— ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด heat-admin ๊ณ„์ • ์•„๋ž˜ control-1๋กœ ์ด๋™ํ•˜์—ฌ ๊ฒฝ๋กœ๋ฅผ ๋“ฑ๋กํ•˜์„ธ์š”.


(undercloud) [stack@undercloud ~]$ ssh [email protected]         
Last login: Fri Aug 14 09:47:40 2020 from 192.168.255.1
[heat-admin@overcloud-controller-0 ~]$ 
[heat-admin@overcloud-controller-0 ~]$ 
[heat-admin@overcloud-controller-0 ~]$ sudo ip route add 10.169.0.0/16 via 192.168.255.254

์ž, ์ด์ œ ์ง€ํ‰์„ ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ •๋ณด(์ฃผ์†Œ, ๋กœ๊ทธ์ธ ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ)๋Š” /home/stack/overcloudrc ํŒŒ์ผ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ๋‹ค์ด์–ด๊ทธ๋žจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์šฐ๋ฆฌ ์„ค์น˜์—์„œ๋Š” ๊ธฐ๊ณ„ ์ฃผ์†Œ๊ฐ€ DHCP๋ฅผ ํ†ตํ•ด ๋ฐœ๊ธ‰๋˜์—ˆ์œผ๋ฉฐ ๋ณด์‹œ๋‹ค์‹œํ”ผ "๋ฌด์ž‘์œ„๋กœ" ๋ฐœ๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฐฐํฌ ์ค‘์— ์–ด๋–ค ์ฃผ์†Œ๋ฅผ ์–ด๋–ค ๋จธ์‹ ์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š”์ง€ ํ…œํ”Œ๋ฆฟ์—์„œ ์—„๊ฒฉํ•˜๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ƒ ๋จธ์‹  ๊ฐ„์˜ ํŠธ๋ž˜ํ”ฝ ํ๋ฆ„์€ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ํŠธ๋ž˜ํ”ฝ ์ „๋‹ฌ์„ ์œ„ํ•œ ์„ธ ๊ฐ€์ง€ ์˜ต์…˜์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ํ•˜๋‚˜์˜ L2 ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ํ•˜๋‚˜์˜ ํ•˜์ดํผ๋ฐ”์ด์ €์— ์žˆ๋Š” ๋‘ ๋Œ€์˜ ์‹œ์Šคํ…œ
  • ๋™์ผํ•œ L2 ๋„คํŠธ์›Œํฌ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ•˜์ดํผ๋ฐ”์ด์ €์— ์žˆ๋Š” ๋‘ ์‹œ์Šคํ…œ
  • ์„œ๋กœ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๋‘ ์ปดํ“จํ„ฐ(๊ต์ฐจ ๋„คํŠธ์›Œํฌ ๋ฃจํŒ…)

์œ ๋™ ์ฃผ์†Œ์™€ ๋ถ„์‚ฐ ๋ผ์šฐํŒ…์„ ์‚ฌ์šฉํ•˜์—ฌ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ์„ธ๊ณ„์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ ๋ฒˆ์— ๊ณ ๋ คํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋‚ด๋ถ€ ํŠธ๋ž˜ํ”ฝ์— ์ค‘์ ์„ ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

4๊ฐœ์˜ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ L3 ๋„คํŠธ์›Œํฌ(net-2)์— 1๊ฐœ, net-1 ๋„คํŠธ์›Œํฌ์— 2๊ฐœ ๋” ์žˆ์Šต๋‹ˆ๋‹ค.

(overcloud) [stack@undercloud ~]$ nova list --tenant 5e18ce8ec9594e00b155485f19895e6c             
+--------------------------------------+------+----------------------------------+--------+------------+-------------+-----------------+
| ID                                   | Name | Tenant ID                        | Status | Task State | Power State | Networks        |
+--------------------------------------+------+----------------------------------+--------+------------+-------------+-----------------+
| f53b37b5-2204-46cc-aef0-dba84bf970c0 | vm-1 | 5e18ce8ec9594e00b155485f19895e6c | ACTIVE | -          | Running     | net-1=10.0.1.85 |
| fc8b6722-0231-49b0-b2fa-041115bef34a | vm-2 | 5e18ce8ec9594e00b155485f19895e6c | ACTIVE | -          | Running     | net-1=10.0.1.88 |
| 3cd74455-b9b7-467a-abe3-bd6ff765c83c | vm-3 | 5e18ce8ec9594e00b155485f19895e6c | ACTIVE | -          | Running     | net-1=10.0.1.90 |
| 7e836338-6772-46b0-9950-f7f06dbe91a8 | vm-4 | 5e18ce8ec9594e00b155485f19895e6c | ACTIVE | -          | Running     | net-2=10.0.2.8  |
+--------------------------------------+------+----------------------------------+--------+------------+-------------+-----------------+
(overcloud) [stack@undercloud ~]$ 

์ƒ์„ฑ๋œ ๋จธ์‹ ์ด ์–ด๋–ค ํ•˜์ดํผ๋ฐ”์ด์ €์— ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

(overcloud) [stack@undercloud ~]$ nova show f53b37b5-2204-46cc-aef0-dba84bf970c0 | egrep "hypervisor_hostname|instance_name|hostname"
| OS-EXT-SRV-ATTR:hostname             | vm-1                                                     |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | overcloud-novacompute-0.localdomain                      |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000001                                        |
(overcloud) [stack@undercloud ~]$ nova show fc8b6722-0231-49b0-b2fa-041115bef34a | egrep "hypervisor_hostname|instance_name|hostname"
| OS-EXT-SRV-ATTR:hostname             | vm-2                                                     |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | overcloud-novacompute-1.localdomain                      |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000002                                        |
(overcloud) [stack@undercloud ~]$ nova show 3cd74455-b9b7-467a-abe3-bd6ff765c83c | egrep "hypervisor_hostname|instance_name|hostname"
| OS-EXT-SRV-ATTR:hostname             | vm-3                                                     |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | overcloud-novacompute-0.localdomain                      |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000003                                        |
(overcloud) [stack@undercloud ~]$ nova show 7e836338-6772-46b0-9950-f7f06dbe91a8 | egrep "hypervisor_hostname|instance_name|hostname"
| OS-EXT-SRV-ATTR:hostname             | vm-4                                                     |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | overcloud-novacompute-1.localdomain                      |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000004                                        |

(์˜ค๋ฒ„ํด๋ผ์šฐ๋“œ) [stack@undercloud ~]$
๋จธ์‹  vm-1 ๋ฐ vm-3์€ ์ปดํ“จํŒ…-0์— ์žˆ๊ณ  ๋จธ์‹  vm-2 ๋ฐ vm-4๋Š” ๋…ธ๋“œ ์ปดํ“จํŒ…-1์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ง€์ •๋œ ๋„คํŠธ์›Œํฌ ๊ฐ„์˜ ๋ผ์šฐํŒ…์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒ ๋ผ์šฐํ„ฐ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

(overcloud) [stack@undercloud ~]$ openstack router list  --project 5e18ce8ec9594e00b155485f19895e6c
+--------------------------------------+----------+--------+-------+-------------+-------+----------------------------------+
| ID                                   | Name     | Status | State | Distributed | HA    | Project                          |
+--------------------------------------+----------+--------+-------+-------------+-------+----------------------------------+
| 0a4d2420-4b9c-46bd-aec1-86a1ef299abe | router-1 | ACTIVE | UP    | False       | False | 5e18ce8ec9594e00b155485f19895e6c |
+--------------------------------------+----------+--------+-------+-------------+-------+----------------------------------+
(overcloud) [stack@undercloud ~]$ 

๋ผ์šฐํ„ฐ์—๋Š” ๋„คํŠธ์›Œํฌ์˜ ๊ฒŒ์ดํŠธ์›จ์ด ์—ญํ• ์„ ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ๊ฐ€์ƒ ํฌํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

(overcloud) [stack@undercloud ~]$ openstack router show 0a4d2420-4b9c-46bd-aec1-86a1ef299abe | grep interface
| interfaces_info         | [{"subnet_id": "2529ad1a-6b97-49cd-8515-cbdcbe5e3daa", "ip_address": "10.0.1.254", "port_id": "0c52b15f-8fcc-4801-bf52-7dacc72a5201"}, {"subnet_id": "335552dd-b35b-456b-9df0-5aac36a3ca13", "ip_address": "10.0.2.254", "port_id": "92fa49b5-5406-499f-ab8d-ddf28cc1a76c"}] |
(overcloud) [stack@undercloud ~]$ 

ํ•˜์ง€๋งŒ ํŠธ๋ž˜ํ”ฝ์ด ์–ด๋–ป๊ฒŒ ํ๋ฅด๋Š”์ง€ ์‚ดํŽด๋ณด๊ธฐ ์ „์— ํ˜„์žฌ ์ œ์–ด ๋…ธ๋“œ(๋„คํŠธ์›Œํฌ ๋…ธ๋“œ์ด๊ธฐ๋„ ํ•จ)์™€ ์ปดํ“จํŒ… ๋…ธ๋“œ์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปดํ“จํŒ… ๋…ธ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-vsctl show
[heat-admin@overcloud-novacompute-0 ~]$ sudo sudo ovs-appctl dpif/show
system@ovs-system: hit:3 missed:3
  br-ex:
    br-ex 65534/1: (internal)
    phy-br-ex 1/none: (patch: peer=int-br-ex)
  br-int:
    br-int 65534/2: (internal)
    int-br-ex 1/none: (patch: peer=phy-br-ex)
    patch-tun 2/none: (patch: peer=patch-int)
  br-tun:
    br-tun 65534/3: (internal)
    patch-int 1/none: (patch: peer=patch-tun)
    vxlan-c0a8ff0f 3/4: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.19, remote_ip=192.168.255.15)
    vxlan-c0a8ff1a 2/4: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.19, remote_ip=192.168.255.26)
[heat-admin@overcloud-novacompute-0 ~]$

ํ˜„์žฌ ๋…ธ๋“œ์—๋Š” br-int, br-tun, br-ex๋ผ๋Š” ์„ธ ๊ฐœ์˜ ovs ๋ธŒ๋ฆฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ทธ๋“ค ์‚ฌ์ด์—๋Š” ์ผ๋ จ์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค์ด์–ด๊ทธ๋žจ์— ํ‘œ์‹œํ•˜๊ณ  ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

VxLAN ํ„ฐ๋„์ด ๋ฐœ์ƒํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ๋ณด๋ฉด ํ•˜๋‚˜์˜ ํ„ฐ๋„์ด Compute-1(192.168.255.26)๋กœ ์˜ฌ๋ผ๊ฐ€๊ณ  ๋‘ ๋ฒˆ์งธ ํ„ฐ๋„์ด Control-1(192.168.255.15)๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ์ ์€ br-ex์—๋Š” ๋ฌผ๋ฆฌ์  ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์—†๋‹ค๋Š” ์ ์ด๋ฉฐ, ์–ด๋–ค ํ๋ฆ„์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๋ฉด ์ด ๋ธŒ๋ฆฌ์ง€๋Š” ํ˜„์žฌ ํŠธ๋ž˜ํ”ฝ๋งŒ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


[heat-admin@overcloud-novacompute-0 ~]$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 192.168.255.19  netmask 255.255.255.0  broadcast 192.168.255.255
        inet6 fe80::5054:ff:fe6a:eabe  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:6a:ea:be  txqueuelen 1000  (Ethernet)
        RX packets 2909669  bytes 4608201000 (4.2 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1821057  bytes 349198520 (333.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[heat-admin@overcloud-novacompute-0 ~]$ 

์ถœ๋ ฅ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์ฃผ์†Œ๋Š” ๊ฐ€์ƒ ๋ธŒ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์•„๋‹Œ ๋ฌผ๋ฆฌ์  ํฌํŠธ์— ์ง์ ‘ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.


[heat-admin@overcloud-novacompute-0 ~]$  sudo ovs-appctl fdb/show br-ex
 port  VLAN  MAC                Age
[heat-admin@overcloud-novacompute-0 ~]$  sudo ovs-ofctl dump-flows br-ex
 cookie=0x9169eae8f7fe5bb2, duration=216686.864s, table=0, n_packets=303, n_bytes=26035, priority=2,in_port="phy-br-ex" actions=drop
 cookie=0x9169eae8f7fe5bb2, duration=216686.887s, table=0, n_packets=0, n_bytes=0, priority=0 actions=NORMAL
[heat-admin@overcloud-novacompute-0 ~]$ 

์ฒซ ๋ฒˆ์งธ ๊ทœ์น™์— ๋”ฐ๋ฅด๋ฉด phy-br-ex ํฌํŠธ์—์„œ ๋‚˜์˜จ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ ํ˜„์žฌ ์ด ์ธํ„ฐํŽ˜์ด์Šค(br-int๊ฐ€ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค)๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์ด ๋ธŒ๋ฆฌ์ง€๋กœ ํŠธ๋ž˜ํ”ฝ์ด ๋“ค์–ด์˜ค๋Š” ๋‹ค๋ฅธ ๊ณณ์ด ์—†์œผ๋ฉฐ, ๊ฐ์†Œ๋Ÿ‰์œผ๋กœ ํŒ๋‹จํ•˜๋ฉด BUM ํŠธ๋ž˜ํ”ฝ์€ ์ด๋ฏธ ๋ธŒ๋ฆฌ์ง€๋กœ ์œ ์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ํŠธ๋ž˜ํ”ฝ์€ VxLAN ํ„ฐ๋„์„ ํ†ตํ•ด์„œ๋งŒ ์ด ๋…ธ๋“œ์—์„œ ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ์–ด๋–ค ๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ DVR์„ ์ผœ๋ฉด ์ƒํ™ฉ์ด ๋‹ฌ๋ผ์ง€๋Š”๋ฐ ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ์— ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด VLAN์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ VLAN 3์— ํ•˜๋‚˜์˜ L0 ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ VxLAN ํŠธ๋ž˜ํ”ฝ์€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋…ธ๋“œ๋ฅผ ๋– ๋‚˜์ง€๋งŒ ์ผ์ข…์˜ ์ „์šฉ VLAN์— ์บก์Šํ™”๋ฉ๋‹ˆ๋‹ค.

์ปดํ“จํŒ… ๋…ธ๋“œ๋ฅผ ์ •๋ฆฌํ–ˆ์œผ๋‹ˆ ์ œ์–ด ๋…ธ๋“œ๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.


[heat-admin@overcloud-controller-0 ~]$ sudo ovs-appctl dpif/show
system@ovs-system: hit:930491 missed:825
  br-ex:
    br-ex 65534/1: (internal)
    eth0 1/2: (system)
    phy-br-ex 2/none: (patch: peer=int-br-ex)
  br-int:
    br-int 65534/3: (internal)
    int-br-ex 1/none: (patch: peer=phy-br-ex)
    patch-tun 2/none: (patch: peer=patch-int)
  br-tun:
    br-tun 65534/4: (internal)
    patch-int 1/none: (patch: peer=patch-tun)
    vxlan-c0a8ff13 3/5: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.15, remote_ip=192.168.255.19)
    vxlan-c0a8ff1a 2/5: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.15, remote_ip=192.168.255.26)
[heat-admin@overcloud-controller-0 ~]$

์‹ค์ œ๋กœ ๋ชจ๋“  ๊ฒƒ์ด ๋™์ผํ•˜๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์ง€๋งŒ IP ์ฃผ์†Œ๋Š” ๋” ์ด์ƒ ๋ฌผ๋ฆฌ์  ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์•„๋‹Œ ๊ฐ€์ƒ ๋ธŒ๋ฆฌ์ง€์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด ํฌํŠธ๊ฐ€ ํŠธ๋ž˜ํ”ฝ์ด ์™ธ๋ถ€ ์„ธ๊ณ„๋กœ ๋‚˜๊ฐ€๋Š” ํฌํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.


[heat-admin@overcloud-controller-0 ~]$ ifconfig br-ex
br-ex: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 192.168.255.15  netmask 255.255.255.0  broadcast 192.168.255.255
        inet6 fe80::5054:ff:fe20:a22f  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:20:a2:2f  txqueuelen 1000  (Ethernet)
        RX packets 803859  bytes 1732616116 (1.6 GiB)
        RX errors 0  dropped 63  overruns 0  frame 0
        TX packets 808475  bytes 121652156 (116.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[heat-admin@overcloud-controller-0 ~]$ 
[heat-admin@overcloud-controller-0 ~]$ sudo ovs-appctl fdb/show br-ex
 port  VLAN  MAC                Age
    3   100  28:c0:da:00:4d:d3   35
    1     0  28:c0:da:00:4d:d3   35
    1     0  52:54:00:98:e9:d6    0
LOCAL     0  52:54:00:20:a2:2f    0
    1     0  52:54:00:2c:08:9e    0
    3   100  52:54:00:20:a2:2f    0
    1     0  52:54:00:6a:ea:be    0
[heat-admin@overcloud-controller-0 ~]$ 

์ด ํฌํŠธ๋Š” br-ex ๋ธŒ๋ฆฌ์ง€์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ VLAN ํƒœ๊ทธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ํฌํŠธ๋Š” ๋ชจ๋“  VLAN์ด ํ—ˆ์šฉ๋˜๋Š” ํŠธ๋ ํฌ ํฌํŠธ์ž…๋‹ˆ๋‹ค. ์ด์ œ ํŠธ๋ž˜ํ”ฝ์€ vlan-id 0์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ ํƒœ๊ทธ ์—†์ด ์™ธ๋ถ€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์ถœ๋ ฅ.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

ํ˜„์žฌ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ์ปดํ“จํŒ… ๋…ธ๋“œ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋ธŒ๋ฆฌ์ง€, ๋™์ผํ•œ ํ„ฐ๋„์ด ๋‘ ๊ฐœ์˜ ์ปดํ“จํŒ… ๋…ธ๋“œ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์Šคํ† ๋ฆฌ์ง€ ๋…ธ๋“œ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด์ง€๋งŒ ์ดํ•ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์ด๋Ÿฌํ•œ ๋…ธ๋“œ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„์ด ๋ถˆ๋ช…์˜ˆ์Šค๋Ÿฌ์šธ ์ •๋„๋กœ ํ‰๋ฒ”ํ•˜๋‹ค๊ณ  โ€‹โ€‹๋งํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” IP ์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋œ ๋ฌผ๋ฆฌ์  ํฌํŠธ(eth0)๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. VxLAN ํ„ฐ๋„, ํ„ฐ๋„ ๋ธŒ๋ฆฌ์ง€ ๋“ฑ์ด ์—†์Šต๋‹ˆ๋‹ค. ์•„๋ฌด ์˜๋ฏธ๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— OV๊ฐ€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ด ๋…ธ๋“œ์—๋Š” ๋‘ ๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค(๋ฌผ๋ฆฌ์  ํฌํŠธ, ๋ณธ์ฒด ๋˜๋Š” ๋‘ ๊ฐœ์˜ VLAN - ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒƒ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๊ด€๋ฆฌ์šฉ์ด๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” ํŠธ๋ž˜ํ”ฝ์šฉ(VM ๋””์Šคํฌ์— ์“ฐ๊ธฐ) , ๋””์Šคํฌ์—์„œ ์ฝ๊ธฐ ๋“ฑ)

์šฐ๋ฆฌ๋Š” ์„œ๋น„์Šค๊ฐ€ ์—†์„ ๋•Œ ๋…ธ๋“œ์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ 4๊ฐœ์˜ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‹คํ–‰ํ•˜๊ณ  ์œ„์— ์„ค๋ช…๋œ ๊ตฌ์„ฑํ‘œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํฌํŠธ, ๊ฐ€์ƒ ๋ผ์šฐํ„ฐ ๋“ฑ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ ๋„คํŠธ์›Œํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

๊ฐ ์ปดํ“จํ„ฐ ๋…ธ๋“œ์—๋Š” ๋‘ ๊ฐœ์˜ ๊ฐ€์ƒ ๋จธ์‹ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Compute-0์„ ์˜ˆ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ํฌํ•จ๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh list 
 Id    Name                           State
----------------------------------------------------
 1     instance-00000001              running
 3     instance-00000003              running

[heat-admin@overcloud-novacompute-0 ~]$ 

๋จธ์‹ ์—๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ€์ƒ ์ธํ„ฐํŽ˜์ด์Šค(tap95d96a75-a0)๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh domiflist instance-00000001
Interface  Type       Source     Model       MAC
-------------------------------------------------------
tap95d96a75-a0 bridge     qbr95d96a75-a0 virtio      fa:16:3e:44:98:20

[heat-admin@overcloud-novacompute-0 ~]$ 

์ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” Linux ๋ธŒ๋ฆฌ์ง€์—์„œ ์ฐพ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-0 ~]$ sudo brctl show
bridge name     bridge id               STP enabled     interfaces
docker0         8000.0242904c92a8       no
qbr5bd37136-47          8000.5e4e05841423       no              qvb5bd37136-47
                                                        tap5bd37136-47
qbr95d96a75-a0          8000.de076cb850f6       no              qvb95d96a75-a0
                                                        tap95d96a75-a0
[heat-admin@overcloud-novacompute-0 ~]$ 

์ถœ๋ ฅ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ธŒ๋ฆฌ์ง€์—๋Š” tap95d96a75-a0 ๋ฐ qvb95d96a75-a0์ด๋ผ๋Š” ๋‘ ๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ๋Š” OpenStack์˜ ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ ์žฅ์น˜ ์œ ํ˜•์— ๋Œ€ํ•ด ์กฐ๊ธˆ ์‚ดํŽด๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
vtap - ์ธ์Šคํ„ด์Šค(VM)์— ์—ฐ๊ฒฐ๋œ ๊ฐ€์ƒ ์ธํ„ฐํŽ˜์ด์Šค
qbr - Linux ๋ธŒ๋ฆฌ์ง€
qvb ๋ฐ qvo - Linux ๋ธŒ๋ฆฌ์ง€ ๋ฐ Open vSwitch ๋ธŒ๋ฆฌ์ง€์— ์—ฐ๊ฒฐ๋œ vEth ์Œ
br-int, br-tun, br-vlan โ€” ๊ฐœ๋ฐฉํ˜• vSwitch ๋ธŒ๋ฆฌ์ง€
patch-, int-br-, phy-br- - ๋ธŒ๋ฆฌ์ง€๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐœ๋ฐฉํ˜• vSwitch ํŒจ์น˜ ์ธํ„ฐํŽ˜์ด์Šค
qg, qr, ha, fg, sg - ๊ฐ€์ƒ ์žฅ์น˜๊ฐ€ OVS์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐฉํ˜• vSwitch ํฌํŠธ

์•„์‹œ๋‹ค์‹œํ”ผ, ๋ธŒ๋ฆฌ์ง€์— vEth ์Œ์ธ qvb95d96a75-a0 ํฌํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋…ผ๋ฆฌ์ ์œผ๋กœ qvo95d96a75-a0์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ํ•ด๋‹น ํฌํŠธ๊ฐ€ ์–ด๋”˜๊ฐ€์— ์žˆ์Šต๋‹ˆ๋‹ค. OVS์— ์–ด๋–ค ํฌํŠธ๊ฐ€ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


[heat-admin@overcloud-novacompute-0 ~]$ sudo sudo ovs-appctl dpif/show
system@ovs-system: hit:526 missed:91
  br-ex:
    br-ex 65534/1: (internal)
    phy-br-ex 1/none: (patch: peer=int-br-ex)
  br-int:
    br-int 65534/2: (internal)
    int-br-ex 1/none: (patch: peer=phy-br-ex)
    patch-tun 2/none: (patch: peer=patch-int)
    qvo5bd37136-47 6/6: (system)
    qvo95d96a75-a0 3/5: (system)
  br-tun:
    br-tun 65534/3: (internal)
    patch-int 1/none: (patch: peer=patch-tun)
    vxlan-c0a8ff0f 3/4: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.19, remote_ip=192.168.255.15)
    vxlan-c0a8ff1a 2/4: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.19, remote_ip=192.168.255.26)
[heat-admin@overcloud-novacompute-0 ~]$ 

๋ณด์‹œ๋‹ค์‹œํ”ผ ํฌํŠธ๋Š” br-int์— ์žˆ์Šต๋‹ˆ๋‹ค. Br-int๋Š” ๊ฐ€์ƒ ๋จธ์‹  ํฌํŠธ๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ์Šค์œ„์น˜ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. qvo95d96a75-a0 ์™ธ์—๋„ qvo5bd37136-47 ํฌํŠธ๊ฐ€ ์ถœ๋ ฅ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‘ ๋ฒˆ์งธ ๊ฐ€์ƒ ๋จธ์‹ ์— ๋Œ€ํ•œ ํฌํŠธ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

์„ธ์‹ฌํ•œ ๋…์ž๊ฐ€ ์ฆ‰์‹œ ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์•ผ ํ•  ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋จธ์‹  ํฌํŠธ์™€ OVS ํฌํŠธ ์‚ฌ์ด์˜ Linux ๋ธŒ๋ฆฌ์ง€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์‚ฌ์‹ค์€ ์‹œ์Šคํ…œ์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด iptables์— ์ง€๋‚˜์ง€ ์•Š๋Š” ๋ณด์•ˆ ๊ทธ๋ฃน์ด ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. OVS๋Š” iptables์™€ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด "๋ชฉ๋ฐœ"์ด ๋ฐœ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ์žˆ์œผ๋ฉฐ ์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” conntrack์œผ๋กœ ๋Œ€์ฒด๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ๊ถ๊ทน์ ์œผ๋กœ ๊ณ„ํš์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

ํ•˜๋‚˜์˜ L2 ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ํ•˜๋‚˜์˜ ํ•˜์ดํผ๋ฐ”์ด์ €์— ์žˆ๋Š” ๋‘ ๋Œ€์˜ ์‹œ์Šคํ…œ

์ด ๋‘ VM์€ ๋™์ผํ•œ L2 ๋„คํŠธ์›Œํฌ ๋ฐ ๋™์ผํ•œ ํ•˜์ดํผ๋ฐ”์ด์ €์— ์žˆ์œผ๋ฏ€๋กœ ๋‘ ์‹œ์Šคํ…œ ๋ชจ๋‘ ๋™์ผํ•œ VLAN์— ์žˆ์œผ๋ฏ€๋กœ ๋‘˜ ์‚ฌ์ด์˜ ํŠธ๋ž˜ํ”ฝ์€ ๋…ผ๋ฆฌ์ ์œผ๋กœ br-int๋ฅผ ํ†ตํ•ด ๋กœ์ปฌ๋กœ ํ๋ฆ…๋‹ˆ๋‹ค.


[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh domiflist instance-00000001
Interface  Type       Source     Model       MAC
-------------------------------------------------------
tap95d96a75-a0 bridge     qbr95d96a75-a0 virtio      fa:16:3e:44:98:20

[heat-admin@overcloud-novacompute-0 ~]$ 
[heat-admin@overcloud-novacompute-0 ~]$ 
[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh domiflist instance-00000003
Interface  Type       Source     Model       MAC
-------------------------------------------------------
tap5bd37136-47 bridge     qbr5bd37136-47 virtio      fa:16:3e:83:ad:a4

[heat-admin@overcloud-novacompute-0 ~]$ 
[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-appctl fdb/show br-int 
 port  VLAN  MAC                Age
    6     1  fa:16:3e:83:ad:a4    0
    3     1  fa:16:3e:44:98:20    0
[heat-admin@overcloud-novacompute-0 ~]$ 

๋™์ผํ•œ L2 ๋„คํŠธ์›Œํฌ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ•˜์ดํผ๋ฐ”์ด์ €์— ์žˆ๋Š” ๋‘ ์‹œ์Šคํ…œ

์ด์ œ ๋™์ผํ•œ L2 ๋„คํŠธ์›Œํฌ์— ์žˆ์ง€๋งŒ ์„œ๋กœ ๋‹ค๋ฅธ ํ•˜์ดํผ๋ฐ”์ด์ €์— ์žˆ๋Š” ๋‘ ์‹œ์Šคํ…œ ๊ฐ„์— ํŠธ๋ž˜ํ”ฝ์ด ์–ด๋–ป๊ฒŒ ์ด๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์†”์งํžˆ ๋งํ•ด์„œ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ ํ•˜์ดํผ๋ฐ”์ด์ € ๊ฐ„์˜ ํŠธ๋ž˜ํ”ฝ์ด vxlan ํ„ฐ๋„์„ ํ†ต๊ณผํ•  ๋ฟ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ์‹œํ•  ๊ฐ€์ƒ ๋จธ์‹ ์˜ ์ฃผ์†Œ:

[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh domiflist instance-00000001
Interface  Type       Source     Model       MAC
-------------------------------------------------------
tap95d96a75-a0 bridge     qbr95d96a75-a0 virtio      fa:16:3e:44:98:20

[heat-admin@overcloud-novacompute-0 ~]$ 


[heat-admin@overcloud-novacompute-1 ~]$ sudo virsh domiflist instance-00000002
Interface  Type       Source     Model       MAC
-------------------------------------------------------
tape7e23f1b-07 bridge     qbre7e23f1b-07 virtio      fa:16:3e:72:ad:53

[heat-admin@overcloud-novacompute-1 ~]$ 

Compute-0์˜ br-int์— ์žˆ๋Š” ์ „๋‹ฌ ํ…Œ์ด๋ธ”์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-0 ~]$  sudo ovs-appctl fdb/show br-int | grep fa:16:3e:72:ad:53
    2     1  fa:16:3e:72:ad:53    1
[heat-admin@overcloud-novacompute-0 ~]

ํŠธ๋ž˜ํ”ฝ์€ ํฌํŠธ 2๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ข…๋ฅ˜์˜ ํฌํŠธ์ธ์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-ofctl show br-int | grep addr
 1(int-br-ex): addr:7e:7f:28:1f:bd:54
 2(patch-tun): addr:0a:bd:07:69:58:d9
 3(qvo95d96a75-a0): addr:ea:50:9a:3d:69:58
 6(qvo5bd37136-47): addr:9a:d1:03:50:3d:96
 LOCAL(br-int): addr:1a:0f:53:97:b1:49
[heat-admin@overcloud-novacompute-0 ~]$

์ด๊ฒƒ์ด patch-tun, ์ฆ‰ br-tun์˜ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. br-tun์˜ ํŒจํ‚ค์ง€์— ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-ofctl dump-flows br-tun | grep fa:16:3e:72:ad:53
 cookie=0x8759a56536b67a8e, duration=1387.959s, table=20, n_packets=1460, n_bytes=138880, hard_timeout=300, idle_age=0, hard_age=0, priority=1,vlan_tci=0x0001/0x0fff,dl_dst=fa:16:3e:72:ad:53 actions=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:2
[heat-admin@overcloud-novacompute-0 ~]$ 

ํŒจํ‚ท์€ VxLAN์— ํŒจํ‚ค์ง€๋˜์–ด ํฌํŠธ 2๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ํฌํŠธ 2๊ฐ€ ์–ด๋””๋กœ ์—ฐ๊ฒฐ๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-ofctl show br-tun | grep addr   
 1(patch-int): addr:b2:d1:f8:21:96:66
 2(vxlan-c0a8ff1a): addr:be:64:1f:75:78:a7
 3(vxlan-c0a8ff0f): addr:76:6f:b9:3c:3f:1c
 LOCAL(br-tun): addr:a2:5b:6d:4f:94:47
[heat-admin@overcloud-novacompute-0 ~]$

์ด๊ฒƒ์€ Compute-1์˜ vxlan ํ„ฐ๋„์ž…๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-appctl dpif/show | egrep vxlan-c0a8ff1a
    vxlan-c0a8ff1a 2/4: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.19, remote_ip=192.168.255.26)
[heat-admin@overcloud-novacompute-0 ~]$

Compute-1์œผ๋กœ ์ด๋™ํ•˜์—ฌ ํŒจํ‚ค์ง€์—์„œ ๋‹ค์Œ์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-1 ~]$ sudo ovs-appctl fdb/show br-int | egrep fa:16:3e:44:98:20
    2     1  fa:16:3e:44:98:20    1
[heat-admin@overcloud-novacompute-1 ~]$ 

Mac์€ Compute-1์˜ br-int ์ „๋‹ฌ ํ…Œ์ด๋ธ”์— ์žˆ์œผ๋ฉฐ ์œ„ ์ถœ๋ ฅ์—์„œ โ€‹โ€‹๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด br-tun์„ ํ–ฅํ•œ ํฌํŠธ์ธ ํฌํŠธ 2๋ฅผ ํ†ตํ•ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-1 ~]$ sudo ovs-ofctl show br-int | grep addr   
 1(int-br-ex): addr:8a:d7:f9:ad:8c:1d
 2(patch-tun): addr:46:cc:40:bd:20:da
 3(qvoe7e23f1b-07): addr:12:78:2e:34:6a:c7
 4(qvo3210e8ec-c0): addr:7a:5f:59:75:40:85
 LOCAL(br-int): addr:e2:27:b2:ed:14:46

๊ทธ๋Ÿฌ๋ฉด Compute-1์˜ br-int์— ๋Œ€์ƒ poppy๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-1 ~]$ sudo ovs-appctl fdb/show br-int | egrep fa:16:3e:72:ad:53
    3     1  fa:16:3e:72:ad:53    0
[heat-admin@overcloud-novacompute-1 ~]$ 

์ฆ‰, ์ˆ˜์‹ ๋œ ํŒจํ‚ท์€ ํฌํŠธ 3์œผ๋กœ ์ด๋™ํ•˜๋ฉฐ ๊ทธ ๋’ค์—๋Š” ์ด๋ฏธ ๊ฐ€์ƒ ๋จธ์‹  ์ธ์Šคํ„ด์Šค-00000003์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ƒ ์ธํ”„๋ผ ํ•™์Šต์„ ์œ„ํ•ด OpenStack์„ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์˜ ์žฅ์ ์€ ํ•˜์ดํผ๋ฐ”์ด์ € ๊ฐ„์˜ ํŠธ๋ž˜ํ”ฝ์„ ์‰ฝ๊ฒŒ ์บก์ฒ˜ํ•˜๊ณ  ์ด์— ๋”ฐ๋ผ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ผ์€ vnet ํฌํŠธ์—์„œ Compute-0 ๋ฐฉํ–ฅ์œผ๋กœ tcpdump๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


[root@hp-gen9 bormoglotx]# tcpdump -vvv -i vnet3
tcpdump: listening on vnet3, link-type EN10MB (Ethernet), capture size 262144 bytes

*****************omitted*******************

04:39:04.583459 IP (tos 0x0, ttl 64, id 16868, offset 0, flags [DF], proto UDP (17), length 134)
    192.168.255.19.39096 > 192.168.255.26.4789: [no cksum] VXLAN, flags [I] (0x08), vni 22
IP (tos 0x0, ttl 64, id 8012, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.1.85 > 10.0.1.88: ICMP echo request, id 5634, seq 16, length 64
04:39:04.584449 IP (tos 0x0, ttl 64, id 35181, offset 0, flags [DF], proto UDP (17), length 134)
    192.168.255.26.speedtrace-disc > 192.168.255.19.4789: [no cksum] VXLAN, flags [I] (0x08), vni 22
IP (tos 0x0, ttl 64, id 59124, offset 0, flags [none], proto ICMP (1), length 84)
    10.0.1.88 > 10.0.1.85: ICMP echo reply, id 5634, seq 16, length 64
	
*****************omitted*******************

์ฒซ ๋ฒˆ์งธ ์ค„์€ ์ฃผ์†Œ 10.0.1.85์˜ Patek์ด ์ฃผ์†Œ 10.0.1.88(ICMP ํŠธ๋ž˜ํ”ฝ)๋กœ ์ด๋™ํ•˜๊ณ  vni 22๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VxLAN ํŒจํ‚ท์œผ๋กœ ๋ž˜ํ•‘๋˜๊ณ  ํŒจํ‚ท์ด ํ˜ธ์ŠคํŠธ 192.168.255.19(compute-0)์—์„œ ํ˜ธ์ŠคํŠธ 192.168.255.26๋กœ ์ด๋™ํ•จ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. .1(์ปดํ“จํŒ…-XNUMX). VNI๊ฐ€ ovs์— ์ง€์ •๋œ ๊ฒƒ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

actions=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:2 ์ค„๋กœ ๋Œ์•„๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. 0x16์€ 16์ง„์ˆ˜ ์ฒด๊ณ„์˜ vni์ž…๋‹ˆ๋‹ค. ์ด ์ˆซ์ž๋ฅผ 10๋ฒˆ์งธ ์‹œ์Šคํ…œ์œผ๋กœ ๋ณ€ํ™˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


16 = 6*16^0+1*16^1 = 6+16 = 22

์ฆ‰, vni๋Š” ํ˜„์‹ค์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„์€ ์™•๋ณต ๊ตํ†ต๋Ÿ‰์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์„ค๋ช…ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋กœ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๋‘ ์‹œ์Šคํ…œ(๋„คํŠธ์›Œํฌ ๊ฐ„ ๋ผ์šฐํŒ…)

์˜ค๋Š˜์˜ ๋งˆ์ง€๋ง‰ ์‚ฌ๋ก€๋Š” ๊ฐ€์ƒ ๋ผ์šฐํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ ํ”„๋กœ์ ํŠธ ๋‚ด์˜ ๋„คํŠธ์›Œํฌ ๊ฐ„ ๋ผ์šฐํŒ…์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” DVR์ด ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ(๋‹ค๋ฅธ ๊ธฐ์‚ฌ์—์„œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค) ๋ผ์šฐํŒ…์ด ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ๋Š” ๋ณ„๋„์˜ ์—”ํ„ฐํ‹ฐ์— ๋ฐฐ์น˜๋˜์ง€ ์•Š๊ณ  ์ œ์–ด ๋…ธ๋“œ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € ๋ผ์šฐํŒ…์ด ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

$ ping 10.0.2.8
PING 10.0.2.8 (10.0.2.8): 56 data bytes
64 bytes from 10.0.2.8: seq=0 ttl=63 time=7.727 ms
64 bytes from 10.0.2.8: seq=1 ttl=63 time=3.832 ms
^C
--- 10.0.2.8 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 3.832/5.779/7.727 ms

์ด ๊ฒฝ์šฐ ํŒจํ‚ท์€ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ์ด๋™ํ•˜์—ฌ ๊ทธ๊ณณ์œผ๋กœ ๋ผ์šฐํŒ…๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ๊ฒŒ์ดํŠธ์›จ์ด์˜ poppy ์ฃผ์†Œ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด ์ธ์Šคํ„ด์Šค์˜ ARP ํ…Œ์ด๋ธ”์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

$ arp
host-10-0-1-254.openstacklocal (10.0.1.254) at fa:16:3e:c4:64:70 [ether]  on eth0
host-10-0-1-1.openstacklocal (10.0.1.1) at fa:16:3e:e6:2c:5c [ether]  on eth0
host-10-0-1-90.openstacklocal (10.0.1.90) at fa:16:3e:83:ad:a4 [ether]  on eth0
host-10-0-1-88.openstacklocal (10.0.1.88) at fa:16:3e:72:ad:53 [ether]  on eth0

์ด์ œ ๋Œ€์ƒ(10.0.1.254) fa:16:3e:c4:64:70์˜ ํŠธ๋ž˜ํ”ฝ์ด ์–ด๋””๋กœ ์ „์†ก๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-appctl fdb/show br-int | egrep fa:16:3e:c4:64:70
    2     1  fa:16:3e:c4:64:70    0
[heat-admin@overcloud-novacompute-0 ~]$ 

ํฌํŠธ 2๊ฐ€ ์–ด๋””๋กœ ์—ฐ๊ฒฐ๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-ofctl show br-int | grep addr
 1(int-br-ex): addr:7e:7f:28:1f:bd:54
 2(patch-tun): addr:0a:bd:07:69:58:d9
 3(qvo95d96a75-a0): addr:ea:50:9a:3d:69:58
 6(qvo5bd37136-47): addr:9a:d1:03:50:3d:96
 LOCAL(br-int): addr:1a:0f:53:97:b1:49
[heat-admin@overcloud-novacompute-0 ~]$ 

๋ชจ๋“  ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์ด๋ฉฐ ํŠธ๋ž˜ํ”ฝ์€ br-tun์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค vxlan ํ„ฐ๋„์ด ๋ž˜ํ•‘๋ ์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-ofctl dump-flows br-tun | grep fa:16:3e:c4:64:70
 cookie=0x8759a56536b67a8e, duration=3514.566s, table=20, n_packets=3368, n_bytes=317072, hard_timeout=300, idle_age=0, hard_age=0, priority=1,vlan_tci=0x0001/0x0fff,dl_dst=fa:16:3e:c4:64:70 actions=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:3
[heat-admin@overcloud-novacompute-0 ~]$ 

์„ธ ๋ฒˆ์งธ ํฌํŠธ๋Š” vxlan ํ„ฐ๋„์ž…๋‹ˆ๋‹ค.

[heat-admin@overcloud-controller-0 ~]$ sudo ovs-ofctl show br-tun | grep addr
 1(patch-int): addr:a2:69:00:c5:fa:ba
 2(vxlan-c0a8ff1a): addr:86:f0:ce:d0:e8:ea
 3(vxlan-c0a8ff13): addr:72:aa:73:2c:2e:5b
 LOCAL(br-tun): addr:a6:cb:cd:72:1c:45
[heat-admin@overcloud-controller-0 ~]$ 

์ œ์–ด ๋…ธ๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-controller-0 ~]$ sudo sudo ovs-appctl dpif/show | grep vxlan-c0a8ff1a
    vxlan-c0a8ff1a 2/5: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.15, remote_ip=192.168.255.26)
[heat-admin@overcloud-controller-0 ~]$ 

ํŠธ๋ž˜ํ”ฝ์ด ์ œ์–ด ๋…ธ๋“œ์— ๋„๋‹ฌํ–ˆ์œผ๋ฏ€๋กœ ์ œ์–ด ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜์—ฌ ๋ผ์šฐํŒ…์ด ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋‚ด๋ถ€์˜ ์ œ์–ด ๋…ธ๋“œ๋Š” ์ปดํ“จํŒ… ๋…ธ๋“œ์™€ ์ •ํ™•ํžˆ ๋™์ผํ•ด ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋ธŒ๋ฆฌ์ง€ XNUMX๊ฐœ๊ฐ€ ์žˆ๊ณ , br-ex์—๋งŒ ๋…ธ๋“œ๊ฐ€ ์™ธ๋ถ€๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฌผ๋ฆฌ์  ํฌํŠธ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์œผ๋กœ ์ธํ•ด ์ปดํ“จํŒ… ๋…ธ๋“œ์˜ ๊ตฌ์„ฑ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Linux ๋ธŒ๋ฆฌ์ง€, iptables ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋…ธ๋“œ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋ฐ ๊ฐ€์ƒ ๋ผ์šฐํ„ฐ ์ƒ์„ฑ๋„ ์ œ์–ด ๋…ธ๋“œ ๊ตฌ์„ฑ์— ํ‘œ์‹œ๋ฅผ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฒŒ์ดํŠธ์›จ์ด MAC ์ฃผ์†Œ๋Š” ์ œ์–ด ๋…ธ๋“œ์˜ br-int ์ „๋‹ฌ ํ…Œ์ด๋ธ”์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๊ฑฐ๊ธฐ์— ์žˆ๊ณ  ์–ด๋””์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ด…์‹œ๋‹ค:

[heat-admin@overcloud-controller-0 ~]$ sudo ovs-appctl fdb/show br-int | grep fa:16:3e:c4:64:70
    5     1  fa:16:3e:c4:64:70    1
[heat-admin@overcloud-controller-0 ~]$ 
[heat-admin@overcloud-controller-0 ~]$  sudo ovs-ofctl show br-int | grep addr
 1(int-br-ex): addr:2e:58:b6:db:d5:de
 2(patch-tun): addr:06:41:90:f0:9e:56
 3(tapca25a97e-64): addr:fa:16:3e:e6:2c:5c
 4(tap22015e46-0b): addr:fa:16:3e:76:c2:11
 5(qr-0c52b15f-8f): addr:fa:16:3e:c4:64:70
 6(qr-92fa49b5-54): addr:fa:16:3e:80:13:72
 LOCAL(br-int): addr:06:de:5d:ed:44:44
[heat-admin@overcloud-controller-0 ~]$ 

Mac์€ ํฌํŠธ qr-0c52b15f-8f์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. OpenStack์˜ ๊ฐ€์ƒ ํฌํŠธ ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉด ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ํฌํŠธ๋Š” ๋‹ค์–‘ํ•œ ๊ฐ€์ƒ ์žฅ์น˜๋ฅผ OVS์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ข€ ๋” ์ •ํ™•ํ•˜๊ฒŒ ๋งํ•˜๋ฉด qr์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ํ‘œํ˜„๋˜๋Š” ๊ฐ€์ƒ ๋ผ์šฐํ„ฐ์— ๋Œ€ํ•œ ํฌํŠธ์ด๋‹ค.

์„œ๋ฒ„์— ์–ด๋–ค ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-controller-0 ~]$ sudo  ip netns
qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe (id: 2)
qdhcp-7d541e74-1c36-4e1d-a7c4-0968c8dbc638 (id: 1)
qdhcp-67a3798c-32c0-4c18-8502-2531247e3cc2 (id: 0)
[heat-admin@overcloud-controller-0 ~]$ 

์ตœ๋Œ€ 0๊ฐœ ์‚ฌ๋ณธ. ํ•˜์ง€๋งŒ ์ด๋ฆ„์œผ๋กœ ํŒ๋‹จํ•˜๋ฉด ๊ฐ๊ฐ์˜ ๋ชฉ์ ์„ ์ง์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ID 1๊ณผ 0์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋Œ์•„๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค qrouter-4a2420d4-9b46c-1bd-aec86-1a299efXNUMXabe์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


[heat-admin@overcloud-controller-0 ~]$ sudo  ip netns exec qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe ip route
10.0.1.0/24 dev qr-0c52b15f-8f proto kernel scope link src 10.0.1.254 
10.0.2.0/24 dev qr-92fa49b5-54 proto kernel scope link src 10.0.2.254 
[heat-admin@overcloud-controller-0 ~]$ 

์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—๋Š” ์ด์ „์— ๋งŒ๋“  ๋‘ ๊ฐœ์˜ ๋‚ด๋ถ€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ƒ ํฌํŠธ๊ฐ€ ๋ชจ๋‘ br-int์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์ƒ mac ์ฃผ์†Œ๋กœ ํŒ๋‹จ๋˜๋Š” ํŠธ๋ž˜ํ”ฝ์ด ์ด ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ด๋™ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— qr-0c52b15f-8f ํฌํŠธ์˜ mac ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-controller-0 ~]$ sudo  ip netns exec qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe ifconfig qr-0c52b15f-8f
qr-0c52b15f-8f: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 10.0.1.254  netmask 255.255.255.0  broadcast 10.0.1.255
        inet6 fe80::f816:3eff:fec4:6470  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:c4:64:70  txqueuelen 1000  (Ethernet)
        RX packets 5356  bytes 427305 (417.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5195  bytes 490603 (479.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[heat-admin@overcloud-controller-0 ~]$ 

์ฆ‰, ์ด ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฒƒ์ด ํ‘œ์ค€ ๋ผ์šฐํŒ… ๋ฒ•์น™์— ๋”ฐ๋ผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์€ ํ˜ธ์ŠคํŠธ 10.0.2.8์„ ํ–ฅํ•˜๋ฏ€๋กœ ๋‘ ๋ฒˆ์งธ ์ธํ„ฐํŽ˜์ด์Šค qr-92fa49b5-54๋ฅผ ํ†ตํ•ด ์ข…๋ฃŒํ•˜๊ณ  vxlan ํ„ฐ๋„์„ ํ†ตํ•ด ์ปดํ“จํŒ… ๋…ธ๋“œ๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


[heat-admin@overcloud-controller-0 ~]$ sudo  ip netns exec qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe arp
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.1.88                ether   fa:16:3e:72:ad:53   C                     qr-0c52b15f-8f
10.0.1.90                ether   fa:16:3e:83:ad:a4   C                     qr-0c52b15f-8f
10.0.2.8                 ether   fa:16:3e:6c:ad:9c   C                     qr-92fa49b5-54
10.0.2.42                ether   fa:16:3e:f5:0b:29   C                     qr-92fa49b5-54
10.0.1.85                ether   fa:16:3e:44:98:20   C                     qr-0c52b15f-8f
[heat-admin@overcloud-controller-0 ~]$ 

๋ชจ๋“  ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์ด๋ฉฐ ๋†€๋ž„ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ 10.0.2.8์˜ poppy ์ฃผ์†Œ๊ฐ€ br-int์—์„œ ํ‘œ์‹œ๋˜๋Š” ์œ„์น˜๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-controller-0 ~]$ sudo ovs-appctl fdb/show br-int | grep fa:16:3e:6c:ad:9c
    2     2  fa:16:3e:6c:ad:9c    1
[heat-admin@overcloud-controller-0 ~]$ 
[heat-admin@overcloud-controller-0 ~]$ sudo ovs-ofctl show br-int | grep addr
 1(int-br-ex): addr:2e:58:b6:db:d5:de
 2(patch-tun): addr:06:41:90:f0:9e:56
 3(tapca25a97e-64): addr:fa:16:3e:e6:2c:5c
 4(tap22015e46-0b): addr:fa:16:3e:76:c2:11
 5(qr-0c52b15f-8f): addr:fa:16:3e:c4:64:70
 6(qr-92fa49b5-54): addr:fa:16:3e:80:13:72
 LOCAL(br-int): addr:06:de:5d:ed:44:44
[heat-admin@overcloud-controller-0 ~]$ 

์˜ˆ์ƒ๋Œ€๋กœ ํŠธ๋ž˜ํ”ฝ์€ br-tun์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ๋‹ค์Œ์œผ๋กœ ์–ด๋Š ํ„ฐ๋„๋กœ ์ด๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-controller-0 ~]$ sudo ovs-ofctl dump-flows br-tun | grep fa:16:3e:6c:ad:9c
 cookie=0x2ab04bf27114410e, duration=5346.829s, table=20, n_packets=5248, n_bytes=498512, hard_timeout=300, idle_age=0, hard_age=0, priority=1,vlan_tci=0x0002/0x0fff,dl_dst=fa:16:3e:6c:ad:9c actions=load:0->NXM_OF_VLAN_TCI[],load:0x63->NXM_NX_TUN_ID[],output:2
[heat-admin@overcloud-controller-0 ~]$
[heat-admin@overcloud-controller-0 ~]$ sudo ovs-ofctl show br-tun | grep addr
 1(patch-int): addr:a2:69:00:c5:fa:ba
 2(vxlan-c0a8ff1a): addr:86:f0:ce:d0:e8:ea
 3(vxlan-c0a8ff13): addr:72:aa:73:2c:2e:5b
 LOCAL(br-tun): addr:a6:cb:cd:72:1c:45
[heat-admin@overcloud-controller-0 ~]$ 
[heat-admin@overcloud-controller-0 ~]$ sudo sudo ovs-appctl dpif/show | grep vxlan-c0a8ff1a
    vxlan-c0a8ff1a 2/5: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.15, remote_ip=192.168.255.26)
[heat-admin@overcloud-controller-0 ~]$ 

ํŠธ๋ž˜ํ”ฝ์€ ์ปดํ“จํŒ…-1์„ ์œ„ํ•œ ํ„ฐ๋„๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ๊ธ€์Ž„, Compute-1์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. br-tun์—์„œ ํŒจํ‚ค์ง€๋Š” br-int๋กœ ์ด๋™ํ•˜๊ณ  ๊ฑฐ๊ธฐ์—์„œ ๊ฐ€์ƒ ๋จธ์‹  ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

[heat-admin@overcloud-controller-0 ~]$ sudo sudo ovs-appctl dpif/show | grep vxlan-c0a8ff1a
    vxlan-c0a8ff1a 2/5: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.15, remote_ip=192.168.255.26)
[heat-admin@overcloud-controller-0 ~]$ 
[heat-admin@overcloud-novacompute-1 ~]$ sudo ovs-appctl fdb/show br-int | grep fa:16:3e:6c:ad:9c
    4     2  fa:16:3e:6c:ad:9c    1
[heat-admin@overcloud-novacompute-1 ~]$ sudo ovs-ofctl show br-int | grep addr                  
 1(int-br-ex): addr:8a:d7:f9:ad:8c:1d
 2(patch-tun): addr:46:cc:40:bd:20:da
 3(qvoe7e23f1b-07): addr:12:78:2e:34:6a:c7
 4(qvo3210e8ec-c0): addr:7a:5f:59:75:40:85
 LOCAL(br-int): addr:e2:27:b2:ed:14:46
[heat-admin@overcloud-novacompute-1 ~]$ 

์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ์˜ฌ๋ฐ”๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค์ธ์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-novacompute-1 ~]$ brctl show
bridge name     bridge id               STP enabled     interfaces
docker0         8000.02429c001e1c       no
qbr3210e8ec-c0          8000.ea27f45358be       no              qvb3210e8ec-c0
                                                        tap3210e8ec-c0
qbre7e23f1b-07          8000.b26ac0eded8a       no              qvbe7e23f1b-07
                                                        tape7e23f1b-07
[heat-admin@overcloud-novacompute-1 ~]$ 
[heat-admin@overcloud-novacompute-1 ~]$ sudo virsh domiflist instance-00000004
Interface  Type       Source     Model       MAC
-------------------------------------------------------
tap3210e8ec-c0 bridge     qbr3210e8ec-c0 virtio      fa:16:3e:6c:ad:9c

[heat-admin@overcloud-novacompute-1 ~]$

์‚ฌ์‹ค ์šฐ๋ฆฌ๋Š” ํŒจํ‚ค์ง€ ์ „์ฒด๋ฅผ ๋‹ค ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ์„œ๋กœ ๋‹ค๋ฅธ vxlan ํ„ฐ๋„์„ ํ†ต๊ณผํ•˜๊ณ  ์„œ๋กœ ๋‹ค๋ฅธ VNI๋กœ ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์–ด๋–ค ์ข…๋ฅ˜์˜ VNI์ธ์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ œ์–ด ํฌํŠธ์—์„œ ๋คํ”„๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ํŠธ๋ž˜ํ”ฝ์ด ์œ„์— ์„ค๋ช…๋œ ๋Œ€๋กœ ์ •ํ™•ํ•˜๊ฒŒ ํ๋ฅด๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ Compute-0์— ๋Œ€ํ•œ ํ„ฐ๋„์—๋Š” ๋‹ค์Œ ์ž‘์—…=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:3์ด ์žˆ์Šต๋‹ˆ๋‹ค. 0x16์„ XNUMX์ง„์ˆ˜ ์ฒด๊ณ„๋กœ ๋ณ€ํ™˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


0x16 = 6*16^0+1*16^1 = 6+16 = 22

Compute-1์— ๋Œ€ํ•œ ํ„ฐ๋„์—๋Š” VNI:actions=load:0->NXM_OF_VLAN_TCI[],load:0x63->NXM_NX_TUN_ID[],output:2๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 0x63์„ XNUMX์ง„์ˆ˜ ์ฒด๊ณ„๋กœ ๋ณ€ํ™˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


0x63 = 3*16^0+6*16^1 = 3+96 = 99

์ด์ œ ๋คํ”„๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[root@hp-gen9 bormoglotx]# tcpdump -vvv -i vnet4 
tcpdump: listening on vnet4, link-type EN10MB (Ethernet), capture size 262144 bytes

*****************omitted*******************

04:35:18.709949 IP (tos 0x0, ttl 64, id 48650, offset 0, flags [DF], proto UDP (17), length 134)
    192.168.255.19.41591 > 192.168.255.15.4789: [no cksum] VXLAN, flags [I] (0x08), vni 22
IP (tos 0x0, ttl 64, id 49042, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.1.85 > 10.0.2.8: ICMP echo request, id 5378, seq 9, length 64
04:35:18.710159 IP (tos 0x0, ttl 64, id 23360, offset 0, flags [DF], proto UDP (17), length 134)
    192.168.255.15.38983 > 192.168.255.26.4789: [no cksum] VXLAN, flags [I] (0x08), vni 99
IP (tos 0x0, ttl 63, id 49042, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.1.85 > 10.0.2.8: ICMP echo request, id 5378, seq 9, length 64
04:35:18.711292 IP (tos 0x0, ttl 64, id 43596, offset 0, flags [DF], proto UDP (17), length 134)
    192.168.255.26.42588 > 192.168.255.15.4789: [no cksum] VXLAN, flags [I] (0x08), vni 99
IP (tos 0x0, ttl 64, id 55103, offset 0, flags [none], proto ICMP (1), length 84)
    10.0.2.8 > 10.0.1.85: ICMP echo reply, id 5378, seq 9, length 64
04:35:18.711531 IP (tos 0x0, ttl 64, id 8555, offset 0, flags [DF], proto UDP (17), length 134)
    192.168.255.15.38983 > 192.168.255.19.4789: [no cksum] VXLAN, flags [I] (0x08), vni 22
IP (tos 0x0, ttl 63, id 55103, offset 0, flags [none], proto ICMP (1), length 84)
    10.0.2.8 > 10.0.1.85: ICMP echo reply, id 5378, seq 9, length 64
	
*****************omitted*******************

์ฒซ ๋ฒˆ์งธ ํŒจํ‚ท์€ vni 192.168.255.19๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ 0(compute-192.168.255.15)์—์„œ ํ˜ธ์ŠคํŠธ 1(control-22)๋กœ์˜ vxlan ํŒจํ‚ท์ด๋ฉฐ, ๋‚ด๋ถ€์—๋Š” ํ˜ธ์ŠคํŠธ 10.0.1.85์—์„œ ํ˜ธ์ŠคํŠธ 10.0.2.8๋กœ ICMP ํŒจํ‚ท์ด ํŒจํ‚ค์ง•๋ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ๊ณ„์‚ฐํ•œ ๋Œ€๋กœ vni๋Š” ์ถœ๋ ฅ์—์„œ โ€‹โ€‹๋ณธ ๊ฒƒ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ํŒจํ‚ท์€ vni 192.168.255.15๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ 1(control-192.168.255.26)์—์„œ ํ˜ธ์ŠคํŠธ 1(compute-99)์œผ๋กœ์˜ vxlan ํŒจํ‚ท์œผ๋กœ, ๋‚ด๋ถ€์—๋Š” ํ˜ธ์ŠคํŠธ 10.0.1.85์—์„œ ํ˜ธ์ŠคํŠธ 10.0.2.8๋กœ ICMP ํŒจํ‚ท์ด ํŒจํ‚ค์ง•๋ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ๊ณ„์‚ฐํ•œ ๋Œ€๋กœ vni๋Š” ์ถœ๋ ฅ์—์„œ โ€‹โ€‹๋ณธ ๊ฒƒ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‘ ํŒจํ‚ท์€ 10.0.2.8๊ฐ€ ์•„๋‹Œ 10.0.1.85์˜ ๋ฐ˜ํ™˜ ํŠธ๋ž˜ํ”ฝ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œ์–ด ๋…ธ๋“œ ๊ตฌ์„ฑํ‘œ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

๊ทธ๊ฒŒ ๋‹ค์ธ ๊ฒƒ ๊ฐ™๋‚˜์š”? ์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐœ์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์žŠ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค:

[heat-admin@overcloud-controller-0 ~]$ sudo  ip netns
qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe (id: 2)
qdhcp-7d541e74-1c36-4e1d-a7c4-0968c8dbc638 (id: 1)
qdhcp-67a3798c-32c0-4c18-8502-2531247e3cc2 (id: 0)
[heat-admin@overcloud-controller-0 ~]$ 

ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์˜ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ๋“ฏ์ด, ๊ธฐ๊ณ„๊ฐ€ DHCP ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ ์ฃผ์†Œ๋ฅผ ๋ฐ›์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‘ ๋„คํŠธ์›Œํฌ 10.0.1.0/24 ๋ฐ 10.0.2.0/24์— ๋Œ€ํ•œ ๋‘ ๊ฐœ์˜ DHCP ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์‚ฌ์‹ค์ธ์ง€ ํ™•์ธํ•ด ๋ด…์‹œ๋‹ค. ์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—๋Š” DHCP ์„œ๋ฒ„ ์ž์ฒด์˜ ์ฃผ์†Œ์ธ 10.0.1.1 ์ฃผ์†Œ ํ•˜๋‚˜๋งŒ ์žˆ์œผ๋ฉฐ br-int์—๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-controller-0 ~]$ sudo ip netns exec qdhcp-67a3798c-32c0-4c18-8502-2531247e3cc2 ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 1  bytes 28 (28.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1  bytes 28 (28.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tapca25a97e-64: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 10.0.1.1  netmask 255.255.255.0  broadcast 10.0.1.255
        inet6 fe80::f816:3eff:fee6:2c5c  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:e6:2c:5c  txqueuelen 1000  (Ethernet)
        RX packets 129  bytes 9372 (9.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 49  bytes 6154 (6.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

์ œ์–ด ๋…ธ๋“œ์˜ ์ด๋ฆ„์— qdhcp-67a3798c-32c0-4c18-8502-2531247e3cc2๋ฅผ ํฌํ•จํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


[heat-admin@overcloud-controller-0 ~]$ ps -aux | egrep qdhcp-7d541e74-1c36-4e1d-a7c4-0968c8dbc638 
root      640420  0.0  0.0   4220   348 ?        Ss   11:31   0:00 dumb-init --single-child -- ip netns exec qdhcp-7d541e74-1c36-4e1d-a7c4-0968c8dbc638 /usr/sbin/dnsmasq -k --no-hosts --no-resolv --pid-file=/var/lib/neutron/dhcp/7d541e74-1c36-4e1d-a7c4-0968c8dbc638/pid --dhcp-hostsfile=/var/lib/neutron/dhcp/7d541e74-1c36-4e1d-a7c4-0968c8dbc638/host --addn-hosts=/var/lib/neutron/dhcp/7d541e74-1c36-4e1d-a7c4-0968c8dbc638/addn_hosts --dhcp-optsfile=/var/lib/neutron/dhcp/7d541e74-1c36-4e1d-a7c4-0968c8dbc638/opts --dhcp-leasefile=/var/lib/neutron/dhcp/7d541e74-1c36-4e1d-a7c4-0968c8dbc638/leases --dhcp-match=set:ipxe,175 --local-service --bind-dynamic --dhcp-range=set:subnet-335552dd-b35b-456b-9df0-5aac36a3ca13,10.0.2.0,static,255.255.255.0,86400s --dhcp-option-force=option:mtu,1450 --dhcp-lease-max=256 --conf-file= --domain=openstacklocal
heat-ad+  951620  0.0  0.0 112944   980 pts/0    S+   18:50   0:00 grep -E --color=auto qdhcp-7d541e74-1c36-4e1d-a7c4-0968c8dbc638
[heat-admin@overcloud-controller-0 ~]$ 

๊ทธ๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์œผ๋ฉฐ ์œ„ ์ถœ๋ ฅ์— ํ‘œ์‹œ๋œ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜„์žฌ ์ž„๋Œ€ ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[heat-admin@overcloud-controller-0 ~]$ cat /var/lib/neutron/dhcp/7d541e74-1c36-4e1d-a7c4-0968c8dbc638/leases
1597492111 fa:16:3e:6c:ad:9c 10.0.2.8 host-10-0-2-8 01:fa:16:3e:6c:ad:9c
1597491115 fa:16:3e:76:c2:11 10.0.2.1 host-10-0-2-1 *
[heat-admin@overcloud-controller-0 ~]$

๊ฒฐ๊ณผ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์ œ์–ด ๋…ธ๋“œ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค ์„ธํŠธ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์˜ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„ ์†Œ๊ฐœ

๊ธ€์Ž„์š”, ๋ช…์‹ฌํ•˜์„ธ์š”. ์ด๊ฒƒ์€ ๋‹จ์ง€ 4๊ฐœ์˜ ๋จธ์‹ , 2๊ฐœ์˜ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ๋ฐ 3๊ฐœ์˜ ๊ฐ€์ƒ ๋ผ์šฐํ„ฐ์ž…๋‹ˆ๋‹ค... ์ง€๊ธˆ ์—ฌ๊ธฐ์—๋Š” ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ ์ž์ฒด ๋„คํŠธ์›Œํฌ(๊ฒน์นจ)๊ฐ€ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ๋ผ์šฐํ„ฐ๊ฐ€ ๊บผ์กŒ๊ณ  ๊ฒฐ๊ตญ ํ…Œ์ŠคํŠธ ๋ฒค์น˜์—๋Š” ์ œ์–ด ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(๋‚ด๊ฒฐํ•จ์„ฑ์„ ์œ„ํ•ด์„œ๋Š” 300๊ฐœ์˜ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ์ฟผ๋Ÿผ์ด ์žˆ์–ด์•ผ ํ•จ). ์ƒ๊ฑฐ๋ž˜์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด "์•ฝ๊ฐ„" ๋” ๋ณต์žกํ•˜๋‹ค๋Š” ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์ด์ง€๋งŒ, ์ด ๊ฐ„๋‹จํ•œ ์˜ˆ์—์„œ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ XNUMX๊ฐœ์ธ์ง€ XNUMX๊ฐœ์ธ์ง€๋Š” ๋ฌผ๋ก  ์ค‘์š”ํ•˜์ง€๋งŒ ์šด์˜์˜ โ€‹โ€‹๊ด€์ ์—์„œ๋Š” ์ „์ฒด ๊ตฌ์กฐ์—์„œ๋Š” ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ณต๊ธ‰์—…์ฒด SDN์„ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๋”๋ผ๋„ ๋ง์ด์ฃ . ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กœ์› ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์˜๊ฒฌ/์ถ”๊ฐ€ ์‚ฌํ•ญ์ด ์žˆ๊ฑฐ๋‚˜ ์ œ๊ฐ€ ์™„์ „ํžˆ ๊ฑฐ์ง“๋ง์„ ํ•œ ๋ถ€๋ถ„์ด ์žˆ๋Š” ๊ฒฝ์šฐ(์ €๋Š” ์ธ๊ฐ„์ด๊ณ  ์ œ ์˜๊ฒฌ์€ ํ•ญ์ƒ ์ฃผ๊ด€์ ์ž…๋‹ˆ๋‹ค) ์ˆ˜์ •/์ถ”๊ฐ€ํ•ด์•ผ ํ•  ์‚ฌํ•ญ์„ ์ ์–ด์ฃผ์„ธ์š”. ๋ชจ๋“  ๋‚ด์šฉ์„ ์ˆ˜์ •/์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ Openstack(๋ฐ”๋‹๋ผ ๋ฐ ๊ณต๊ธ‰์—…์ฒด ๋ชจ๋‘)๊ณผ VMWare์˜ ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜์„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ช‡ ๋งˆ๋”” ๋ง์”€๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ์ด ์งˆ๋ฌธ์„ ๋„ˆ๋ฌด ์ž์ฃผ ๋ฐ›์•˜๋Š”๋ฐ ์†”์งํžˆ ๋งํ•˜์ž๋ฉด ์ด๋ฏธ ์ง€์ณค์ง€๋งŒ ์—ฌ์ „ํžˆ. ์ œ ์ƒ๊ฐ์—๋Š” ์ด ๋‘ ์†”๋ฃจ์…˜์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์–ด๋ ต์ง€๋งŒ ๋‘ ์†”๋ฃจ์…˜ ๋ชจ๋‘์— ๋‹จ์ ์ด ์žˆ์œผ๋ฉฐ ํ•˜๋‚˜์˜ ์†”๋ฃจ์…˜์„ ์„ ํƒํ•  ๋•Œ ์žฅ๋‹จ์ ์„ ๋”ฐ์ ธ๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋Š” ์ ์€ ํ™•์‹คํžˆ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OpenStack์ด ์ปค๋ฎค๋‹ˆํ‹ฐ ์ค‘์‹ฌ ์†”๋ฃจ์…˜์ด๋ผ๋ฉด VMWare๋Š” ์›ํ•˜๋Š” ๊ฒƒ(์ฝ๊ธฐ - ์ˆ˜์ต์„ฑ์ด ์žˆ๋Š” ๊ฒƒ)๋งŒ ์ˆ˜ํ–‰ํ•  ๊ถŒ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ด๋Š” ๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด OpenStack์€ ๊ณ ๊ฐ์œผ๋กœ๋ถ€ํ„ฐ ๋ˆ์„ ๋ฒ„๋Š” ๋ฐ ์ต์ˆ™ํ•œ ์ƒ์—… ํšŒ์‚ฌ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ ๊ฐ€์ง€ ํฌ๊ณ  ์ค‘์š”ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Nokia์—์„œ OpenStack์„ ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๊ณ  ์•ฝ๊ฐ„์˜ ๋น„์šฉ์œผ๋กœ Juniper(Contrail Cloud)์™€ ๊ฐ™์€ ์†”๋ฃจ์…˜์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ VMWare์—์„œ ๋ฒ—์–ด๋‚  ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. . ๋‚˜์—๊ฒŒ ์ด ๋‘ ๊ฐ€์ง€ ์†”๋ฃจ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Openstack(๊ณต๊ธ‰์—…์ฒด)์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ‡ํžŒ ๊ฐ„๋‹จํ•œ ์ผ€์ด์ง€์ด์ง€๋งŒ ํ‚ค๊ฐ€ ์žˆ๊ณ  ์–ธ์ œ๋“ ์ง€ ๋– ๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. VMWare๋Š” ํ™ฉ๊ธˆ ์ผ€์ด์ง€์ž…๋‹ˆ๋‹ค. ์†Œ์œ ์ž๊ฐ€ ์ผ€์ด์ง€ ์—ด์‡ ๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ฒซ ๋ฒˆ์งธ ์ œํ’ˆ์ด๋‚˜ ๋‘ ๋ฒˆ์งธ ์ œํ’ˆ์„ ํ™๋ณดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒƒ์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿฌํ•œ ์„ ํƒ์ด ์žˆ์—ˆ๋‹ค๋ฉด IT ํด๋ผ์šฐ๋“œ์šฉ VMWare(๋‚ฎ์€ ๋ถ€ํ•˜, ์†์‰ฌ์šด ๊ด€๋ฆฌ), ์ผ๋ถ€ ๊ณต๊ธ‰์—…์ฒด์˜ OpenStack(Nokia ๋ฐ Juniper๋Š” ๋งค์šฐ ์šฐ์ˆ˜ํ•œ ํ„ดํ‚ค ์†”๋ฃจ์…˜ ์ œ๊ณต), Telecom ํด๋ผ์šฐ๋“œ์šฉ ๋‘ ๊ฐ€์ง€ ์†”๋ฃจ์…˜์„ ๋ชจ๋‘ ์„ ํƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์ˆœ์ˆ˜ํ•œ IT ๋ชฉ์ ์œผ๋กœ Openstack์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€ํฌ๋กœ ์ฐธ์ƒˆ๋ฅผ ์˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ง€๋งŒ ์ค‘๋ณต์„ฑ ์™ธ์—๋Š” ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๊ธˆ๊ธฐ ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ†ต์‹ ์—์„œ VMWare๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํฌ๋“œ ๋žฉํ„ฐ(Ford Raptor)์—์„œ ์‡„์„์„ ์šด๋ฐ˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฒ‰๋ณด๊ธฐ์—๋Š” ์•„๋ฆ„๋‹ต์ง€๋งŒ ์šด์ „์ž๋Š” ํ•œ ๋ฒˆ์ด ์•„๋‹Œ 10๋ฒˆ์˜ ์ฃผํ–‰์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ œ ์ƒ๊ฐ์—๋Š” VMWare์˜ ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ์™„์ „ํ•œ ํ์‡„์„ฑ์ž…๋‹ˆ๋‹ค. ํšŒ์‚ฌ๋Š” vSAN์ด๋‚˜ ํ•˜์ดํผ๋ฐ”์ด์ € ์ปค๋„์˜ ๋‚ด์šฉ๊ณผ ๊ฐ™์ด ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ˆ˜์ต์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค. VMWare ์ „๋ฌธ๊ฐ€๊ฐ€ ๋˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ณต๊ธ‰์—…์ฒด์˜ ์ง€์›์ด ์—†์œผ๋ฉด ์šด๋ช…์ด ์ •ํ•ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. (์ €๋Š” ์‚ฌ์†Œํ•œ ์งˆ๋ฌธ์— ๋‹นํ™ฉํ•˜๋Š” VMWare ์ „๋ฌธ๊ฐ€๋ฅผ ์ž์ฃผ ๋งŒ๋‚ฉ๋‹ˆ๋‹ค.) ๋‚˜์—๊ฒŒ VMWare๋Š” ํ›„๋“œ๊ฐ€ ์ž ๊ธด ์ž๋™์ฐจ๋ฅผ ๊ตฌ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ํƒ€์ด๋ฐ ๋ฒจํŠธ๋ฅผ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ์ „๋ฌธ๊ฐ€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ์†”๋ฃจ์…˜์„ ํŒ๋งคํ•œ ์‚ฌ๋žŒ๋งŒ์ด ํ›„๋“œ๋ฅผ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์ €๋Š” ์ œ๊ฐ€ ์ ์‘ํ•  ์ˆ˜ ์—†๋Š” ์†”๋ฃจ์…˜์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ํ›„๋“œ ์•„๋ž˜๋กœ ๋“ค์–ด๊ฐˆ ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ, ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 20~30๊ฐœ์˜ ๊ฐ€์ƒ ๋จธ์‹ , 40~50๊ฐœ์˜ ๋„คํŠธ์›Œํฌ(๊ทธ ์ค‘ ์ ˆ๋ฐ˜์€ ์™ธ๋ถ€๋กœ ๋‚˜๊ฐ€๊ณ  ์‹ถ์–ดํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์ ˆ๋ฐ˜์€ ์š”์ฒญํ•จ)๋กœ ๊ตฌ์„ฑ๋œ ๋Œ€๊ทœ๋ชจ ๊ธฐ๋Šฅ์„ ํด๋ผ์šฐ๋“œ์—์„œ ์กฐ๋ฆฝํ•ด์•ผ ํ•  ๋•Œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. SR-IOV ๊ฐ€์†. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด๋Ÿฌํ•œ ์ž๋™์ฐจ๊ฐ€ ์ˆ˜์‹ญ ๋Œ€ ๋” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์„ฑ๋Šฅ์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๊ด€์ ๋„ ์žˆ์œผ๋ฏ€๋กœ ๋ฌด์—‡์„ ์„ ํƒํ• ์ง€๋Š” ์˜ค์ง ๋ณธ์ธ๋งŒ์ด ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ž์‹ ์˜ ์„ ํƒ์— ๋Œ€ํ•œ ์ฑ…์ž„์€ ๋ณธ์ธ์—๊ฒŒ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Nokia, Juniper, Red Hat, VMWare ๋“ฑ ์ตœ์†Œ 4๊ฐœ ์ œํ’ˆ์„ ๋ณด๊ณ  ๋งŒ์ ธ๋ณธ ์‚ฌ๋žŒ์˜ ์˜๊ฒฌ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋น„๊ตํ•  ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€