ํด๋ผ์ฐ๋ ์ปดํจํ
์ ์ฐ๋ฆฌ ์ถ ์์ผ๋ก ์ ์ ๋ ๊น์์ด ์นจํฌํ๊ณ ์์ผ๋ฉฐ, ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ํ ๋ฒ์ด๋ผ๋ ์ฌ์ฉํด๋ณด์ง ์์ ์ฌ๋์ ์์ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ํด๋ผ์ฐ๋๊ฐ ์ ํํ ๋ฌด์์ธ์ง, ์ด๋ป๊ฒ ์๋ํ๋์ง ์๋ ์ฌ๋์ ๊ฑฐ์ ์์ผ๋ฉฐ ์์ด๋์ด ์์ค์์๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. 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์ ํฌํจ๋ ๊ฐ ๊ตฌ์ฑ ์์๋ ํน์ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค. ์ด ๋ถ์ฐ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ํ ๊ธฐ๋ฅ ๊ตฌ์ฑ ์์ ์งํฉ์ ์๋ฃจ์ ์ ํฌํจํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ถ ๊ตฌ์ฑ ์์๋ ๋ฃจํธ ๊ตฌ์ฑ ์์์ด๋ฏ๋ก ์ด๋ฅผ ์ ๊ฑฐํ๋ฉด ์๋ฃจ์ ์ ์ฒด๊ฐ ์์ ํ ๋๋ ๋ถ๋ถ์ ์ผ๋ก ์๋ํ์ง ์๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฅ๋ฉ๋๋ค.
- ๋์๋ณด๋ โ OpenStack ์๋น์ค ๊ด๋ฆฌ๋ฅผ ์ํ ์น ๊ธฐ๋ฐ GUI
- ์์ง ๋ค๋ฅธ ์๋น์ค์ ๋ํ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์ฌ์ฉ์ ์๊ฒฉ ์ฆ๋ช ๋ฐ ํด๋น ์ญํ ์ ๊ด๋ฆฌํ๋ ์ค์ ์ง์ค์ ID ์๋น์ค์ ๋๋ค.
- ์ค์ฑ์ - ๋ค์ํ OpenStack ์๋น์ค์ ์ธํฐํ์ด์ค ๊ฐ ์ฐ๊ฒฐ์ ์ ๊ณตํ๋ ๋คํธ์ํฌ ์๋น์ค(VM ๊ฐ์ ์ฐ๊ฒฐ ๋ฐ ์ธ๋ถ ์ธ๊ณ์ ๋ํ ์ก์ธ์ค ํฌํจ)
- ์ ๋ โ ๊ฐ์ ๋จธ์ ์ฉ ๋ธ๋ก ์คํ ๋ฆฌ์ง์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ ์ฑ โ ๊ฐ์ ๋จธ์ ์ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ
- ์ฌ๊ด โ ๊ฐ์ ๋จธ์ ์ด๋ฏธ์ง ๋ฐ ์ค๋ ์ท ์ ์ฅ์
- ๋น ๋ฅธ โ ์ ์ฅ์ ๊ฐ์ฒด์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ด๊ณ ๊ณ โ ์๊ฒฉ ์ธก์ ์ ์์งํ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ์๋น๋๋ ๋ฆฌ์์ค๋ฅผ ์ธก์ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์๋น์ค
- ์ด โ ๋ฆฌ์์ค ์๋ ์์ฑ ๋ฐ ํ๋ก๋น์ ๋์ ์ํ ํ ํ๋ฆฟ ๊ธฐ๋ฐ ์กฐ์
๋ชจ๋ ํ๋ก์ ํธ์ ๊ทธ ๋ชฉ์ ์ ์ ์ฒด ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค.
๊ฐ OpenStack ๊ตฌ์ฑ ์์๋ ํน์ ๊ธฐ๋ฅ์ ์ํํ๊ณ ํด๋น ๊ธฐ๋ฅ์ ๊ด๋ฆฌํ๊ณ ๋ค๋ฅธ ํด๋ผ์ฐ๋ ์ด์ ์ฒด์ ์๋น์ค์ ์ํธ ์์ฉํ์ฌ ํตํฉ ์ธํ๋ผ๋ฅผ ์์ฑํ๋ API๋ฅผ ์ ๊ณตํ๋ ์๋น์ค์ ๋๋ค. ์๋ฅผ ๋ค์ด, Nova๋ ์ปดํจํ ๋ฆฌ์์ค ๊ด๋ฆฌ์ ์ด๋ฌํ ๋ฆฌ์์ค ๊ตฌ์ฑ์ ์ก์ธ์คํ๊ธฐ ์ํ API๋ฅผ ์ ๊ณตํ๊ณ , Glance๋ ์ด๋ฏธ์ง ๊ด๋ฆฌ์ ์ด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ API๋ฅผ ์ ๊ณตํ๊ณ , Cinder๋ ๋ธ๋ก ์คํ ๋ฆฌ์ง์ ์ด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ API๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ ๊ธฐ๋ฅ์ ๋งค์ฐ ๊ธด๋ฐํ๊ฒ ์ํธ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค.
ํ์ง๋ง ๋ฐ์ง๊ณ ๋ณด๋ฉด OpenStack์์ ์คํ๋๋ ๋ชจ๋ ์๋น์ค๋ ๊ฒฐ๊ตญ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ผ์ข ์ ๊ฐ์ ๋จธ์ (ํน์ ์ปจํ ์ด๋)์ ๋๋ค. ์ง๋ฌธ์ด ์๊น๋๋ค. ์ ๊ทธ๋ ๊ฒ ๋ง์ ์์๊ฐ ํ์ํ๊ฐ์?
OpenStack์์ ๊ฐ์ ๋จธ์ ์ ์์ฑํ๊ณ ์ด๋ฅผ ๋คํธ์ํฌ ๋ฐ ์๊ตฌ ์คํ ๋ฆฌ์ง์ ์ฐ๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- Horizon(๋์๋ณด๋)์ ํตํ ์์ฒญ์ด๋ CLI๋ฅผ ํตํ ์์ฒญ์ด๋ ๋จธ์ ์์ฑ ์์ฒญ์ ์์ฑํ ๋ ๊ฐ์ฅ ๋จผ์ ๋ฐ์ํ๋ ์ผ์ Keystone์ ๋ํ ์์ฒญ ์น์ธ์ ๋๋ค. ๋จธ์ ์ ์์ฑํ ์ ์์ต๋๊น? ์ด ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ถ๋ฆฌ, ์ด์ ํ ๋น๋ ๋ฑ์ ํ์ธํ์ธ์.
- Keystone์ ์์ฒญ์ ์ธ์ฆํ๊ณ ์๋ต ๋ฉ์์ง์ ์ธ์ฆ ํ ํฐ์ ์์ฑํฉ๋๋ค. ์ด ํ ํฐ์ ๋์ค์ ์ฌ์ฉ๋ฉ๋๋ค. Keystone์ผ๋ก๋ถํฐ ์๋ต์ ๋ฐ์ ํ ์์ฒญ์ Nova(nova api)๋ก ์ ์ก๋ฉ๋๋ค.
- Nova-api๋ ์ด์ ์ ์์ฑ๋ ์ธ์ฆ ํ ํฐ์ ์ฌ์ฉํ์ฌ Keystone์ ์ฐ๋ฝํ์ฌ ์์ฒญ์ ์ ํจ์ฑ์ ํ์ธํฉ๋๋ค.
- Keystone์ ์ธ์ฆ์ ์ํํ๊ณ ์ด ์ธ์ฆ ํ ํฐ์ ๊ธฐ๋ฐ์ผ๋ก ๊ถํ ๋ฐ ์ ํ ์ฌํญ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Nova-api๋ nova-database์ ์ VM์ ๋ํ ํญ๋ชฉ์ ์์ฑํ๊ณ ๋จธ์ ์์ฑ ์์ฒญ์ nova-scheduler์ ์ ๋ฌํฉ๋๋ค.
- Nova-scheduler๋ ์ง์ ๋ ๋งค๊ฐ๋ณ์, ๊ฐ์ค์น ๋ฐ ์์ญ์ ๊ธฐ๋ฐ์ผ๋ก VM์ด ๋ฐฐํฌ๋ ํธ์คํธ(์ปดํจํฐ ๋ ธ๋)๋ฅผ ์ ํํฉ๋๋ค. ์ด์ ๋ํ ๊ธฐ๋ก๊ณผ VM ID๊ฐ nova-database์ ๊ธฐ๋ก๋ฉ๋๋ค.
- ๋ค์์ผ๋ก, nova-scheduler๋ nova-compute์ ์ ์ํ์ฌ ์ธ์คํด์ค ๋ฐฐํฌ๋ฅผ ์์ฒญํฉ๋๋ค. Nova-compute๋ nova-conductor์ ์ ์ํ์ฌ ๊ธฐ๊ณ ๋งค๊ฐ๋ณ์์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ต๋๋ค(nova-conductor๋ nova-database์ nova-compute ์ฌ์ด์์ ํ๋ก์ ์๋ฒ ์ญํ ์ ํ๋ nova ์์๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด nova-database์ ๋ํ ์์ฒญ ์๋ฅผ ์ ํํฉ๋๋ค) ์ผ๊ด์ฑ ๋ถํ ๊ฐ์).
- Nova-conductor๋ nova-database์์ ์์ฒญ๋ ์ ๋ณด๋ฅผ ์์ ํ์ฌ nova-compute์ ์ ๋ฌํฉ๋๋ค.
- ๋ค์์ผ๋ก nova-compute๋ ์์ ์ ํธ์ถํ์ฌ ์ด๋ฏธ์ง ID๋ฅผ ์ป์ต๋๋ค. Glace๋ Keystone์์ ์์ฒญ์ ๊ฒ์ฆํ๊ณ ์์ฒญ๋ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค.
- Nova-compute๋ ์ค์ฑ์์ ์ ์ดํ์ฌ ๋คํธ์ํฌ ๋งค๊ฐ๋ณ์์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ต๋๋ค. Glance์ ์ ์ฌํ๊ฒ Neutron์ Keystone์์ ์์ฒญ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํญ๋ชฉ(ํฌํธ ์๋ณ์ ๋ฑ)์ ์์ฑํ๊ณ ํฌํธ ์์ฑ ์์ฒญ์ ์์ฑํ ํ ์์ฒญ๋ ์ ๋ณด๋ฅผ nova-compute์ ๋ฐํํฉ๋๋ค.
- Nova-compute์ ๊ฐ์ ๋จธ์ ์ ๋ณผ๋ฅจ์ ํ ๋นํด ๋ฌ๋ผ๋ ์์ฒญ์ผ๋ก cinder์ ์ฐ๋ฝํฉ๋๋ค. Glance์ ๋ง์ฐฌ๊ฐ์ง๋ก Cider๋ Keystone์์ ์์ฒญ์ ๊ฒ์ฆํ๊ณ ๋ณผ๋ฅจ ์์ฑ ์์ฒญ์ ์์ฑํ ํ ์์ฒญ๋ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค.
- 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์ ์์ํ ๋ ๋คํธ์ํฌ ์๋น์ค๋ ๋ค์์ ์ํํฉ๋๋ค.
- ํน์ VM(๋๋ ํฌํธ)์ ๋ํ ํฌํธ๋ฅผ ์์ฑํ๊ณ ์ด์ ๋ํด DHCP ์๋น์ค์ ์๋ฆฝ๋๋ค.
- ์๋ก์ด ๊ฐ์ ๋คํธ์ํฌ ์ฅ์น๊ฐ ์์ฑ๋ฉ๋๋ค(libvirt๋ฅผ ํตํด).
- 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