6

हम ऑटो स्केलिंग के लिए बादल गठन का उपयोग कर रहे के अनुसार बादल गठन का उपयोग कर स्केलिंग लोड संतुलन RequestCount मीट्रिक पर आधारित अनुसार। वर्तमान में हम एक उदाहरण बढ़ाते हैं यदि अनुरोध 1 मिनट के लिए 1500 तक बढ़ाया गया है (प्रत्येक उदाहरण प्रति मिनट 1500 अनुरोध संभाल सकता है)। समस्या यह है कि चूंकि ऑटोस्कलिंग समूह निरंतर अनुरोधकाउंट की जांच करता है और एक नया उदाहरण जोड़ता है यदि अनुरोध संख्या 1500 से अधिक 1 मिनट के लिए है। लेकिन इसकी आवश्यकता नहीं है क्योंकि अब मेरे पास 2 उदाहरण हैं जो 3000 रेक को संभाल सकते हैं। प्रति मिनट। क्या मैट्रिक्स कस्टम बनाने के लिए कोई सुविधा है? यानी यदि नया उदाहरण जोड़ा जाता है तो स्केल अप पॉलिसी 3000 रिक में बदल जाएगी।ऑटो अनुरोध गिनती

उदाहरण परिदृश्य:

  1. शुरू में वहाँ 1 ईएलबी, 1 बिल्ला उदाहरण ईएलबी से जुड़ी (कर सकते हैं संभाल 1500 अनुरोध प्रति मिनट।)।
  2. 1 क्लाउड घड़ी स्केल अप के पैमाने पर कार्रवाई के साथ घड़ी। ईएलबी पर गिनती न्यूनतम के लिए 1500 हो गई है।
  3. वर्तमान में ईएलबी पर लोड अनुरोध 1 मिनट के लिए 1500 है। अब req। मिनट के लिए भार 1700 तक बढ़ा है। इसलिए यह ईएलबी पर एक नया टॉमकैट उदाहरण संलग्न करेगा। तो मेरे पास 2 उदाहरण हैं जो 3000 req को संभाल सकता है। मिनट के लिए।
  4. लेकिन अब क्लाउड घड़ी क्या समस्या है req की जांच करें। ईएलबी पर भरोसा करें और यदि req। लोड मिनट के लिए 1700 है। यह एक नया टॉमकैट उदाहरण जोड़ देगा जो आवश्यक नहीं है।

कैसे मैं इस समस्या से आते से अधिक कर सकते हैं?

उत्तर

4

आप क्या करना चाहते क्या लोड संतुलन के लिए औसत का उपयोग करें। आपके पास विभिन्न प्रकार के मीट्रिक हो सकते हैं। योग, औसत, न्यूनतम, अधिकतम और नमूना। यदि आप औसत चुनते हैं तो यह आपको लोडबैंसर के तहत सभी उदाहरणों के लिए औसत देगा। तो यह केवल एक नया इंस्टेंस लॉन्च ट्रिगर करेगा जब आपके समूह के सभी सर्वर 1500 अनुरोध प्रति मिनट पर होंगे।

प्रकार के त्वरित विवरण:

  • औसत - अनुरोध की कुल संख्या (उदाहरण: 3000) - लोड संतुलन
  • योग के लिए औसत
  • अधिकतम - अनुरोध किसी भी सर्वर की अधिकतम संख्या है (क्योंकि यह वास्तव में संतुलित नहीं हो सकता है)
  • न्यूनतम - किसी भी सर्वर के अनुरोधों की न्यूनतम संख्या (क्योंकि यह वास्तव में संतुलित नहीं हो सकती है)
  • नमूना - कैल्कु के लिए उपयोग किए जाने वाले सर्वरों की संख्या देर से औसत (अनिवार्य रूप से कितने सर्वर लोड संतुलन पर हैं)

आप आप के रूप में अच्छी खुद कस्टम मीट्रिक रहे हैं बना सकते हैं, लेकिन आप एक आवेदन है कि अमेज़न बताता है कि क्या मान हैं बनाने की आवश्यकता होगी। क्लाउड घड़ी एपीआई का उपयोग करके आप आसानी से अपना खुद का बना सकते हैं। यहां देखें http://docs.amazonwebservices.com/AmazonCloudWatch/latest/DeveloperGuide/Welcome.html?r=1540

+2

बस एक ध्यान दें कि RequestCount केवल अभिव्यक्त किया जा सकता है या नमूना, और RequestCount का उपयोग करते समय, तो सबसे अच्छा होगा एक करने के लिए पैमाने पर है: नीचे आप है कि मैं ElasticBeanstalk अनुप्रयोग में उपयोग किया है cloudformation टेम्पलेट मिल जाएगा वृद्धि/कमी के बजाय 'वांछित क्षमता' (https://forums.aws.amazon.com/thread.jspa?threadID=86073 देखें)। – dsummersl

+0

अच्छा बिंदु, आपको इसे इस तरह से करना होगा क्योंकि RequestCount में औसत नहीं है। मैं उस धन्यवाद के बारे में भूल गया। – bwight

+0

हां, यह इस मामले में एक वैध जवाब नहीं है। –

1

जैसा कि dsummersl ने कहा, RequestCount औसत मीट्रिक के साथ सीधे उपयोग नहीं किया जा सकता है।

मैं समाधान here की एक जोड़ी मिल गया। असल में, वे आपको कस्टम क्लाउडवॉच मीट्रिक को परिभाषित करने के लिए कहते हैं ताकि आप अपने उदाहरणों को उन अनुरोधों की संख्या को उत्सर्जित कर सकें जिन्हें वे प्राप्त कर रहे हैं।

यह आप प्रत्येक उदाहरण से अनुरोध गिनती इकट्ठा होते हैं और put-metric-data का उपयोग कर, या बनाने में कोई ebextension तो EBS यह तुम्हारे लिए क्या cloudwatch को भेजने के लिए की आवश्यकता होगी के लिए (मुझे लगता है कि यह सबसे आसान तरीका है)।

फिर आप उस कस्टम मीट्रिक के आधार पर स्केल अप/डाउन करने के लिए ऑटो स्केलिंग सेट कर सकते हैं।

उम्मीद है कि यह मदद करता है।

0

मैंने RequestCount पर Scaling Policy को Cloudwatch alarms के साथ लागू करके RequestCount पर आधारित स्केलिंग बनाई है जो पॉलिसी उत्थान को ट्रिगर करती है।

RequestCountScalingAlarmLt2000: 
    Type: "AWS::CloudWatch::Alarm" 
    Properties: 
     ActionsEnabled: true 
     AlarmActions: 
     - Ref: RequestCountScalingPolicy 
     OKActions: 
     - Ref: RequestCountScalingPolicy 
     AlarmDescription: "Scale when Request Count < 2000" 
     AlarmName: {"Fn::Join": ["-", ["Scale when Request Count < 2000", { "Ref":"AWSEBEnvironmentName" }]]} 
     ComparisonOperator: LessThanThreshold 
     Dimensions: 
     - Name: LoadBalancerName 
      Value: 
      Ref: AWSEBLoadBalancer 
     EvaluationPeriods: "1" 
     MetricName: RequestCount 
     Namespace: AWS/ELB 
     Period: "300" 
     Statistic: Sum 
     Threshold: 2000 
    RequestCountScalingAlarmGt2000: 
    Type: "AWS::CloudWatch::Alarm" 
    Properties: 
     ActionsEnabled: true 
     AlarmActions: 
     - Ref: RequestCountScalingPolicy 
     OKActions: 
     - Ref: RequestCountScalingPolicy 
     AlarmDescription: "Scale when 2000 < Request Count < 20000" 
     AlarmName: "Scale when Request 2000 < Count < 20000" 
     ComparisonOperator: GreaterThanOrEqualToThreshold 
     Dimensions: 
     - Name: LoadBalancerName 
      Value: 
      Ref: AWSEBLoadBalancer 
     EvaluationPeriods: "1" 
     MetricName: RequestCount 
     Namespace: AWS/ELB 
     Period: "300" 
     Statistic: Sum 
     Threshold: 2000 
    RequestCountScalingAlarmGt20000: 
    Type: "AWS::CloudWatch::Alarm" 
    Properties: 
     ActionsEnabled: true 
     AlarmActions: 
     - Ref: RequestCountScalingPolicy 
     OKActions: 
     - Ref: RequestCountScalingPolicy 
     AlarmDescription: "Scale when 20000 < Request Count < 30000" 
     AlarmName: "Scale when 20000 < Request Count < 30000" 
     ComparisonOperator: GreaterThanOrEqualToThreshold 
     Dimensions: 
     - Name: LoadBalancerName 
      Value: 
      Ref: AWSEBLoadBalancer 
     EvaluationPeriods: "1" 
     MetricName: RequestCount 
     Namespace: AWS/ELB 
     Period: "300" 
     Statistic: Sum 
     Threshold: 20000 
    RequestCountScalingAlarmGt30000: 
    Type: "AWS::CloudWatch::Alarm" 
    Properties: 
     ActionsEnabled: true 
     AlarmActions: 
     - Ref: RequestCountScalingPolicy 
     OKActions: 
     - Ref: RequestCountScalingPolicy 
     AlarmDescription: "Scale when 30000 < Request Count < 40000" 
     AlarmName: "Scale when 30000 < Request Count < 40000" 
     ComparisonOperator: GreaterThanOrEqualToThreshold 
     Dimensions: 
     - Name: LoadBalancerName 
      Value: 
      Ref: AWSEBLoadBalancer 
     EvaluationPeriods: "1" 
     MetricName: RequestCount 
     Namespace: AWS/ELB 
     Period: "300" 
     Statistic: Sum 
     Threshold: 30000 
    RequestCountScalingAlarmGt40000: 
    Type: "AWS::CloudWatch::Alarm" 
    Properties: 
     ActionsEnabled: true 
     AlarmActions:: 
     - Ref: RequestCountScalingPolicy 
     OKActions: 
     - Ref: RequestCountScalingPolicy 
     AlarmDescription: "Scale when 40000 < Request Count < 50000" 
     AlarmName: "Scale when 40000 < Request Count < 50000" 
     ComparisonOperator: GreaterThanOrEqualToThreshold 
     Dimensions: 
     - Name: LoadBalancerName 
      Value: 
      Ref: AWSEBLoadBalancer 
     EvaluationPeriods: "1" 
     MetricName: RequestCount 
     Namespace: AWS/ELB 
     Period: "300" 
     Statistic: Sum 
     Threshold: 40000 
    RequestCountScalingAlarmGt50000: 
    Type: "AWS::CloudWatch::Alarm" 
    Properties: 
     ActionsEnabled: true 
     AlarmActions: 
     - Ref: RequestCountScalingPolicy 
     OKActions: 
     - Ref: RequestCountScalingPolicy 
     AlarmDescription: "Scale when 50000 < Request Count < 60000" 
     AlarmName: "Scale when 50000 < Request Count < 60000" 
     ComparisonOperator: GreaterThanOrEqualToThreshold 
     Dimensions: 
     - Name: LoadBalancerName 
      Value: 
      Ref: AWSEBLoadBalancer 
     EvaluationPeriods: "1" 
     MetricName: RequestCount 
     Namespace: AWS/ELB 
     Period: "300" 
     Statistic: Sum 
     Threshold: 50000 
    RequestCountScalingAlarmGt60000: 
    Type: "AWS::CloudWatch::Alarm" 
    Properties: 
     ActionsEnabled: true 
     AlarmActions:: 
     - Ref: RequestCountScalingPolicy 
     OKActions: 
     - Ref: RequestCountScalingPolicy 
     AlarmDescription: "Scale when 60000 < Request Count < 70000" 
     AlarmName: "Scale when 60000 < Request Count < 70000" 
     ComparisonOperator: GreaterThanOrEqualToThreshold 
     Dimensions: 
     - Name: LoadBalancerName 
      Value: 
      Ref: AWSEBLoadBalancer 
     EvaluationPeriods: "1" 
     MetricName: RequestCount 
     Namespace: AWS/ELB 
     Period: "300" 
     Statistic: Sum 
     Threshold: 60000 
    RequestCountScalingAlarmGt70000: 
    Type: "AWS::CloudWatch::Alarm" 
    Properties: 
     ActionsEnabled: true 
     AlarmActions: 
     - Ref: RequestCountScalingPolicy 
     OKActions: 
     - Ref: RequestCountScalingPolicy 
     AlarmDescription: "Scale when Request Count >= 70000" 
     AlarmName: "Scale when Request Count >= 70000" 
     ComparisonOperator: GreaterThanOrEqualToThreshold 
     Dimensions: 
     - Name: LoadBalancerName 
      Value: 
      Ref: AWSEBLoadBalancer 
     EvaluationPeriods: "1" 
     MetricName: RequestCount 
     Namespace: AWS/ELB 
     Period: "300" 
     Statistic: Sum 
     Threshold: 70000 
    RequestCountScalingPolicy: 
    Type: "AWS::AutoScaling::ScalingPolicy" 
    Properties: 
     AutoScalingGroupName: 
     Ref: "AWSEBAutoScalingGroup" 
     AdjustmentType: "ExactCapacity" 
     PolicyType: "StepScaling" 
     EstimatedInstanceWarmup: 120 
     StepAdjustments: 
     - 
      MetricIntervalLowerBound: "0" 
      MetricIntervalUpperBound: "2000" 
      ScalingAdjustment: "1" 
     - 
      MetricIntervalLowerBound: "2000" 
      MetricIntervalUpperBound: "20000" 
      ScalingAdjustment: "2" 
     - 
      MetricIntervalLowerBound: "20000" 
      MetricIntervalUpperBound: "30000" 
      ScalingAdjustment: "3" 
     - 
      MetricIntervalLowerBound: "30000" 
      MetricIntervalUpperBound: "40000" 
      ScalingAdjustment: "4" 
     - 
      MetricIntervalLowerBound: "40000" 
      MetricIntervalUpperBound: "50000" 
      ScalingAdjustment: "5" 
     - 
      MetricIntervalLowerBound: "50000" 
      MetricIntervalUpperBound: "60000" 
      ScalingAdjustment: "6" 
     - 
      MetricIntervalLowerBound: "60000" 
      MetricIntervalUpperBound: "70000" 
      ScalingAdjustment: "7" 
     - 
      MetricIntervalLowerBound: "70000" 
      ScalingAdjustment: "8" 
संबंधित मुद्दे