4. OpenStack Neutron 网络配额:默认配额限制、配额管理命令、配额配置文件修改

在多租户环境下,网络资源是共享且有限的。Neutron 配额(Quota)机制用于防止单个租户(Project)过度占用网络资源,保障平台整体的稳定性与公平性。本章节将深入解析 Neutron 的默认配额限制、命令行管理工具以及配置文件修改方法。

4.1 默认配额限制

Neutron 为每个租户预设了资源上限,这些默认值定义在 Neutron 服务的配置文件中。当租户创建的资源数量达到上限时,后续的创建请求将被拒绝,并返回“资源超出配额”的错误。

资源类型 配置项 默认值 说明
网络 quota_network 10 每个租户可创建的网络数量
子网 quota_subnet 10 每个租户可创建的子网数量
端口 quota_port 50 每个租户可创建的端口数量
路由器 quota_router 10 每个租户可创建的路由器数量
安全组 quota_security_group 10 每个租户可创建的安全组数量
安全组规则 quota_security_group_rule 100 每个租户可创建的安全组规则总数
浮动 IP quota_floatingip 50 每个租户可申请的浮动 IP 数量
负载均衡器 quota_loadbalancer 10 每个租户可创建的负载均衡器数量(若启用 LBaaS)
提示: 默认配额值通常适用于小型测试环境。在生产环境中,应根据实际业务规模和物理资源容量进行合理调整,避免因配额过小导致业务受限,或配额过大引发资源争抢。

4.2 配额管理命令

OpenStack 命令行客户端(openstack CLI)提供了灵活的命令来查看和修改租户级别的网络配额。这些命令允许管理员在不重启服务的情况下动态调整资源限制。

4.2.1 查看配额

使用 openstack quota show 命令查看指定租户的当前配额值。

# 查看指定租户的网络相关配额
openstack quota show --project <project_name_or_id>

# 示例:查看名为 "demo-project" 的租户配额
openstack quota show --project demo-project

# 输出示例(仅展示网络相关部分):
+----------------------+-------+
| Field                | Value |
+----------------------+-------+
| floatingip           | 50    |
| network              | 10    |
| port                 | 50    |
| rbac_policy          | 10    |
| router               | 10    |
| security_group       | 10    |
| security_group_rule  | 100   |
| subnet               | 10    |
| subnetpool           | -1    |
+----------------------+-------+

4.2.2 修改配额

使用 openstack quota set 命令为指定租户设置新的配额值。

# 修改指定租户的网络和端口配额
openstack quota set --network <new_value> --port <new_value> --project <project_name_or_id>

# 示例:将 "demo-project" 的网络配额提升至 20,端口配额提升至 100
openstack quota set --network 20 --port 100 --project demo-project

# 重置指定租户的配额为默认值(使用 --force 参数)
openstack quota set --force --project demo-project
注意: 使用 --force 重置配额时,会将所有资源配额恢复为 Neutron 配置文件中的默认值。如果当前租户已使用的资源数量超过了默认值,重置操作会失败。建议在调整配额前,先使用 openstack network quota list --project <project> 确认当前资源使用情况。

4.3 配额配置文件修改

全局默认配额定义在 Neutron 的主配置文件 /etc/neutron/neutron.conf 中。修改此文件会影响所有新创建的租户,但不会改变已有租户的配额。

4.3.1 修改全局默认配额

编辑 /etc/neutron/neutron.conf 文件,在 [QUOTAS] 部分设置新的默认值。

[QUOTAS]
# 默认每个租户最多创建 20 个网络
quota_network = 20
# 默认每个租户最多创建 100 个端口
quota_port = 100
# 默认每个租户最多创建 20 个路由器
quota_router = 20
# 默认每个租户最多创建 20 个安全组
quota_security_group = 20
# 默认每个租户最多创建 200 条安全组规则
quota_security_group_rule = 200

4.3.2 应用配置

修改配置文件后,需要重启 Neutron 服务使更改生效。

# 重启 Neutron 服务(以 Ubuntu/Debian 为例)
sudo systemctl restart neutron-server

# 验证服务状态
sudo systemctl status neutron-server
最佳实践:
  • 分层管理: 使用配置文件设置全局基线值,再通过 CLI 命令为特定租户(如 VIP 客户或内部测试项目)设置个性化配额。
  • 监控与审计: 定期使用 openstack network quota list --project <project> 检查资源使用率,结合 Ceilometer 或 Prometheus 进行配额预警。
  • 避免硬限制: 对于某些弹性需求较高的场景(如 CI/CD 环境),可考虑将配额设置为较大的值,或使用 quota_network = -1 表示不限制(需谨慎使用)。
Neutron 网络配额管理流程 管理员 修改 neutron.conf openstack quota set Neutron Server 配额数据库 租户创建网络资源 全局默认 租户级别 重启服务 API 调用 存储/读取 配额校验 优先级: CLI 设置 > 配置文件默认

4.4 配额生效优先级

Neutron 的配额生效遵循明确的优先级规则,理解这一规则有助于管理员进行精准的资源配置。

  1. 租户级别配额(最高优先级): 通过 openstack quota set 命令为特定租户设置的配额值。此值存储在数据库中,立即生效,且不受配置文件修改影响。
  2. 全局默认配额(中等优先级): 定义在 /etc/neutron/neutron.conf 中的默认值。当租户没有自定义配额时,系统使用此默认值。
  3. 代码硬编码默认值(最低优先级): 如果配置文件中也未定义,Neutron 将使用代码中内置的默认值(通常与 4.1 节表格中的默认值一致)。
排查思路: 当某个租户的配额行为异常(例如无法创建资源,但配额显示仍有余额)时,应首先检查是否通过 CLI 为该租户设置了过小的自定义配额,其次检查全局配置文件是否被意外修改。