Openstack 对于主机的分布区域的划分主要方式主要有Zones,region,以及在g版新引入的概念cell。这些方式将主机进行了不同的化分。这些概念网上都有介绍这里我就不介绍了,感兴趣的朋友可以去网上搜一下。我在这里主要介绍一种逻辑划分方式Host aggregates。
Host aggregates 是对于availability zone的进一步的细分,availability zone是对于用户是可见的而Host aggregates是仅对管理员可见的,可以说是一种逻辑上的划分。那么Host aggregates究竟有什么用呢,其实他主要是针对scheduler调度使用的,通过他可以创建高级的调度策略。在g版中有AggregateInstanceExtraSpecsFilter,AggregateMultiTenancyIsolation两个定义好的调度过滤策略,当然你也可以根据自己的情况定义自己的策略。
AggregateInstanceExtraSpecsFilter 过滤器,主要是利用Flavor extra_specs扩展属性,来和aggregates 的metadata,通过各种操作符如!=,<=进行float型或字符串型的比较,来确定是否通过过滤。就是在创建实例时用含有某flavor extra_specs扩展属性的实例时只会创建在对应的含有满足条件的metadataHost aggregates。使用这种过滤的场景是,你可以将对io要求高的实例创建在安装固态硬盘的机器上。
Host aggregates是可以动态配置的,随时添加删除主机,非常的灵活,可以创建非常灵活的过滤策略,我想到的一个应用场景是就是将新旧机器分别创建在两个不同的aggregates,来进行不同的调度。