OpenStack DevStack 中 Neutron 网络配置完全指南
前言
作为 OpenStack 的核心网络组件,Neutron 提供了强大的网络虚拟化能力。本文将深入讲解如何在 DevStack 环境中配置和使用 Neutron 网络服务,特别是与 Open vSwitch (OVS) 的集成方案。
单网卡环境下的 Neutron 配置
适用场景
在开发环境(如笔记本电脑)中,通常只有一个可用的网络接口。此时需要将该物理接口添加到 OVS 网桥,并将 IP 地址迁移到网桥接口上。
重要警告
⚠️ 在单网卡配置过程中,当 IP 地址从物理网卡迁移到 OVS 网桥时,会出现短暂网络中断。如果通过 SSH 连接进行操作,可能会导致连接断开,进而中断 stack.sh 执行。
解决方案:建议在 screen 会话中启动 stack.sh 脚本。
物理网络架构
典型单节点 DevStack 部署场景中:
- 使用硬件路由器提供外部连接和 DHCP
- 开发机连接到该网络并与其他机器共享子网
- 假设网络 MTU 为 1500
配置示例
完整 local.conf 配置(主机名为 devstack-1):
[[local|localrc]]
HOST_IP=172.18.161.6
SERVICE_HOST=172.18.161.6
MYSQL_HOST=172.18.161.6
RABBIT_HOST=172.18.161.6
GLANCE_HOSTPORT=172.18.161.6:9292
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
## Neutron 选项
Q_USE_SECGROUP=True
FLOATING_RANGE="172.18.161.0/24"
IPV4_ADDRS_SAFE_TO_USE="10.0.0.0/22"
Q_FLOATING_ALLOCATION_POOL=start=172.18.161.250,end=172.18.161.254
PUBLIC_NETWORK_GATEWAY="172.18.161.1"
PUBLIC_INTERFACE=eth0
# Open vSwitch 配置
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
多节点扩展配置
网络架构
在多节点环境中:
- 控制节点(devstack-1)运行 L3 代理
- 计算节点(devstack-2)通过 VXLAN 隧道将流量封装回控制节点
计算节点配置
计算节点的 local.conf 配置更为精简:
[[local|localrc]]
HOST_IP=172.18.161.7
SERVICE_HOST=172.18.161.6
MYSQL_HOST=172.18.161.6
RABBIT_HOST=172.18.161.6
GLANCE_HOSTPORT=172.18.161.6:9292
ADMIN_PASSWORD=secret
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
## Neutron 选项
PUBLIC_INTERFACE=eth0
ENABLED_SERVICES=n-cpu,rabbit,q-agt,placement-client
使用 Provider Networks
适用场景
当需要使用外部路由器预配置的网络时,可采用 Provider Networks 方案。这种情况下:
- 外部路由器管理网络
- 开发者获得 VLAN 标签和 IP 地址范围
- 实例直接使用外部路由器进行 L3 连接
物理网络配置
计算节点上:
- eth0 用于 OpenStack 管理和 SSH 访问
- eth1 不配置 IP 地址,加入 OVS 网桥
Ubuntu 系统配置示例(/etc/network/interfaces):
auto eth1
iface eth1 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE 0.0.0.0 down
服务部署方案
控制节点:
- 运行大多数 OpenStack API 和管理服务
- 配置示例:
HOST_IP=10.0.0.2
SERVICE_HOST=10.0.0.2
MYSQL_HOST=10.0.0.2
RABBIT_HOST=10.0.0.2
GLANCE_HOSTPORT=10.0.0.2:9292
PUBLIC_INTERFACE=eth1
ADMIN_PASSWORD=secret
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
## Neutron 选项
Q_USE_SECGROUP=True
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=3001:4000
PHYSICAL_NETWORK=default
OVS_PHYSICAL_BRIDGE=br-ex
Q_USE_PROVIDER_NETWORKING=True
disable_service q-l3
## 子网配置
IPV4_ADDRS_SAFE_TO_USE="203.0.113.0/24"
NETWORK_GATEWAY=203.0.113.1
PROVIDER_SUBNET_NAME="provider_net"
PROVIDER_NETWORK_TYPE="vlan"
SEGMENTATION_ID=2010
USE_SUBNETPOOL=False
计算节点:
- 运行 neutron-openvswitch-agent 和 nova-compute
- 配置示例:
HOST_IP=10.0.0.3
SERVICE_HOST=10.0.0.2
MYSQL_HOST=10.0.0.2
RABBIT_HOST=10.0.0.2
GLANCE_HOSTPORT=10.0.0.2:9292
ADMIN_PASSWORD=secret
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
# 计算节点服务
ENABLED_SERVICES=n-cpu,rabbit,q-agt
## Open vSwitch 配置
PHYSICAL_NETWORK=default
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_INTERFACE=eth1
Q_USE_PROVIDER_NETWORKING=True
高级配置技巧
非标准 MTU 配置
如需配置非标准 MTU(如支持巨帧的 9000 字节):
[[post-config|/$Q_PLUGIN_CONF_FILE]]
global_physnet_mtu = 9000
网络安全配置
现代网络安全工具可能导致网络问题,建议:
Fedora 系统:
sudo service iptables save
sudo systemctl disable firewalld
sudo systemctl enable iptables
sudo systemctl stop firewalld
sudo systemctl start iptables
UFW 系统:
sudo service iptables save
sudo ufw disable
ML2 插件扩展驱动
通过 Q_ML2_PLUGIN_EXT_DRIVERS 变量配置 ML2 插件扩展驱动,默认包含 'port_security'。如需移除所有扩展驱动:
Q_ML2_PLUGIN_EXT_DRIVERS=
使用 MacVTap 替代 OVS
MacVTap 代理不支持安全组,DevStack 会自动配置 NoopFirewall 驱动。
单节点 Provider Networks 配置:
[[local|localrc]]
HOST_IP=10.0.0.2
...
Q_ML2_PLUGIN_MECHANISM_DRIVERS=macvtap
Q_USE_PROVIDER_NETWORKING=True
...
多节点 MacVTap 计算节点配置:
HOST_IP=10.0.0.3
...
ENABLED_SERVICES+=n-cpu,q-agt
Q_AGENT=macvtap
PHYSICAL_NETWORK=default
...
总结
本文详细介绍了 DevStack 中 Neutron 网络的各种配置方案,从单节点基础配置到多节点扩展,再到高级网络功能实现。通过合理选择和配置这些方案,开发者可以构建满足不同需求的 OpenStack 网络环境。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



