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表示不限制(需谨慎使用)。
4.4 配额生效优先级
Neutron 的配额生效遵循明确的优先级规则,理解这一规则有助于管理员进行精准的资源配置。
- 租户级别配额(最高优先级): 通过
openstack quota set命令为特定租户设置的配额值。此值存储在数据库中,立即生效,且不受配置文件修改影响。 - 全局默认配额(中等优先级): 定义在
/etc/neutron/neutron.conf中的默认值。当租户没有自定义配额时,系统使用此默认值。 - 代码硬编码默认值(最低优先级): 如果配置文件中也未定义,Neutron 将使用代码中内置的默认值(通常与 4.1 节表格中的默认值一致)。
排查思路: 当某个租户的配额行为异常(例如无法创建资源,但配额显示仍有余额)时,应首先检查是否通过 CLI 为该租户设置了过小的自定义配额,其次检查全局配置文件是否被意外修改。