Azure Terraform(十三)提升 Azure Web App Plan 的性能

azure,terraform,十三,提升,web,app,plan,性能 · 浏览次数 : 149

小编点评

**引言** 在部署在云主机上的应用程序中, performance 问题和停机问题是经常出现的挑战。云主机上的资源分配可能不均衡,导致应用程序无法获得所需的资源。此外,在流量平缓时,应用程序可能浪费大量计算资源。 **Azure Terraform 系列** * **Azure Terraform (一)**:入门简介 * **Azure Terraform (二)**:语法详解 * **Azure Terraform (三)**:部署 Web 应用程序 * **Azure Terraform (四)**:状态文件存储 * **Azure Terraform (五)**:利用Azure DevOps 实现自动化部署基础资源 * **Azure Terraform (六)**:Common Module * **Azure Terraform (七)**:利用Azure DevOps 实现自动化部署基础资源(补充) * **Azure Terraform (八)**:利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署 * **Azure Terraform (九)**:利用 Azure DevOps Pipeline 的审批来控制流程发布 * **Azure Terraform (十)**:利用 Azure DevOps 的条件语句选择发布环境 * **Azure Terraform (十一)**:Azure DevOps Pipeline 内的动态临时变量的使用 * **Azure Terraform (十二)**:利用 Terraform 将文件上传到 Azure Blob Storage * **Azure Terraform (十三)**:提升 Azure  Web App Plan  的性能 **创建 Azure 应用服务计划资源** ```terraform resource "azurerm_app_service_plan" "app_service_plan" { name = "cnbateblogweb-app-service_plan" location = "East Asia" resource_group_name = "Web_Test_TF_RG" kind = "Linux" reserved = true sku { tier = "Standard" size = "S1" } } ``` **创建 Azure Web App 资源** ```terraform resource "azurerm_app_service" "app_service" { name = "cnbateblogweb-web-app" location = "${azurerm_app_service_plan.app_service_plan.location}" resource_group_name = "${azurerm_app_service_plan.app_service_plan.resource_group_name}" app_service_plan_id = "${azurerm_app_service_plan.app_service_plan.id}" site_config { linux_fx_version = "DOCKER|xxx:tag" } } ``` **使用 azurerm_monitor_autoscale_setting 配置自动缩放** ```terraform resource "azurerm_monitor_autoscale_setting" "app_service_autoscale" { name = "cnbateblogweb-autoscale" resource_group_name = "${azurerm_app_service_plan.app_service_plan.resource_group_name}" target_resource_id = "${azurerm_app_service_plan.app_service_paln.id}" profile { default_capacity { minimum = 1 maximum = 10 default = 1 } rule { metric_name = "cpu.user" metric_namespace = "microsoft.com/azure/virtualmachines/resourcehealth" threshold = 70 scale_action { direction = "Increase" type = "ChangeCount" value = 1 cooldown = "PT5M" } } } } ```

正文

一,引言  

  我们是否正在为部署在云主机上的应用程序性能缓慢和停机问题而苦恼?我们是否正在因为云主机上仅仅部署了应用程序,在流量平缓的时候而浪费大量的计算资源而心疼荷包。那么让我们来一起看看 Azure Web App Plan 吧!今天我们以 IAC 的方式来控制资源的创建,通过使用 Terraform 配置我们的 Azure Web App Plan,可以让我们可以轻松优化应用程序的性能和可扩展性以满足不断增长的用户群的需求。借助 Azure Web App Plan,我们可以轻松创建和管理在完全托管环境中运行的可缩放 Web 应用。我们可以使用 Terraform 对其进行配置,从而比以往更轻松地自动化部署我们的基础设施。

--------------------Azure Terraform 系列--------------------

1,Azure Terraform(一)入门简介

2,Azure Terraform(二)语法详解

3,Azure Terraform(三)部署 Web 应用程序

4,Azure Terraform(四)状态文件存储

5,Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源

6,Azure Terraform(六)Common Module

7,Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)

8,Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署

9,Azure Terraform(九)利用 Azure DevOps Pipeline 的审批来控制流程发布

10,Azure Terraform(十)利用 Azure DevOps 的条件语句选择发布环境

11,Azure Terraform(十一)Azure DevOps Pipeline 内的动态临时变量的使用

12,Azure Terraform(十二)利用 Terraform 将文件上传到 Azure Blob Storage

13,Azure Terraform(十三)提升 Azure  Web App Plan  的性能

二,正文

1,创建 Azure 应用服务计划资源

首先,您需要创建一个 Azure 应用服务计划资源。这是执行此操作的 Terraform 代码:

resource "azurerm_app_service_plan" "app_service_plan" {
  name                = "cnbateblogweb-app-service-plan"
  location            = "East Asia"
  resource_group_name = "Web_Test_TF_RG"
  kind                = "Linux"
  reserved = true
  
  sku {
    tier = "Standard"
    size = "S1"
  }
}

此代码在 "East Asia"(东亚)的 位置创建一个叫做 "cnbateblogweb-app-service-plan" Azure App Service Plan 资源 ,SKU 为 "Standard" 大小为“S1”。它还将 "reserved" 属性设置为 true。

2,创建 Azure Web 应用资源

上一步我们已经创建了 Azure 应用服务计划资源,接下来可以创建 Azure Web App。以下是执行此操作的 Terraform 代码:

resource "azurerm_app_service" "app_service" {
  name                = "cnbateblogweb-web-app"
  location            = "${azurerm_app_service_plan.app_service_plan.location}"
  resource_group_name = "${azurerm_app_service_plan.app_service_plan.resource_group_name}"
  app_service_plan_id  = "${azurerm_app_service_plan.app_service_plan.id}"
  
  site_config {
    linux_fx_version = "DOCKER|xxx:tag"
  }
}

此代码创建一个 Azure Web App 资源,该资源依赖与步骤 1 中创建的 Azure App Service Plan 资源。它还设置 “linux_fx_version” 属性以指定要用于 Azure Web App 的 Docker 映像和标记。

3,使用 azurerm_monitor_autoscale_setting 配置自动缩放

现在,让我们使用 azurerm_monitor_autoscale_setting,以下是执行此操作的 Terraform 代码:

resource "azurerm_monitor_autoscale_setting" "app_service_autoscale" {
  name                = "cnbateblogweb-autoscale"
  resource_group_name = "${azurerm_app_service_plan.app_service_plan.resource_group_name}"
  target_resource_id  = "${azurerm_app_service_plan.app_service_paln.id}"
  
  profile {
    default_capacity {
      minimum = 1
      maximum = 10
      default = 1
    }
    
    rule {
      metric_trigger {
        metric_name        = "CpuPercentage"
        metric_resource_id = "${azurerm_app_service_plan.example.id}"
        time_grain         = "PT1M"
        statistic          = "Average"
        time_window        = "PT5M"
        operator           = "GreaterThan"
        threshold          = 70
      }
      
      scale_action {
        direction         = "Increase"
        type              = "ChangeCount"
        value             = 1
        cooldown          = "PT5M"
      }

此 Terraform 代码创建一个 Azure Web App Plan 的自动缩放设置,用于监视 Azure Web App Plan 资源的 CPU 使用率,并在 CPU 使用率超过 70% 时自动扩展容量。同时还将设置最小和最大容量分别设置为 1 和 10,并将默认容量设置为 1。使用此自动缩放设置,可以确保我们的 Web 应用程序拥有处理高流量所需的资源,同时在流量减少时通过缩减来节省资金。

三,结尾

  通过执行这些简单的步骤,我们可以使用 Terraform 轻松配置 Azure App Service Plan 资源,并利用  azurerm_monitor_autoscale_setting。借助 Azure Web App Plan,可以确保 Azure Web App 的最佳性能,同时节省资源成本。对于企业/个人的云上资源的成本是个不错的选择!!!

 参考链接:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/app_service

作者:Allen 

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

与Azure Terraform(十三)提升 Azure Web App Plan 的性能相似的内容:

Azure Terraform(十三)提升 Azure Web App Plan 的性能

一,引言 一,引言 我们是否正在为部署在云主机上的应用程序性能缓慢和停机问题而苦恼?我们是否正在因为云主机上仅仅部署了应用程序,在流量平缓的时候而浪费大量的计算资源而心疼荷包。那么让我们来一起看看 Azure Web App Plan 吧!今天我们以 IAC 的方式来控制资源的创建,通过使用 Ter

Azure Terraform(十二)利用 Terraform 将文件上传到 Azure Blob Storage

一,引言 本篇文章中,我门将学习如何利用 Terraform 将 文件以及文件夹上传到 Azure Blob Storage,这个对于我们来说很方便,可以将一些不重要的内容也存储在源代码管理工具中! 开始今天的内容之前,我们先来看看今天的主角 Terraform fileset Function 根

Azure Terraform(十四)Azure Key Vault 的机密管理

一,引言 最近有网友私信我,将 Terraform 部署到 Azure 是一种将基础结构作为代码进行管理的好方法,但是如何使用 Azure Key Vault 来存储我们的 Secret ?在这篇博文中,我将给大家展示一下展示如何使用 Terraform 引用 Azure Key Vault Sec

【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)

在前一篇文章中,我们是把.NET 8应用读取SSL证书(X509)示例部署在App Service Windows环境中,那么如果部署在Linux环境,以及Linux Container中呢? 根据前文中的第一种方法,直接在把证书文件包含在源文件中,通过相对路径读取证书文件的方式,经测试,可以正常工

【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)

在使用App Service服务部署业务应用,因为有些第三方的接口需要调用者携带TLS/SSL证书(X509 Certificate),在官方文档中介绍了两种方式在代码中使用证书: 1) 直接使用证书文件路径加载证书 new X509Certificate2 2) 从系统的证书库中通过指纹加载...

Azure Service Principals ----- Azure 上最好保守的秘密的服务

一,引言 Azure Service Principals 是 Azure Active Directory (AAD) 中的一种标识,代表应用程序,服务,自动化流程。Service Principals 支持各种 Azure 服务和资源之家的安全通信,为应用程序提供了一种进行身份验证并于 Azur

【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码

问题描述 对于Azure资源进行配置操作,门户上可以正常操作。但是想通过Python代码实现,这样可以批量处理。那么在没有SDK的情况下,是否有快速办法呢? 问题解答 当然可以,Azure Portal上操作的所有资源都是通过REST API来实现的,所以只要找到正确的API,就可以通过浏览器中抓取

【Azure APIM】列举几种在APIM 策略中的主动生产的错误语句

问题描述 在为APIM服务配置了诊断日志(Diagnostic Setting),把日志收集在Log A Workspace中,需要验证日志中是否能查看到请求的错误信息。 所以想人为的来制造一些错误。经过网络搜索,参考Policy的文档介绍后,完成了以下3种错误 第一种:使用 return-resp

【Azure Developer】.Net 简单示例 "文字动图显示" Typing to SVG

问题描述 看见一个有趣的页面,可以把输入的文字信息,直接输出SVG图片,还可以实现动图模式。 示例URL: https://readme-typing-svg.demolab.com/?font=Fira+Code&pause=1000&color=F7F7F7&background=233911F

Azure DevOps Server 入门实践与安装部署

一,引言 最近一段时间,公司希望在自己的服务器上安装本地版的 Azure DevOps Service(Azure DevOps Server),用于项目内的测试,学习。本着学习的目的,我也就开始学习在测试服务器上安装 Azure DevOps Server 2022 Express 以及测试的 D