《OpenStack高可用集群(下册):部署与运维》—11.1.2 制作OpenStack离线安装yum源
557
2022-05-30
3.7.2 集群资源约束
集群是由众多具有特定功能的资源组成的集合,集群中的每个资源都可以对外提供独立服务,但是资源彼此之间又存在着依赖与被依赖的关系。如资源B的启动必须依赖资源A的存在,因此资源A必须在资源B之前启动,再如资源A必须与资源B位于同一节点以共享某些服务,则资源B与A在故障切换时必须作为一个逻辑整体而同时迁移到其他节点,在Pacemaker中,资源之间的这种关系通过资源约束或限制(Resource Constraint)来实现。Pacemaker集群中的资源约束可以分为以下几类。
位置约束(Location):位置约束限定了资源应该在哪个集群节点上启动运行。
顺序约束(Order):顺序约束限定了资源之间的启动顺序。
资源***约束(Colocation):***约束将不同的资源***在一起作为一个逻辑整体,即资源 A位于C节点,则资源B也必须位于C节点,并且资源A、B将会同时进行故障切换到相同的节点上。
在资源配置中,Location约束在限定运行资源的节点时非常有用,例如在Openstack高可用集群配置中,我们希望Nova-Compute资源仅运行在计算节点上,而Nova-api和Neutron-sever等资源仅运行在控制节点上,这时便可通过资源的Location约束来实现。例如,我们先给每一个节点设置不同的osprole属性(属性名称可自定义),计算节点中该值设为compute,控制节点中该值设为controller,如下:
pcs property set --node compute1 osprole=compute
pcs property set --node compute1 osprole=compute
pcs property set --node controller1-vm osprole=controller
pcs property set --node controller2-vm osprole=controller
pcs property set --node controller3-vm osprole=controller
然后,通过为资源设置Location约束,便可将Nova-Compute资源仅限制在计算节点上运行,Location约束的设置命令如下:
pcs constraint location nova-compute-clone rule\ resource-discovery=exclusive score=0 osprole eq compute
即资源Nova-Compute-Clone仅会在osprole等于compute的节点上运行,也即计算节点上运行。
在Pacemaker集群中,Order约束主要用来解决资源的启动依赖关系,资源启动依赖在Linux系统中非常普遍。例如在OpenStack高可用集群配置中,需要先启动基础服务如RabbitMQ和MySQL等,才能启动OpenStack的核心服务,因为这些服务都需要使用消息队列和数据库服务;再如在网络服务Neutron中,必须先启动Neutron-sever服务,才能启动Neutron的其他Agent服务,因为这些Agent在启动时均会到Neutron-sever中进行服务注册。Pacemaker集群中解决资源启动依赖的方案便是Order约束。例如,在OpenStack的网络服务Neutron配置中,与Neutron相关的资源启动顺序应该如下:Keystone--> Neutron-server--> Neutron-ovs-cleanup-->Neutron-netns-cleanup-->Neutron-openvswitch-agent-->Neutron-dhcp-agent-->Nutron-l3-agent,上述依赖关系可以通过如下Order约束实现:
pcs constraint order start keystone-clone then neutron-server-api-clone
pcs constraint order start neutron-server-api-clone then neutron-ovs-cleanup-clone
pcs constraint order start neutron-ovs-cleanup -clone then neutron-netns-cleanup-clone
pcs constraint order start neutron-netns-cleanup-clone then neutron-openvswitch-agent-clone
pcs constraint order start neutron-openvswitch-agent-clone then neutron-dhcp-agent-clone
pcs constraint order start neutron-dhcp-agent-clone then neutron-l3-agent-clone
pcs constraint order start neutron-l3-agent-clone then neutron-metadata-agent-clone
Colocation约束主要用于根据资源A的节点位置来决定资源B的位置,即在启动资源B的时候,会依赖资源A的节点位置。例如将资源A与资源B进行Colocation约束,假设资源A已经运行在Node1上,则资源B也会在Node1上启动,而如果Node1故障,则资源B与A会同时切换到Node2,而不是其中某个资源切换到Node3。在OpenStack高可用集群配置中,通常需要将Libvirtd-compute与Neutron-openvswitch-agent进行资源***,要将Nova-compute与Libvirtd-compute进行资源***,则Colocation约束的配置如下:
pcs constraint colocation add nova-compute-clone with libvirtd-compute-clone
pcs constraint colocation add libvirtd-compute-clone with neutron-openvswitch-agent-compute-clone
Location约束、Order约束和Colocation约束是Pacemaker集群中最为重要的三个约束,通过这几个资源约束设置,集群中看起来彼此独立的资源就会按照预先设置有序运行,在Openstack高可用集群配置中,几乎全部资源的配置都会用到这几个约束。
OpenStack 云计算
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。