Şablon kullanarak Web Uygulaması artı Redis için Azure Cache oluşturma

Bu makalede, Redis için Azure Cache ile azure web uygulaması dağıtan bir Azure Resource Manager şablonu oluşturmayı öğreneceksiniz. Aşağıdaki dağıtım ayrıntılarını öğreneceksiniz:

  • Hangi kaynakların dağıtılacağını tanımlama
  • Dağıtım yürütülürken belirtilen parametreleri tanımlama

Bu şablonu kendi dağıtımlarınız için kullanabilir veya kendi gereksinimlerinize göre özelleştirebilirsiniz.

Şablon oluşturma hakkında daha fazla bilgi için bkz. Azure Resource Manager şablonları yazma. Önbellek kaynak türlerinin JSON söz dizimi ve özellikleri hakkında bilgi edinmek için bkz . Microsoft.Cache kaynak türleri.

Şablonun tamamı için bkz. Redis için Azure Cache şablonu içeren Web Uygulaması.

Dağıtacakları

Bu şablonda şunları dağıtacaksınız:

  • Azure Web App
  • Redis için Azure Önbelleği

Dağıtımı otomatik olarak çalıştırmak için aşağıdaki düğmeyi seçin:

Deploy to Azure

Belirtilmesi gereken parametreler

Azure Resource Manager sayesinde, şablon dağıtıldığında belirtmek istediğiniz değerlerin parametrelerini siz tanımlarsınız. Şablon, parametre değerlerinin tümünü içeren Parametreler adlı bir bölüm içerir. Dağıttığınız projeye veya dağıttığınız ortama göre değişen değerler için bir parametre tanımlamanız gerekir. Sabit değerler için parametre tanımlamayın. Her parametre değeri, dağıtılan kaynakları tanımlamak için şablonda kullanılır.

Parametreleri tanımlarken, bir kullanıcının dağıtım sırasında hangi değerleri sağlayabileceğini belirtmek için allowedValues alanını kullanın. Dağıtım sırasında değer sağlanmazsa parametreye değer atamak için defaultValue alanını kullanın.

Şablondaki her parametreyi açıklayacağız.

Sitename

Oluşturmak istediğiniz web uygulamasının adı.

"siteName":{
  "type":"string"
}

hostingPlanName

Web uygulamasını barındırmak için kullanılacak App Service planının adı.

"hostingPlanName":{
  "type":"string"
}

sku

Barındırma planının fiyatlandırma katmanı.

"sku": {
  "type": "string",
  "allowedValues": [
    "F1",
    "D1",
    "B1",
    "B2",
    "B3",
    "S1",
    "S2",
    "S3",
    "P1",
    "P2",
    "P3",
    "P4"
  ],
  "defaultValue": "S1",
  "metadata": {
    "description": "The pricing tier for the hosting plan."
  }
}

Şablon, bu parametre için izin verilen değerleri tanımlar ve hiçbir değer belirtilmezse varsayılan değerini S1 atar.

workerSize

Barındırma planının örnek boyutu (küçük, orta veya büyük).

"workerSize":{
  "type":"string",
  "allowedValues":[
    "0",
    "1",
    "2"
  ],
  "defaultValue":"0"
}

Şablon, bu parametre (0, 1veya 2) için izin verilen değerleri tanımlar ve hiçbir değer belirtilmezse varsayılan değerini 0 atar. Değerler küçük, orta ve büyük değerlere karşılık gelir.

cacheSKUName

Yeni Redis için Azure Cache fiyatlandırma katmanı.

    "cacheSKUName": {
      "type": "string",
      "allowedValues": [
        "Basic",
        "Standard",
        "Premium"
      ],
      "defaultValue": "Basic",
      "metadata": {
        "description": "The pricing tier of the new Azure Cache for Redis."
      }
    },

Şablon, bu parametre (Temel, Standart veya Premium) için izin verilen değerleri tanımlar ve hiçbir değer belirtilmezse varsayılan bir değer (Temel) atar. Temel, 53 GB'a kadar birden çok boyuta sahip tek bir düğüm sağlar. Standart, 53 GB'a ve %99,9 SLA'ya kadar birden çok boyuta sahip iki düğümlü Birincil/Çoğaltma sağlar.

cacheSKUFamily

Sku'nun ailesi.

    "cacheSKUFamily": {
      "type": "string",
      "allowedValue/s": [
        "C",
        "P"
      ],
      "defaultValue": "C",
      "metadata": {
        "description": "The family for the sku."
      }
    },

cacheSKUCapacity

Yeni Redis için Azure Cache örneğinin boyutu.

Temel ve Standart aileler için:

    "cacheSKUCapacity": {
      "type": "int",
      "allowedValues": [
        0,
        1,
        2,
        3,
        4,
        5,
        6
      ],
      "defaultValue": 0,
      "metadata": {
        "description": "The size of the new Azure Cache for Redis instance. "
      }
    }

Premium değer önbellek kapasitesi aynı şekilde tanımlanır, ancak izin verilen değerler 0 ile 6 yerine 1'den 5'e kadar çalışır.

Şablon, bu parametre için izin verilen tamsayı değerlerini tanımlar (Temel ve Standart aileler için 0-6; Premium ailesi için 1 ile 5 arasında). Değer belirtilmezse şablon, Temel ve Standart için varsayılan 0, Premium için 1 varsayılan değerini atar.

Değerler aşağıdaki önbellek boyutlarına karşılık gelir:

Değer Temel ve Standart
önbellek boyutu
Premium
önbellek boyutu
0 250 MB (varsayılan) yok
1 1 GB 6 GB (varsayılan)
2 2.5 GB 13 GB
3 6 GB 26 GB
4 13 GB 53 GB
5 26 GB 120 GB
6 53 GB yok

Adlar için değişkenler

Bu şablon, kaynakların adlarını oluşturmak için değişkenleri kullanır. Kaynak grubu kimliğine göre bir değer oluşturmak için uniqueString işlevini kullanır.

"variables": {
  "hostingPlanName": "[concat('hostingplan', uniqueString(resourceGroup().id))]",
  "webSiteName": "[concat('webSite', uniqueString(resourceGroup().id))]",
  "cacheName": "[concat('cache', uniqueString(resourceGroup().id))]"
},

Dağıtılacak kaynaklar

App Service planı

Web uygulamasını barındırmak için hizmet planını oluşturur. Planın adını hostingPlanName parametresi aracılığıyla sağlarsınız. Planın konumu, kaynak grubu için kullanılan konumla aynıdır. Fiyatlandırma katmanı ve çalışan boyutu sku ve workerSize parametrelerinde belirtilir.

{
  "apiVersion": "2015-08-01",
  "name": "[parameters('hostingPlanName')]",
  "type": "Microsoft.Web/serverfarms",
  "location": "[resourceGroup().location]",
  "sku": {
    "name": "[parameters('sku')]",
    "capacity": "[parameters('workerSize')]"
  },
  "properties": {
    "name": "[parameters('hostingPlanName')]"
  }
},

Redis için Azure Önbelleği

Web uygulamasıyla kullanılan Redis için Azure Cache oluşturur. Önbelleğin adı cacheName değişkeninde belirtilir.

Şablon, önbelleği kaynak grubuyla aynı konumda oluşturur.

{
  "name": "[variables('cacheName')]",
  "type": "Microsoft.Cache/Redis",
  "location": "[resourceGroup().location]",
  "apiVersion": "2015-08-01",
  "dependsOn": [ ],
  "tags": {
    "displayName": "cache"
  },
  "properties": {
    "sku": {
      "name": "[parameters('cacheSKUName')]",
      "family": "[parameters('cacheSKUFamily')]",
      "capacity": "[parameters('cacheSKUCapacity')]"
    }
  }
}

Web uygulaması (Redis için Azure Cache)

webSiteName değişkeninde belirtilen ada sahip web uygulamasını oluşturur.

Web uygulamasının, Redis için Azure Cache ile çalışmasını sağlayan uygulama ayarı özellikleriyle yapılandırıldığına dikkat edin. Bu uygulama ayarları, dağıtım sırasında sağlanan değerlere göre dinamik olarak oluşturulur.

{
  "apiVersion": "2015-08-01",
  "name": "[variables('webSiteName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]"
  ],
  "tags": {
    "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "empty",
    "displayName": "Website"
  },
  "properties": {
    "name": "[variables('webSiteName')]",
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
  },
  "resources": [
    {
      "apiVersion": "2015-08-01",
      "type": "config",
      "name": "appsettings",
      "dependsOn": [
        "[concat('Microsoft.Web/Sites/', variables('webSiteName'))]",
        "[concat('Microsoft.Cache/Redis/', variables('cacheName'))]"
      ],
      "properties": {
       "CacheConnection": "[concat(variables('cacheHostName'),'.redis.cache.windows.net,abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/Redis', variables('cacheName')), '2015-08-01').primaryKey)]"
      }
    }
  ]
}

Web uygulaması (RedisEnterprise)

RedisEnterprise için kaynak türleri biraz farklı olduğundan listKeys'i gerçekleştirmenin yolu farklıdır:

{
  "apiVersion": "2015-08-01",
  "name": "[variables('webSiteName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]"
  ],
  "tags": {
    "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "empty",
    "displayName": "Website"
  },
  "properties": {
    "name": "[variables('webSiteName')]",
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
  },
  "resources": [
    {
      "apiVersion": "2015-08-01",
      "type": "config",
      "name": "appsettings",
      "dependsOn": [
        "[concat('Microsoft.Web/Sites/', variables('webSiteName'))]",
        "[concat('Microsoft.Cache/RedisEnterprise/databases/', variables('cacheName'), "/default")]",
      ],
      "properties": {
       "CacheConnection": "[concat(variables('cacheHostName'),abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/RedisEnterprise', variables('cacheName'), 'default'), '2020-03-01').primaryKey)]"
      }
    }
  ]
}

Dağıtımı çalıştırma komutları

Kaynakları Azure’da dağıtmak için, Azure hesabınızda oturum açmış olmanız ve Azure Resource Manager modülünü kullanıyor olmanız gerekir. Azure Resource Manager’ı Azure PowerShell veya Azure CLI ile kullanmayı öğrenmek için bkz:

Aşağıdaki örnekler, hesabınızda belirtilen adlara sahip bir kaynak grubunun olduğunu varsaymaktadır.

PowerShell

New-AzResourceGroupDeployment -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.json -ResourceGroupName ExampleDeployGroup

Azure CLI

azure group deployment create --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.json -g ExampleDeployGroup