跳转到: 导航, 搜索

DomainQuotaDriver

简介

Nova BP Domain Quota Driver 将使 O~S 项目能够在 Nova 中强制执行域配额,为此,需要一个能够强制执行域配额的新驱动程序。此 BP 解决了在 Nova 中强制执行域配额的新配额驱动程序的需求。

Nova 中的配额

目前,OpenStack 服务使用配额来限制项目资源。例如,“Instances”配额表示可以在项目中创建的实例数量。下表总结了现有的项目配额。从现在开始,在域的上下文中将会有相同的选项。

quotas type 默认值 description
instances 可预留 10 每个项目允许的实例数量
核心数 可预留 20 每个项目允许的实例核心数
内存 可预留 50*1024 每个项目允许的实例内存(兆字节)
浮动 IP 可预留 10 每个项目允许的浮动 IP 数量
固定 IP 可预留 -1 每个项目允许的固定 IP 数量
元数据项 绝对值 128 每个实例允许的元数据项数量
注入文件 绝对值 5 允许的注入文件数量
注入文件内容字节数 绝对值 10*1024 每个注入文件允许的字节数
nova.injected_file_path_bytes 绝对值 255 每个注入文件路径允许的字节数
nova.security_groups 可预留 10 每个项目允许的安全组数量
nova.security_groups_rules 可计数 20 每个安全组允许的安全规则数量
nova.key_pairs 可计数 100 每个用户允许的密钥对数量

设计

因此,Nova 可以并行使用两个驱动程序,它们将由配额引擎调用。因此,当两个驱动程序运行时,要预留资源,例如,配额引擎将在当前配额中进行预留,即项目的配额以及域配额。

QuotaEngine.png

实现

为了实现域控制器配额,有必要创建三个模型,遵循现有的项目模板配额。此外,它创建了三个与这些模型相对应的表:DomainQuota、DomainQuotaUsages 和 DomainReservation,以便我们可以存储有关配额限制的信息,以及已经使用的情况和资源的预留情况。


域配额表

描述
id 主键。
资源 资源名称。
domain_id 引用域的 ID。
hard_limit 配额限制。
created_at 创建记录的时间。
updated_at 更新记录的时间。
deleted_at 删除记录的时间。
deleted 记录是否被删除

域配额使用表

描述
id 主键。
资源 资源名称。
domain_id 引用域的 ID。
使用中 已经使用的资源量。
已预留 该资源是否已预留。
created_at 创建记录的时间。
updated_at 更新记录的时间。
deleted_at 删除记录的时间。
until_refresh 在刷新使用情况之前,预留计数
deleted 记录是否被删除

域预留表

描述
id 主键。
资源 资源名称。
domain_id 引用域的 ID。
usage_id 引用配额使用的 ID。
使用中 已经使用的资源量。
已预留 该资源是否已预留。
created_at 创建记录的时间。
updated_at 更新记录的时间。
deleted_at 删除记录的时间。
uuid 通用唯一标识符。
delta 要添加的资源的变动。
expire 如果预留已经过期。
deleted 记录是否被删除