Azure 防火墙支持内置自动缩放,以基于 CPU 利用率、吞吐量和连接卷动态调整容量。 对于任务关键型工作负荷或可预测的流量高峰,可以配置更大的控制以确保一致的性能。
预缩放 允许主动设置最小和最大容量单位。 此配置在定义的范围内自动缩放时提供可预测的性能。
主要优势
通过预缩放,可以:
- 针对高流量事件或已知流量高峰的预预配容量
- 通过设置基线容量来保持一致的性能
- 通过“观察容量”指标观察实时容量
预缩放的工作原理
可以在 autoscaleConfiguration 设置中配置两个属性:
| 资产 | Description | 允许的范围 |
|---|---|---|
| minCapacity | 始终预配的最小容量单位数 | 2 到 50 |
| maxCapacity | 防火墙可缩放到的最大容量单位数 | 2 到 50 |
如果 minCapacity 和 maxCapacity 设置为相同的值,则防火墙以固定容量运行,且不进行自动缩放。
重要
最小值和最大容量值必须相等,或者其差异必须大于 1。 例如,如果 minCapacity 为 5,maxCapacity 必须至少为 7。
配置选项
可以使用 Azure 门户、Azure PowerShell、ARM 模板或 Bicep 配置预缩放。
门户示例
若要在 Azure 门户中配置预缩放,请执行以下作:
- 访问 Azure 防火墙资源。
- 在 “设置”下,选择“ 缩放”选项。
- 选择 “预缩放”。
- 设置所需的最小和最大容量值。
PowerShell 示例
New-AzFirewall `
-Name "MyFirewall" `
-ResourceGroupName "MyResourceGroup" `
-Location "chinaeast" `
-VirtualNetwork (Get-AzVirtualNetwork -Name "MyVNet" -ResourceGroupName "MyResourceGroup") `
-PublicIpAddress (Get-AzPublicIpAddress -Name "MyFW-PublicIP" -ResourceGroupName "MyResourceGroup") `
-MinCapacity 4 `
-MaxCapacity 10
Bicep 示例
有关参考,下面是使用 Bicep 模板的示例配置,可在其中查看新的 autoscaleConfiguration 属性: Azure 防火墙 Bicep 模板
选择容量值
若要确定最佳 minCapacity 和 maxCapacity 值,
- 设置合理的最小值以避免不必要的扩展:从可以舒适应对典型高峰流量的最小容量开始,以便在正常情况下缩放事件很少发生。
- 留出余地,将最大容量设置为高于预期峰值,以处理意外激增。 Azure 防火墙自动扩展将容量增加到您设定的最大容量值。
- 监视观察的容量指标 ,了解缩放的频率,并根据需要调整最小值和最大值。 如果缩放频繁发生,请考虑提高 minCapacity。
- 配置观察容量度量的警报,以便在缩放事件发生时收到通知,从而评估是否需要调整。
监测
预缩放引入了新的可观测性:
| 指标 | Description |
|---|---|
| 观察到的容量 | 显示当前预配的容量单位数,并跟踪随时间推移的缩放活动。 最多可能需要 30 分钟才能显示更新。 |
| Alerts | 可以使用 Observed Capacity 指标为自动缩放事件配置警报。 |
处理性能问题
如果遇到数据包丢弃或连接问题:
- 查看观察的容量 以评估容量趋势。
- 请考虑增加最小容量 以提供更多的容量支持,或者频繁向上缩放。
- 使用关键遥测指标 (例如延迟探测、吞吐量和观察容量)来优化缩放策略。
局限性
使用预缩放时,请记住以下注意事项:
- 无区域级别容量保证:如果区域缺少容量,缩放可能会失败或延迟。
- 固定容量禁用自动缩放:如果 minCapacity 等于 maxCapacity,则禁用自动缩放。
- 保留以前的设置:如果防火墙已设置自动缩放配置值,而您在不指定自动缩放配置属性的情况下(例如通过 Bicep、ARM 模板或其他模板)部署或更新资源,防火墙将继续使用现有的自动缩放配置值。 此行为有助于防止意外覆盖或丢失您的缩放设定。
- 资源更改时配置重置:删除、重新创建或迁移防火墙可能会将容量值重置为默认值。
- 活动缩放或维护事件:如果防火墙处于中级或升级期间,预缩放更改可能会失败。 完成后重试。
已知问题
修改预缩放配置时存在已知问题:
尝试将最大容量值(maxCapacity)减少到低于其以前配置的值的数字时,作可能会失败。
示例:
| Scenario | Description | 结果 |
|---|---|---|
| 示例 1 | 你当前的缩放范围为 min=2,max=20,并尝试将其预缩放为 min=2,max=4。 | ❌ 发生错误 |
| 示例 2 | 默认缩放为 min=2,max=20,并且尝试将预缩放为 min=2,max=24。 | ✅ 运行正常 |
| 示例 3 | 在以前的预缩放(min=2,max=24)之后,尝试再次将预缩放为 min=2,max=20。 | ❌ 发生错误 |
缓解步骤:
如果出现此问题:
- 在 Azure 门户中重置为默认缩放,或使用 API 或 ARM 将 autoscaleConfiguration 属性设置为 null。
- 重新应用预缩放配置,确保 maxCapacity 大于或等于以前的最大值(例如 maxCapacity >= 20)。
后续步骤
- 了解如何 监视 Azure 防火墙
- 查看 Azure 防火墙最佳做法