OpenStack Heat AutoScaling
一、背景
Openstack的Heat是在H版之后加入的組件,旨在創建一套業務流程,更輕松的管理一個集群。集群內的虛擬機可以作為一個整體,統一的為客戶提供服務。Heat中把功能定義成資源,在Heat中會用到Nova,Neutron,Ceilometer等組件,這些都可以看成是資源,通過模板文件來描述,模板文件可以是yaml格式,也可以是json格式,一般是yaml格式。
AutoScaling的概念最早出現在AWS,AutoScaling是一項Web服務,目的是根據用戶定義的策略,時間表的運行狀態檢查啟動或終止虛擬機,達到自動伸縮。Openstack里的Auto Scale是由Heat和Ceilometer模塊一起配合完成的。Ceilometer負責收集處理性能數據,一旦達到Heat模版里定義的閥值,就發告警信息給heat-engine,由heat-engine調動Heat模版里定義的其它的OpenStack資源實現auto scale。
二、Heat AutoScaling Resources
實現AutoScaling功能涉及到的資源如下:
1.AWS::AutoScaling::AutoScalingGroup
伸縮組是具有相同應用場景的實例的集合,定義了組內實例數的最大值和最小值,冷卻時間等等。
注:冷卻時間是指一個伸縮活動后的一段鎖定時間,在這個時間內不能進行其他的伸縮活動。語法如下:
{ "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : [ String, ... ], "Cooldown" : String, "DesiredCapacity" : String, "HealthCheckGracePeriod" : Integer, "HealthCheckType" : String, "InstanceId" : String, "LaunchConfigurationName" : String, "LoadBalancerNames" : [ String, ... ], "MaxSize" : String, "MetricsCollection" : [ MetricsCollection, ... ] "MinSize" : String, "NotificationConfigurations" : [ NotificationConfigurations, ... ], "PlacementGroup" : String, "Tags" : [ Auto Scaling Tag, ..., ], "TargetGroupARNs" : [ String, ... ], "TerminationPolicies" : [ String, ..., ], "VPCZoneIdentifier" : [ String, ... ] }}2.AWS::AutoScaling::LaunchConfiguration
伸縮配置定義了用于彈性伸縮的實例的配置。由AutoScalingGroup用于配置組內的實例。
語法如下:
{ "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "AssociatePublicIpAddress" : Boolean, "BlockDeviceMappings" : [ BlockDeviceMapping, ... ], "ClassicLinkVPCId" : String, "ClassicLinkVPCSecurityGroups" : [ String, ... ], "EbsOptimized" : Boolean, "IamInstanceProfile" : String, "ImageId" : String, "InstanceId" : String, "InstanceMonitoring" : Boolean, "InstanceType" : String, "KernelId" : String, "KeyName" : String, "PlacementTenancy" : String, "RamDiskId" : String, "SecurityGroups" : [ SecurityGroup, ... ], "SpotPrice" : String, "UserData" : String }}3.AWS::AutoScaling::ScalingPolicy
為auto scale group添加伸縮的策略,定義了具體的擴展或者收縮的操作,以及伸縮的數量。
語法如下:
{ "Type" : "AWS::AutoScaling::ScalingPolicy", "Properties" : { "AdjustmentType" : String, "AutoScalingGroupName" : String, "Cooldown" : String, "EstimatedInstanceWarmup" : Integer, "MetricAggregationType" : String, "MinAdjustmentMagnitude" : Integer, "PolicyType" : String, "ScalingAdjustment" : Integer, "StepAdjustments" : [ StepAdjustments, ... ] }}
新聞熱點
疑難解答