Đọc số liệu của giải pháp predictive scaling

Predictive Scaling

Từ lượng traffic và workloads mà hệ thống nhận và gửi đi mỗi ngày, ASG có thể “dự đoán” traffic và workloads trong tương lai cho những ngày tiếp theo. Điều này giúp ASG phản hồi tốt hơn bằng cách khởi chạy hoặc chấm dứt các instances một cách phù hợp. Thông thường, Predictive Scaling được sử dụng kết hợp với các loại scaling khác.

Cấu hình

  1. Giống như trong phần trước, mình sẽ scale in thủ công với ASG và đợi ASG chấm dứt tất cả các instances được tạo bởi dịch vụ này.

7.4.1

  1. Tiếp theo, xóa automatic scaling policy để tránh ảnh hưởng đến bài kiểm tra này.

7.4.2 7.4.2

  1. Sau đó, đi đến tab Automatic Scaling, cuộn xuống phần Predictive scaling policies, và nhấp vào Create predictive policy để tạo một policy mới.

7.4.3

  1. Trong phần này, chúng ta sẽ cấu hình như sau:
  • Policy details
    • Name: PredictCPUUtilizationAt15Percent (bạn có thể chọn bất kỳ tên nào)
    • Turn on scaling: bật Scale based on forecast. Với predictive scaling policy, về cơ bản nó chỉ đưa ra các dự đoán, nhưng chúng ta cũng có thể sử dụng nó để khởi chạy các instances.

7.4.4

  1. Tiếp theo, trong phần Metric and target utilization:
  • Metrics: chọn Custom metric pair.
  • Load metric: chọn Custom CloudWatch metric.
  • Scaling metric: chọn Custom CloudWatch metric.
  1. Bạn sẽ thêm custom metric JSON như sau:
  • Đối với Load metric
{
  "CustomizedLoadMetricSpecification": {
    "MetricDataQueries": [
      {
        "Id": "cpu_sum",
        "MetricStat": {
          "Metric": {
            "Namespace": "FCAJ Custom Metrics",
            "MetricName": "WSCustomCPUUTILIZATION",
            "Dimensions": [
              {
                "Name": "AutoScalingGroupName",
                "Value": "FCAJ-ASG"
              }
            ]
          },
          "Stat": "Sum"
        },
        "Label": "Total CPU Utilization in ASG",
        "ReturnData": true
      }
    ]
  }
}
  • Đối với Scaling metric
{
  "CustomizedScalingMetricSpecification": {
    "MetricDataQueries": [
      {
        "Id": "cpu_avg",
        "MetricStat": {
          "Metric": {
            "Namespace": "FCAJ Custom Metrics",
            "MetricName": "WSCustomCPUUTILIZATION",
            "Dimensions": [
              {
                "Name": "AutoScalingGroupName",
                "Value": "FCAJ-ASG"
              }
            ]
          },
          "Stat": "Average"
        },
        "Label": "Average CPU Utilization in ASG",
        "ReturnData": true
      }
    ]
  }
}

7.4.4

  1. Tiếp theo, tích chọn Add custom capacity metric. Tương tự như hai bước trước, mình sẽ thêm custom metric JSON cho Capacity metric.
{
  "CustomizedCapacityMetricSpecification": {
    "MetricDataQueries": [
      {
        "Id": "capacity_avg",
        "MetricStat": {
          "Metric": {
            "Namespace": "FCAJ Custom Metrics",
            "MetricName": "WSCustomGroupInstances",
            "Dimensions": [
              {
                "Name": "AutoScalingGroupName",
                "Value": "FCAJ-ASG"
              }
            ]
          },
          "Stat": "Average"
        },
        "Label": "Number of instances in ASG",
        "ReturnData": true
      }
    ]
  }
}

7.4.4

Nếu bạn đã cấu hình 2.6 - Prepare metrics for predictive scaling trước đó, sau khi hoàn tất thiết lập, bạn sẽ thấy hai biểu đồ (charts) được hiển thị.

  1. Trong phần Pre-launch instances của Additional scaling settings - optional, hãy đặt thành 1 minute. Nhấp vào Create để tạo policy. 7.4.4

Tương tự như Dynamic scaling, cài đặt Pre-launch instances này sẽ ảnh hưởng đến thời điểm các instances được khởi chạy. Ví dụ: nếu ASG dự đoán có một đỉnh (peak) vào lúc 23:00, nó sẽ khởi chạy các instances vào lúc 22:59, theo cấu hình.

Kiểm tra kết quả. 7.4.4

Đọc Số liệu từ Dữ liệu Mẫu

  1. Trong policy đó, bạn sẽ thấy hai biểu đồ: LoadCapacity. Các biểu đồ này cung cấp dữ liệu về traffic trước đó và số lượng instances được sử dụng trong những ngày trước, cho phép đưa ra các dự đoán cho những ngày tiếp theo, được thể hiện bằng đường màu tím. 7.4.4

Biểu đồ hiển thị theo múi giờ UTC+0, và chúng ta đang ở UTC+7, vì vậy bạn sẽ cần cộng thêm 7 giờ khi đọc các biểu đồ này.

  1. Đầu tiên, hãy tập trung vào biểu đồ bên trái. Vào lúc 15:00 UTC (tức là 22:00 giờ Việt Nam), tổng tải là 1,565.465. 7.4.4

  2. Để hiểu con số này đại diện cho điều gì, hãy nhìn vào biểu đồ bên phải. 7.4.4

  3. Chúng ta có thể thấy rằng vào thời điểm đó, 10 instances được dự đoán sẽ được khởi chạy, và load có sự tương quan với các instances này. Bạn cũng có thể kiểm tra các khoảng thời gian khác. 7.4.4 7.4.4

Kết luận

Chúng ta có thể kết hợp Predictive Scaling với Dynamic Scaling hoặc các loại scaling khác để tăng tính linh hoạt của ASG và độ tin cậy của hệ thống. Đối với các hệ thống có load ổn định theo thời gian, việc sử dụng predictive scaling cũng là một cách tiếp cận hợp lý.