OpenStack高可用集群(上冊):原理與架構》—3 集群資源管理系統">《OpenStack高可用集群(上冊):原理與架構》—3 集群資源管理系統
697
2025-04-01
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小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。