옵션 2 (셀프서비스 네트워크)로 컨트롤러 노드에 neutron-server 와 에이전트를 설치하고 설정한다. 메커니즘 드라이버는 Open vSwitch, 프로젝트 네트워크는 VXLAN 이다. 데이터베이스 설정과 자격 증명 생성을 먼저 끝낸다.
바꿔 넣을 값
| 자리 | 값 |
|---|---|
NEUTRON_DBPASS · NEUTRON_PASS · NOVA_PASS · RABBIT_PASS |
미리 정한 비밀번호 |
PROVIDER_BRIDGE_NAME |
공급자 네트워크용 OVS 브리지 이름. 예: br-provider |
PROVIDER_INTERFACE_NAME |
공급자 물리 인터페이스 이름. 예: eth1 |
OVERLAY_INTERFACE_IP_ADDRESS |
VXLAN 터널 종단 IP. 관리용 IP 를 쓴다. 예: 10.0.0.11 |
Ubuntu 24.04
apt install neutron-server neutron-plugin-ml2 neutron-openvswitch-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent
CentOS Stream 9 · RHEL 9
dnf install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch ebtables
/etc/neutron/neutron.conf 의 다음 절에 값을 넣는다.
[DEFAULT]
core_plugin = ml2
service_plugins = router
transport_url = rabbit://openstack:RABBIT_PASS@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[database]
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = neutron
password = NEUTRON_PASS
[nova]
auth_url = http://controller:5000
auth_type = password
project_domain_name = Default
user_domain_name = Default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
[database] · [keystone_authtoken] 절의 다른 항목은 주석 처리하거나 지운다.
/etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
# 플랫 · VLAN · VXLAN 네트워크 타입 활성화
type_drivers = flat,vlan,vxlan
# 프로젝트(셀프서비스) 네트워크는 VXLAN
project_network_types = vxlan
# Open vSwitch 와 L2 population 메커니즘
mechanism_drivers = openvswitch,l2population
# 포트 보안 확장
extension_drivers = port_security
[ml2_type_flat]
# 공급자 네트워크를 플랫 네트워크로
flat_networks = provider
[ml2_type_vxlan]
# 셀프서비스 네트워크의 VNI 범위
vni_ranges = 1:1000
ML2 를 설정한 뒤에는 type_drivers 에서 값을 빼면 데이터베이스가 어긋난다. 빼지 않는다.
/etc/neutron/plugins/ml2/openvswitch_agent.ini
[ovs]
bridge_mappings = provider:PROVIDER_BRIDGE_NAME
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
[agent]
tunnel_types = vxlan
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = openvswitch
#firewall_driver = iptables_hybrid
공급자 브리지를 만들고 물리 인터페이스를 붙인다.
ovs-vsctl add-br PROVIDER_BRIDGE_NAME
ovs-vsctl add-port PROVIDER_BRIDGE_NAME PROVIDER_INTERFACE_NAME
firewall_driver = iptables_hybrid 를 쓰는 경우에만 커널 브리지 필터가 켜져 있어야 한다.
sysctl net.bridge.bridge-nf-call-iptables
sysctl net.bridge.bridge-nf-call-ip6tables
두 값이 1 이어야 한다. br_netfilter 모듈이 없으면 modprobe br_netfilter 로 올린다.
/etc/neutron/l3_agent.ini
[DEFAULT]
interface_driver = openvswitch
/etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver = openvswitch
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
다음은 메타데이터 에이전트 구성이다.
CentOS Stream 8 · Victoria 에서는 Linux bridge 메커니즘을 썼다. 현행 릴리스의 공식 가이드는 Open vSwitch 로 바뀌었고, Linux bridge 드라이버는 실험적(experimental) 상태다.
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
/etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[ml2_type_vxlan]
vni_ranges = 1:1000
[securitygroup]
enable_ipset = true
/etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
[vxlan]
enable_vxlan = true
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
l3_agent.ini · dhcp_agent.ini 의 interface_driver 는 linuxbridge 였다.