โถCore Service
Compute service: CPU, RAM ์ค์ (Provisioning) = Nova, EC2(AWS)
Storage service: SSD, HDD ์ค์ = Cinder, EBS(AWS)
Network service: IP, S/W, Router ์ค์ = Neutron, VPC(AWS)
Image service: OS, App = Glance, AMI(AWS)
Identity service: User ID/PW, Role, Group, Keypair = Keystone, IAM(AWS)
โถOptional service
Object service: URL ์ฃผ์ ์์ฑ, ๋ฐฑ์
= Swift, S3(AWS)
IaC service: Infra as a Code ์๋ํ ๋๊ตฌ = Heat, CloudFormation(AWS)
์ถ์ฒ: OpenStack Docs.
โถ OpenStack Compute(Nova)
- ๋๊ท๋ชจ์ ๊ฐ์๋จธ์ ์ ์ ๊ณตํ๊ฑฐ๋ ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ ์ธ์ ๋ ์ง ์ด์คํ ๋ฐ ์๋น์ค ํ์ฅ์ด ๊ฐ๋ฅํ ํด๋ผ์ฐ๋ ์ปดํจํ
์์คํ
์ ์์ฑํ๊ธฐ ์ํด ๋์์ธ๋ ์คํ์คํ์ ํต์ฌ ์๋น์ค
1) nova-api ์๋น์ค๋ ๋์๋ณด๋ ๋๋ ์ฝ์์ ํตํด ์ฌ์ฉ์์ ์ธ์คํด์ค ์์ฑ ์์ฒญ์ ๋ฐ์
2) nova-api ์๋น์ค๋ ์ด ์์ฒญ์ ๋ฉ์ธ์ง ํ ์๋น์ค๋ฅผ ํตํด ์ปดํจํฐ ๋
ธ๋์์ ์คํ์ค์ธ nova-compute ์๋น์ค์๊ฒ ์ ๋ฌ
3) nova-api๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ nova-compute ์๋น์ค๋ ์ปดํจํธ ๋
ธ๋์์ ์คํ์ค์ธ ํ์ดํผ๋ฐ์ด์ ์๊ฒ ์ด๋ฅผ ์ ๋ฌ
4) ํ์ดํผ๋ฐ์ด์ ๋ ์ด ์์ฒญ์ ๋ฐ์๋ค์ฌ ๋ฏธ๋ฆฌ ์ค์ ํด ๋์ ๋คํธ์ํฌ ๋ฐ Flavor ๋ฑ์ ์ฌ์ฉํด์ ์ธ์คํด์ค๋ฅผ ์์ฑ
5) ์ด๋ ๊ฒ ์์ฑ๋ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉ์๋ ์ฝ์ ์๋น์ค๋ฅผ ํตํด ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ณ ์ฌ์ฉ ํ ์ ์์. ๋ํ nova-novncproxy ์๋น์ค๋ฅผ ํตํด vnc๋ฅผ ํตํ ์ ์๋ ๊ฐ๋ฅํจ
โถ Neutron
- ์คํ์คํ ํด๋ผ์ฐ๋์์ ๊ฐ์ ๋คํธ์ํฌ ์ธํ๋ผ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ํ์ฉํ๋ ์๋น์ค๋ก ๋คํธ์ํฌ ์๋น์ค(FWaaS, LBaaS, VPNaaS), ์ธ๋ถ ๋ฐ ๋ด๋ถ ๋คํธ์ํฌ(Flat, VXLAN), ๋ผ์ฐํฐ(Floating IP), ๋ณด์๊ทธ๋ฃน(Security Group) ๋ฑ๊ณผ ๊ฐ์ด ์ค์ ๋คํธ์ํฌ ์ฅ๋น์ ๊ฐ์ ๋ฌผ๋ฆฌ์ ์์๋ค์ ๊ธฐ๋ฅ์ ๋ชจ๋ฐฉํด ์ด๋ค๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ์ ์ ๊ณต
1) neutron-server๋ ์ผ๋ฐ์ ์ผ๋ก ์ปจํธ๋กค๋ฌ ๋
ธ๋์ ์ค์น๋๋ฉฐ ๋คํธ์ํฌ, ์๋ธ๋ท ๋ฐ ๋ผ์ฐํฐ ์์ฑ ๋ฐ ๊ด๋ฆฌ ๋ฑ์ ์์ฒญ์ API๋ฅผ ํตํด ์ฒ๋ฆฌ
2) neutron L2 agent๋ ์ปดํจํธ ๋
ธ๋์ ์ค์น๋๋ฉฐ neuron-server์ ํต์ ํ์ฌ ํธ์คํธ ์์ ๋คํธ์ํฌ๋ฅผ ์ค์ ํ๋ ์ญํ ์ ํ๋ฉฐ LinuxBridge, OVS ๊ทธ๋ฆฌ๊ณ ๋ณด์๊ทธ๋ฃน ๋ฐ VLAN ํ๊น
๋ ์ฒ๋ฆฌ๊ฐ๋ฅ
3) neutron L3 agent๋ neutron-server๋ก๋ถํฐ ๋ผ์ฐํฐ๊ด๋ฆฌ, ๋ผ์ฐํ
๊ทธ๋ฆฌ๊ณ ํ๋กํ
IP์ ๋ํ ๋ฉ์์ง๋ฅผ ๋ฐ์์ ๊ด๋ฆฌ
4) neutron dhcp agent๋ IP์ฃผ์ ํ ๋น์ ์ฌ์ฉ
โถ Cinder
- ์คํ์คํ ๋ธ๋ก ์คํ ๋ฆฌ์ง Cinder๋ Nova ์๋น์ค๊ฐ ์์ฑํ ์ธ์คํด์ค์ ์ ์ฅ ๊ณต๊ฐ์ผ๋ก ์ฌ์ฉ๋๋ ๋ธ๋ก ์คํ ๋ฆฌ์ง๋ฅผ ์ ๊ณตํ๋ ์๋น์ค
1) cinder-api๋ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ ์๋น์ค๋ก๋ถํฐ API ์์ฒญ์ ๋ฐ์ cinder-volume ์๋น์ค์๊ฒ ์ ๋ฌํ๋ ์ญํ ์ ํจ
2) cinder-volume์ ๊ฐ์๋จธ์ ์๊ฒ ์คํ ๋ฆฌ์ง๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด์ ๋ฐฑ์๋์ ์กด์ฌํ๋ ๋ณผ๋ฅจ ๋๋ฐ์ด์ค์ ๋ํ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ๋ฑ์ ์์ฒญ์ ๋ํด ์๋ต. ์ด๋ฌํ ์์ฒญ์ ์๋ cinder-scheduler๋ก๋ถํฐ ๋์ฐฉํ๋ฉฐ ๋ณผ๋ฅจ์ ์์ฑ, ์์ ๋๋ ์ญ์ ํ ์ ์์
3) cinder-scheduler๋ nova-scheduler์ฒ๋ผ ๋ณผ๋ฅจ์ ์์ฑํ ์ ์๋ ์ต์ ์ ์คํ ๋ฆฌ์ง ๋
ธ๋๋ฅผ ์ ํํ๋ ์ญํ ์ ํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์ปจํธ๋กค๋ฌ ๋
ธ๋์์ ์คํ๋จ. ๊ทธ๋ฐ ํ ์์ฒญ ๋ด์ฉ์ ์งํํ๊ธฐ ์ํด์ ๊ทธ ์ ์ ๋ ํธ์คํธ์ ์์นํ cinder-volume๊ณผ ์ง์์ ์ผ๋ก ์์ฌ ์ํต์ ์งํํจ
โถSwift
- ์คํ์คํ ์ค๋ธ์ ํธ ์คํ ๋ฆฌ์ง Swift๋ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์ HTTPํ๋กํ ์ฝ์ ํตํด ์ ๊ทผ์ด ๊ฐ๋ฅํ ์คํ ๋ฆฌ์ง ์์คํ
์ ์ ๊ณตํ๋ ์๋น์ค(์ค๋ธ์ ํธ=๋น๋์ค, ์ด๋ฏธ์ง, ๋ฌธ์ํ์ผ ๋ฑ)
1) swift-proxy-server๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์คํ์คํ ์ค๋ธ์ ํธ ์คํ ๋ฆฌ์ง API์ HTTP ์์ฒญ์ ๋ฐ์๋ค์. ์ด๋ฌํ ์์ฒญ์ ํ์ผ์ ์
๋ก๋ํ๊ณ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์ปจํ
์ด๋๋ฅผ ์์ ํ ๊ฒฝ์ฐ ํ์ํจ, ๋ํ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ํ์ผ ๋๋ ์ปจํ
์ด๋์ ๋ชฉ๋ก๋ ์ ๊ณตํจ
2) swift-account-server๋ ์ค๋ธ์ ํธ ์คํ ๋ฆฌ์ง์์ ์ ์๋ ๊ณ์ ๋ฐ account ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ์ปจํ
์ด๋ ๋ชฉ๋ก์ ๊ด๋ฆฌ
3) swift-container-server๋ ์ค๋ธ์ ํธ ์คํ ๋ฆฌ์ง์์ ์ปจํ
์ด๋ ๋๋ ํด๋์ ๋งคํ์ ๋ณด์ ์คํ ๋ฆฌ์ง ์ ์ฑ
์ ๊ด๋ฆฌํ๊ณ ์ปจํ
์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํน์ ์ปจํ
์ด๋์ ํฌํจ๋ ์ค๋ธ์ ํธ ๋ชฉ๋ก๋ ๊ด๋ฆฌ
4) swift-object-server๋ ์ค์ ๋ฐ์ดํฐ์ธ ์ค๋ธ์ ํธ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํ๊ณ ์ญ์ ํ๋ ์ญํ ์ ํจ