讀古今文學網 > OpenStack系統架構設計實戰 > 6.7 典型場景分析 >

6.7 典型場景分析

以一個典型的業務彈性伸縮流程為例來講解Heat的整體工作流程。

1.定義模板

heat_template_version: 2013-05-23description: Simple template to deploy a autoscaling demoparameters: image:type: stringdescription: Image used for serversdefault: cirros-0.3.1-x86_64-disk flavor:type: stringdescription: flavor used by the serversdefault: m1.tinyresources: web_server_scaleup_policy:type: OS::Heat::ScalingPolicyproperties:adjustment_type: change_in_capacityauto_scaling_group_id: {get_resource: web_server_group}cooldown: 60scaling_adjustment: 1 cpu_alarm_high:type: OS::Ceilometer::Alarmproperties: meter_name : "cpu_util" statistic : "avg"period : "60"evaluation_periods: "1"threshold : "90"repeat_actions: truealarm_actions : - {get_attr: [web_server_scaleup_policy, alarm_url]}comparison_operator : "ge" web_server_group:type: OS::Heat::AutoScalingGroupproperties: min_size: 1 max_size: 3 desired_capacity: 1 resource: type: OS::Nova::Serverproperties: flavor: {get_param: flavor} image: {get_param: image} networks: [{"network": "b83cbae8-0db0-433c-a47a-374d0077cec7"}]

模板中定義了3個資源:

1)web_server_scaleup_policy用於定義超過閾值時的伸縮策略。

2)cpu_alarm_high用於定義超過閾值時的告警動作。

3)web_server_group用於定義一個虛擬機的彈性伸縮組資源,其中cpu_alarm_high中依賴了web_server_scaleup_policy的告警URL,而web_server_scaleup_policy依賴了web_server_group資源組。

此外,web_server_group使用了OS::Heat::AutoScalingGroup資源類型定義了一個彈性伸縮組,參數中的flavor指定雲主機類型,image指定雲主機使用的鏡像,networks指定了雲主機的網絡歸屬。

2.執行模板

將以上模板保存到autoscaling.hts文件中,再調用Heat-tools工具執行模板部署操作。

#heat stack-create –f autoscaling.hts autoscaling

3.模板執行結果

可以通過Heat-tools查看新創建的heat stack-list的狀態,如果stack的狀態為CREATE_COMPLETE,則說明棧已經創建成功;如果為CREATE_FAILED,則表示棧創建失敗。

4.模板執行分析

現在來分析整個模板的執行和資源自動化過程:

當模板執行成功後,會自動完成一台新的雲主機的創建,登錄這台雲主機,執行cat/dev/urandom|md5sum&模擬CPU滿負荷的情況,因為Ceilometer告警資源cpu_alarm_high定義了對屬於彈性伸縮組資源web_server_group中的雲主機的資源採集規則,當CPU升高且滿足了cpu_alarm_high資源所定義的告警週期period:「60s」內超過告警閾值threshold:「90%」的條件時,告警資源會通過signal方式觸發執行彈性策略資源web_server_scaleup_policy中的回調接口。又因為伸縮策略中實際上綁定了web_server_group彈性伸縮組中的updatePolicy觸發器,從而觸發了web_server_group彈性伸縮組自身的伸縮操作,生成了一台新的雲主機。模板執行流程如圖6-3所示。

圖6-3 模板執行流程