OpenStack Zed ์๋๊ตฌ์ถ-7.Networking service – neutron installation(1)-OVN
Neutron ์๋น์ค๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ๊ตฌ์ฑํ๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ, ์๋น์ค ์๊ฒฉ ์ฆ๋ช ๋ฑ๋ก, ๊ทธ๋ฆฌ๊ณ API ์๋ํฌ์ธํธ ์์ฑ์ ์๋ฃํด์ผ ํฉ๋๋ค.
Neutron์ ์ค์ ์ ๋ณด๋ฅผ ์ ์ฅํ DB๋ฅผ ์์ฑํฉ๋๋ค.
-- MariaDB ์ ์
mysql -u root -p
-- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
CREATE DATABASE neutron;
-- ๊ถํ ๋ถ์ฌ (NEUTRON_DBPASS๋ ์ค์ ์ฌ์ฉํ ์ํธ๋ก ๊ต์ฒดํ์ธ์)
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
FLUSH PRIVILEGES;
EXIT;
Keystone์ Neutron ์๋น์ค๋ฅผ ๋ฑ๋กํ์ฌ ์ธ์ฆ์ด ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค.
# admin ํ๊ฒฝ๋ณ์ ๋ก๋
source userinfo
# 1. neutron ์ฌ์ฉ์ ์์ฑ
openstack user create --domain default --password-prompt neutron
# 2. ์ฌ์ฉ์์๊ฒ admin ์ญํ ๋ถ์ฌ
openstack role add --project service --user neutron admin
# 3. ์๋น์ค ์ํฐํฐ(Entity) ์์ฑ
openstack service create --name neutron --description "OpenStack Networking" network
๋ค๋ฅธ ์๋น์ค๋ค์ด Neutron API์ ์ ๊ทผํ ์ ์๋๋ก ์ฃผ์๋ฅผ ๋ฑ๋กํฉ๋๋ค.
# Public ์๋ํฌ์ธํธ
openstack endpoint create --region RegionOne network public http://controller:9696
# Internal ์๋ํฌ์ธํธ
openstack endpoint create --region RegionOne network internal http://controller:9696
# Admin ์๋ํฌ์ธํธ
openstack endpoint create --region RegionOne network admin http://controller:9696
์ด ๊ฐ์ด๋๋ Controller ๋ ธ๋๊ฐ ๋คํธ์ํฌ ์๋น์ค๊น์ง ์ง์ ์ํํ๋๋ก ๊ตฌ์ฑํ๋ฉฐ, OVN(Open Virtual Network) ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค.
์ปจํธ๋กค๋ฌ ๋ ธ๋์์ ์๋ ํจํค์ง๋ค์ ์ค์นํฉ๋๋ค.
--enablerepo๋ก ์ค์นํ์ฌ ์ฒ์์ ๋ฌถ์ด ๋์๋ epel ์ ์ฅ์๋ฅผ ์ ์ ํ์ฑํํฉ๋๋ค.
# Zed, EPEL, CRB ์ ์ฅ์ ํ์ฑํ ํ ์ค์น
dnf --enablerepo=centos-openstack-zed,epel,crb -y install \
openstack-neutron openstack-neutron-ml2 \
ovn-2021-central
์ปจํธ๋กค๋ฌ IP($172.30.1.146$)๋ฅผ ๋ฐ์ํ์ฌ ์ค์ ์ ์์ ํฉ๋๋ค.
mv /etc/neutron/neutron.conf /etc/neutron/neutron.conf.org
vi /etc/neutron/neutron.conf
[์ฃผ์ ์ค์ ๋ด์ฉ]
[DEFAULT]
# ์ปจํธ๋กค๋ฌ ์์ ์ ๊ฐ๋ฆฌํค๋๋ก ์ค์
bind_host = 172.30.1.146
core_plugin = ml2
service_plugins = ovn-router
auth_strategy = keystone
transport_url = rabbit://openstack:RABBIT_PASS@172.30.1.146:5672/
[keystone_authtoken]
www_authenticate_uri = http://172.30.1.146:5000
auth_url = http://172.30.1.146:5000
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS
[database]
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@172.30.1.146/neutron_ml2
[nova]
auth_url = http://172.30.1.146:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS
/etc/neutron/plugins/ml2/ml2_conf.ini์์ OVN DB ์ฃผ์๋ฅผ ์ปจํธ๋กค๋ฌ IP๋ก ์ง์ ํฉ๋๋ค.
[ovn]
# Controller(Network ๊ฒธ์ฉ) ๋
ธ๋์ IP์ OVN DB ํฌํธ ์ค์
ovn_nb_connection = tcp:172.30.1.146:6641
ovn_sb_connection = tcp:172.30.1.146:6642
ovn_l3_scheduler = leastloaded
ovn_metadata_enabled = True
1. Open vSwitch ์ค์ (OVSDB ์๊ฒฉ ์ ์ ํ์ฉ)
/etc/sysconfig/openvswitch ํ์ผ ์์ (28๋ฒ ๋ผ์ธ ๊ทผ์ฒ):
OPTIONS="--ovsdb-server-options='--remote=ptcp:6640:127.0.0.1'"
์๋น์ค ์์ ๋ฐ ๋ธ๋ฆฟ์ง ์์ฑ:
systemctl enable --now openvswitch
ovs-vsctl add-br br-int
2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ ๋ฐ ์ฌ๋ณผ๋ฆญ ๋งํฌ
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
su -s /bin/bash neutron -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini upgrade head"
3. OVN ์๋น์ค ๊ธฐ๋ ๋ฐ DB ์ฃผ์ ๋ฐ์ธ๋ฉ
systemctl enable --now ovn-northd
# ์ปจํธ๋กค๋ฌ IP(172.30.1.146)๋ก OVN DB ์ฐ๊ฒฐ ์ค์
ovn-nbctl set-connection ptcp:6641:172.30.1.146 -- set connection . inactivity_probe=60000
ovn-sbctl set-connection ptcp:6642:172.30.1.146 -- set connection . inactivity_probe=60000
| ํญ๋ชฉ | ์ค๋ช | ์์ ๊ฐ |
| NEUTRON_DBPASS | MariaDB neutron_ml2 ์ ์ ์ํธ | neutron_db_pass |
| NEUTRON_PASS | Keystone neutron ์ฌ์ฉ์ ์ํธ | neutron_user_pass |
| RABBIT_PASS | ๋ฉ์์ง ํ(RabbitMQ) ์ ์ ์ํธ | rabbit_pass |
- ํ์ธ


OVN ๊ตฌ์กฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ **"๋คํธ์ํฌ์ ์ค๊ณ๋"**์ **"์ค์ ํ์ฅ ์ง์์"**๋ก ๋๋ฉ๋๋ค.
๋ธ๋ก๊ทธ์ ์ด ํ๋ฆ์ ๋ฃ์ด์ฃผ์๋ฉด ๋ ์๋ค์ด OVN์ ๊ตฌ์กฐ๋ฅผ ์๋ฒฝํ ์ดํดํ ์ ์์ต๋๋ค.
Open vSwitch์ OVN์์ ํต์ ๋ฐฉ์์ ์ค์ ํ ๋ ์๊ธ์ **'p'**๋ **Passive(์๋ํ)**๋ฅผ ์๋ฏธํฉ๋๋ค.
OVN(Open Virtual Network) ๊ตฌ์กฐ๋ ํฌ๊ฒ **์ค๊ณ(Controller)**์ ์คํ(Compute) ๋ ธ๋๋ก ๋๋์ด 4๋จ๊ณ์ ์ ๊ธฐ์ ์ธ ํ๋ฆ์ผ๋ก ์์ง์ ๋๋ค. ํนํ 3๋จ๊ณ๋ถํฐ๋ ๊ฐ ์ปดํจํธ ๋ ธ๋์ ์ค์น๋ ์์ด์ ํธ๋ค์ด ์์จ์ ์ผ๋ก ๋์ํ๋ค๋ ์ ์ด ํต์ฌ์ ๋๋ค.
| ๋จ๊ณ | ์ฃผ์ฒด | ์คํ ์์น | ๋์ ๋ด์ฉ | ๋น์ |
| 1๋จ๊ณ | Neutron Server | Controller | ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์ **NB DB(6641)**์ ์ ์ฅ | ์ค๊ณ๋ ์์ฑ |
| 2๋จ๊ณ | ovn-northd | Controller | NB DB๋ฅผ ์ฝ์ด ๋ฌผ๋ฆฌ์ ์ง์์๋ก ๋ณํ ํ **SB DB(6642)**์ ๊ธฐ๋ก | ์์ ์ง์์ ์์ฑ |
| 3๋จ๊ณ | ovn-controller | Compute | SB DB๋ฅผ ๊ฐ์ํ๋ค๊ฐ ์๊ธฐ ๋ ธ๋์ ํ ๋น๋ ์์ ์ ๋ฐ๊ฒฌ | ์ง์์ ํ์ธ |
| 4๋จ๊ณ | Open vSwitch | Compute | ์์ด์ ํธ์ ์ง์์ ๋ฐ๋ผ ๊ฐ์ ์ค์์น(OVS) ๊ท์น ์ ๋ฐ์ดํธ |