0

次の方法でスケーリングするアプリ サービス プランがあります。

  • 範囲: 2 ~ 20 インスタンス
  • CPU > 20%: 20 インスタンスにスケーリング
  • CPU < 15%: 2 つのインスタンスにスケーリング

時間の経過とともに表示される実際のインスタンス数は次のとおりです。

  • 20 インスタンス
  • (CPU ~ 0%)
  • 2 インスタンスにスケールダウン
  • (ロード開始: CPU > 50%)
  • 最大 20 インスタンス (~5 分)
  • (負荷終了: CPU ~ 0%)
  • 15 インスタンスまで (5 分以内)
  • 12 インスタンスまで (約 5 分)
  • 5 インスタンスまで (~5 分)
  • 2 インスタンスまで (~5 分)

間に追加の手順を実行せずに、2 つのインスタンスに即座にスケーリングする方法は?

また、2 インスタンスから 20 インスタンスへのスケールアップが失敗し、2 つのインスタンスに大きな負荷がかかる場合があります。大量の負荷がかかるときにユーザーに 2 つのインスタンスを残すのではなく、できるだけ多くのインスタンスにスケーリングするように azure に指示することはできますか?

更新: スケール設定の JSON を追加します。

更新: スケール設定のスクリーンショットを追加します。

全体的なスケール設定: スケール設定とグラフ

スケールアップ方法: 拡大する

縮小方法: スケールダウン

{
  "id": "...",
  "name": "...",
  "type": "Microsoft.Insights/autoscaleSettings",
  "location": "westus",
  "tags": {
    "$type": "...",
    "...": "Resource"
  },
  "properties": {
    "profiles": [
      {
        "name": "Default",
        "capacity": {
          "minimum": "2",
          "maximum": "20",
          "default": "2"
        },
        "rules": [
          {
            "metricTrigger": {
              "metricName": "CpuPercentage",
              "metricNamespace": "",
              "metricResourceUri": "...",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT5M",
              "timeAggregation": "Maximum",
              "operator": "GreaterThan",
              "threshold": 20
            },
            "scaleAction": {
              "direction": "Increase",
              "type": "ExactCount",
              "value": "20",
              "cooldown": "PT1M"
            }
          },
          {
            "metricTrigger": {
              "metricName": "CpuPercentage",
              "metricNamespace": "",
              "metricResourceUri": "...",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT5M",
              "timeAggregation": "Average",
              "operator": "LessThan",
              "threshold": 15
            },
            "scaleAction": {
              "direction": "Decrease",
              "type": "ExactCount",
              "value": "2",
              "cooldown": "PT1M"
            }
          }
        ]
      }
    ],
    "enabled": true,
    "name": "...",
    "targetResourceUri": "...",
    "notifications": [
      {
        "operation": "Scale",
        "email": {
          "sendToSubscriptionAdministrator": false,
          "sendToSubscriptionCoAdministrators": false,
          "customEmails": [
            "..."
          ]
        },
        "webhooks": null
      }
    ]
  }
4

1 に答える 1

1

Web アプリの自動スケール設定をカスタマイズして、要件を満たすことができます。

C# を使用している場合は、Azure Monitoring Services Management Libraryを活用できます。それ以外の場合は、REST API を使用して言語で実装し、自動スケール設定を管理することもできます。設定の要素の詳細な説明については、https://msdn.microsoft.com/en-us/library/azure/dn510367.aspxを参照してください。

詳細については、 https://github.com/Azure/azure-content/blob/master/articles/best-practices-auto-scaling.mdを参照してください。

アップデート

Use Azure Autoscaleの最後の段落によると:

複数のポリシーとルールを構成すると、それらが互いに競合する可能性があります。Autoscale では、次の競合解決ルールを使用して、常に十分な数のインスタンスが実行されていることを確認します。

  • スケールアウト操作は、スケールイン操作よりも常に優先されます。
  • スケールアウト操作が競合する場合、インスタンス数の最大の増加を開始するルールが優先されます。
  • スケールイン操作が競合する場合、インスタンス数の最小の減少を開始するルールが優先されます。
于 2016-08-16T05:56:36.923 に答える