searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

openstack亲和性和反亲和性

2023-06-26 03:21:25
579
0

1.     Openstack的亲和性和反亲和性介绍

openstack中某些应用场景,需要在创建虚拟机时,让虚拟机调度到相同的主机或不同的主机上创建。例如,某些应用虚拟机需要创建在同一主机上;而数据库集群虚拟机,可能需要创建在不同的主机上,以保证高可用性。

       为了满足这些需求,openstack的nova调度器增加了多种不同的亲和性和反亲和性调度功能。分别有DifferentHostFilter,SameHostFilter,SimpleCIDRAffinityFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,AggregateTypeAffinityFilter,ServerGroupSoftAntiAffinityWeigher,ServerGroupSoftAffinityWeigher等。

1.1   基于主机级别的亲和性

1.1.1     DifferentHostFilter

该过滤器默认不启用,如果要启用,需添加到[filter_scheduler]的enabled_filters。该过滤器是在创建虚拟机时,调度到与指定虚拟机不同主机上。在虚拟机创建时,通过scheduler的hints参数指定different_host的虚拟机ID,可以实现反亲和性,虚拟机会被调度与其它节点。该调度方法,重建、迁移不会失效。

创建虚拟机示例:

# nova boot --image cirros --flavor 1c-64m-1d \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f \

--hint different_host=22e95568-4b8b-4d51-97b7-d3fcd057b170  \

vm-test1

1.1.2     SameHostFilter

该过滤器与DifferentHostFilter过滤器功能正好相反。默认也是没启用,如果要启用,需添加到[filter_scheduler]的enabled_filters。当需要把创建的虚拟机调度到与现有虚拟机相同的主机上时,可以用该过滤器。通过scheduler的hints指定same_host的虚拟机ID。该调度方法,重建、迁移不会失效(如果nova配置了不能迁移到相同的主机,配置了亲和性的虚拟机,不指定主机迁移的话,是不能迁移到其它节点的)。

创建虚拟机示例:

# nova boot --image cirros --flavor 1c-64m-1d \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f \

--hint same_host=22e95568-4b8b-4d51-97b7-d3fcd057b170  \

vm-test1

1.1.3     SimpleCIDRAffinityFilter

该过滤器是基于主机的IP subnet range来调度,也就是把虚拟机建在指定子网内的主机上。这种一般用在计算主机非常多的情况。该调度方法,重建、迁移不会失效。

创建虚拟机示例:

# nova boot --image cirros --flavor 1c-64m-1d \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f \

--hint build_near_host_ip=192.168.1.1 --hint cidr=/24 \

vm-test1

1.1.4     ServerGroupAntiAffinityFilter

基于server group的反亲和性过滤器,这是目前常用的反亲和性方法。在server group中配置该反亲和性调度策略,应用了该策略的一组虚拟机会被创建到不同的主机上。如果创建的虚拟机超过了主机的个数,则会因为主机个数不够,造成虚拟机创建失败(在R版本,提出了扩展反亲和策略的功能,通过增加max_server_per_host参数,配置反亲和性下,每个主机最多的虚拟机数量。这样可以避免反亲和性策略下,每个server group中,每个主机只能有一个虚拟机的情况)。该调度方法,重建、迁移不会失效。

创建虚拟机示例:

# openstack server group create --policy anti-affinity database

# nova boot --image cirros --flavor 1c-64m-1d  \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f  \

--hint group="35ba3656-651d-4d7d-b9a3-3b771ac6888f"  \

vm-test1

1.1.5     ServerGroupAffinityFilter

基于server group的亲和性过滤器,这是目前常用的亲和性方法。在server group中配置该亲和性调度策略,应用了该策略的一组虚拟机会被创建到相同的主机上。该调度方法,重建、迁移不会失效(如果把该server group下的其中一个虚拟机,通过指定主机方式迁移到其它节点,会造成有两个主机可调度)。

创建虚拟机示例:

# openstack server group create --policy affinity app

# nova boot --image cirros --flavor 1c-64m-1d  \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f  \

--hint group="bfd95d58-0a8a-4da1-b2ba-34e3cc6afb13"  \

vm-test1

1.1.6     ServerGroupSoftAntiAffinityWeigher

基于server group的软反亲和性称重器,与ServerGroupAntiAffinityFilter功能类似,区别在于,软反亲和性称重器并不严格(这也是软反亲和性的目的)。虚拟机可能会根据称重结果,被调度到相同的主机。因为,软反亲和性称重器是与其它称重器的结果一起相加后,进行综合称重,然后统一排序。它只是在其它资源比较均匀的情况下,尽可能的把虚拟机创建到不同的主机上。而ServerGroupAntiAffinityFilter反亲和性过滤器,是过滤掉不符合的主机,所以有本质区别。

创建示例:  

# openstack server group create --os-compute-api-version 2.15 --policy  soft-anti-affinity soft-anti-affinity    创建软反亲和性策略,需要指定os-compute-api-version微版本大于或等于2.15

# nova boot --image cirros --flavor 1c-64m-1d  \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f  \

--hint group="113404d1-f6b0-46fa-9770-db3a5ee3149a"  \

vm-test1

1.1.7     ServerGroupSoftAffinityWeigher

基于server group的软亲和性称重器,和软反亲和性称重器一样,软亲和性称重器也是不严格的(这也是软亲和性的目的)。它可以实现某主机资源不够时,虚拟机可以被调度到其它的主机。而亲和性过滤器,会因为该主机资源不足,而出现虚拟机创建失败。

创建示例:  

# openstack server group create --os-compute-api-version 2.15 --policy  soft-affinity soft-affinity    创建软亲和性策略,需要指定os-compute-api-version微版本大于或等于2.15

# nova boot --image cirros --flavor 1c-64m-1d  \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f  \

--hint group="f25d682d-4b8e-448b-b078-3cd60d50f772"  \

vm-test1

1.2   基于主机聚合的亲和性

1.2.1     AggregateTypeAffinityFilter

基于flavor名字的聚合亲和性过滤器,默认没有启用。通过在主机聚合中的元数据中指定instance_type的值为flavor的名字(可以指定多个,逗号分隔),用该flavor创建的虚拟机,会被调度到对应主机聚合中。该方式,可以实现以主机组为单位的亲和性调度。

1.2.2     AggregateInstanceExtraSpecsFilter

基于flavor元数据的聚合过滤器,默认没有启用。该过滤器,可以实现把虚拟机部署到匹配的主机聚合中。需要在主机聚合和flavor中,配置相同的元数据,这样用该flavor创建的虚拟机,就可以被调度到对应的主机聚合中。

0条评论
0 / 1000
成****胜
8文章数
0粉丝数
成****胜
8 文章 | 0 粉丝
原创

openstack亲和性和反亲和性

2023-06-26 03:21:25
579
0

1.     Openstack的亲和性和反亲和性介绍

openstack中某些应用场景,需要在创建虚拟机时,让虚拟机调度到相同的主机或不同的主机上创建。例如,某些应用虚拟机需要创建在同一主机上;而数据库集群虚拟机,可能需要创建在不同的主机上,以保证高可用性。

       为了满足这些需求,openstack的nova调度器增加了多种不同的亲和性和反亲和性调度功能。分别有DifferentHostFilter,SameHostFilter,SimpleCIDRAffinityFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,AggregateTypeAffinityFilter,ServerGroupSoftAntiAffinityWeigher,ServerGroupSoftAffinityWeigher等。

1.1   基于主机级别的亲和性

1.1.1     DifferentHostFilter

该过滤器默认不启用,如果要启用,需添加到[filter_scheduler]的enabled_filters。该过滤器是在创建虚拟机时,调度到与指定虚拟机不同主机上。在虚拟机创建时,通过scheduler的hints参数指定different_host的虚拟机ID,可以实现反亲和性,虚拟机会被调度与其它节点。该调度方法,重建、迁移不会失效。

创建虚拟机示例:

# nova boot --image cirros --flavor 1c-64m-1d \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f \

--hint different_host=22e95568-4b8b-4d51-97b7-d3fcd057b170  \

vm-test1

1.1.2     SameHostFilter

该过滤器与DifferentHostFilter过滤器功能正好相反。默认也是没启用,如果要启用,需添加到[filter_scheduler]的enabled_filters。当需要把创建的虚拟机调度到与现有虚拟机相同的主机上时,可以用该过滤器。通过scheduler的hints指定same_host的虚拟机ID。该调度方法,重建、迁移不会失效(如果nova配置了不能迁移到相同的主机,配置了亲和性的虚拟机,不指定主机迁移的话,是不能迁移到其它节点的)。

创建虚拟机示例:

# nova boot --image cirros --flavor 1c-64m-1d \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f \

--hint same_host=22e95568-4b8b-4d51-97b7-d3fcd057b170  \

vm-test1

1.1.3     SimpleCIDRAffinityFilter

该过滤器是基于主机的IP subnet range来调度,也就是把虚拟机建在指定子网内的主机上。这种一般用在计算主机非常多的情况。该调度方法,重建、迁移不会失效。

创建虚拟机示例:

# nova boot --image cirros --flavor 1c-64m-1d \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f \

--hint build_near_host_ip=192.168.1.1 --hint cidr=/24 \

vm-test1

1.1.4     ServerGroupAntiAffinityFilter

基于server group的反亲和性过滤器,这是目前常用的反亲和性方法。在server group中配置该反亲和性调度策略,应用了该策略的一组虚拟机会被创建到不同的主机上。如果创建的虚拟机超过了主机的个数,则会因为主机个数不够,造成虚拟机创建失败(在R版本,提出了扩展反亲和策略的功能,通过增加max_server_per_host参数,配置反亲和性下,每个主机最多的虚拟机数量。这样可以避免反亲和性策略下,每个server group中,每个主机只能有一个虚拟机的情况)。该调度方法,重建、迁移不会失效。

创建虚拟机示例:

# openstack server group create --policy anti-affinity database

# nova boot --image cirros --flavor 1c-64m-1d  \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f  \

--hint group="35ba3656-651d-4d7d-b9a3-3b771ac6888f"  \

vm-test1

1.1.5     ServerGroupAffinityFilter

基于server group的亲和性过滤器,这是目前常用的亲和性方法。在server group中配置该亲和性调度策略,应用了该策略的一组虚拟机会被创建到相同的主机上。该调度方法,重建、迁移不会失效(如果把该server group下的其中一个虚拟机,通过指定主机方式迁移到其它节点,会造成有两个主机可调度)。

创建虚拟机示例:

# openstack server group create --policy affinity app

# nova boot --image cirros --flavor 1c-64m-1d  \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f  \

--hint group="bfd95d58-0a8a-4da1-b2ba-34e3cc6afb13"  \

vm-test1

1.1.6     ServerGroupSoftAntiAffinityWeigher

基于server group的软反亲和性称重器,与ServerGroupAntiAffinityFilter功能类似,区别在于,软反亲和性称重器并不严格(这也是软反亲和性的目的)。虚拟机可能会根据称重结果,被调度到相同的主机。因为,软反亲和性称重器是与其它称重器的结果一起相加后,进行综合称重,然后统一排序。它只是在其它资源比较均匀的情况下,尽可能的把虚拟机创建到不同的主机上。而ServerGroupAntiAffinityFilter反亲和性过滤器,是过滤掉不符合的主机,所以有本质区别。

创建示例:  

# openstack server group create --os-compute-api-version 2.15 --policy  soft-anti-affinity soft-anti-affinity    创建软反亲和性策略,需要指定os-compute-api-version微版本大于或等于2.15

# nova boot --image cirros --flavor 1c-64m-1d  \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f  \

--hint group="113404d1-f6b0-46fa-9770-db3a5ee3149a"  \

vm-test1

1.1.7     ServerGroupSoftAffinityWeigher

基于server group的软亲和性称重器,和软反亲和性称重器一样,软亲和性称重器也是不严格的(这也是软亲和性的目的)。它可以实现某主机资源不够时,虚拟机可以被调度到其它的主机。而亲和性过滤器,会因为该主机资源不足,而出现虚拟机创建失败。

创建示例:  

# openstack server group create --os-compute-api-version 2.15 --policy  soft-affinity soft-affinity    创建软亲和性策略,需要指定os-compute-api-version微版本大于或等于2.15

# nova boot --image cirros --flavor 1c-64m-1d  \

--nic net-id=c380c8e7-34d0-4fa2-b874-4aa4ce1ce92f  \

--hint group="f25d682d-4b8e-448b-b078-3cd60d50f772"  \

vm-test1

1.2   基于主机聚合的亲和性

1.2.1     AggregateTypeAffinityFilter

基于flavor名字的聚合亲和性过滤器,默认没有启用。通过在主机聚合中的元数据中指定instance_type的值为flavor的名字(可以指定多个,逗号分隔),用该flavor创建的虚拟机,会被调度到对应主机聚合中。该方式,可以实现以主机组为单位的亲和性调度。

1.2.2     AggregateInstanceExtraSpecsFilter

基于flavor元数据的聚合过滤器,默认没有启用。该过滤器,可以实现把虚拟机部署到匹配的主机聚合中。需要在主机聚合和flavor中,配置相同的元数据,这样用该flavor创建的虚拟机,就可以被调度到对应的主机聚合中。

文章来自个人专栏
学习
8 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0