{"id":395,"date":"2021-10-31T23:59:19","date_gmt":"2021-10-31T23:59:19","guid":{"rendered":"http:\/\/192.168.8.123\/?p=395"},"modified":"2022-02-11T11:20:40","modified_gmt":"2022-02-11T11:20:40","slug":"implementing-highly-available-azure-iaas-compute-architecture","status":"publish","type":"post","link":"https:\/\/exceedthecloud.com\/?p=395","title":{"rendered":"Implementing Highly Available Azure IaaS Compute Architecture"},"content":{"rendered":"\n<p>Cloud infrastructure services, known as Infrastructure as a Service (IaaS), are made of highly scalable and automated compute resources. IaaS is fully self-service for accessing and monitoring computers, networking, storage, and other services. IaaS allows businesses to purchase resources on-demand and as-needed instead of having to buy hardware outright.<\/p>\n\n\n\n<p>This labs are a replay of exercises done during my course on AZ-303 Microsoft Azure Architect Technologies and are intended to test a range of highly available IaaS compute deployments, including:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Availability sets-based deployment of Azure VMs behind an Azure Load Balancer Basic<\/li><li>Zone-redundant deployment of Azure VMs behind an Azure Load Balancer Standard<\/li><li>Zone-redundant deployment of Azure VM scale sets behind an Azure Application Gateway<\/li><li>Automatic horizontal scaling of Azure VM scale sets (autoscaling)<\/li><li>Manual vertical scaling (compute and storage) of Azure VM scale sets<\/li><\/ul>\n\n\n\n<p>Prerequisites for this labs : <a href=\"https:\/\/azure.microsoft.com\/en-us\/free\/\" target=\"_blank\" rel=\"noreferrer noopener\">Azure Account<\/a> \/&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/marcelin-ndjila\/Practical-Labs-Series\/blob\/master\/Azurelabs03.zip\" target=\"_blank\">Download Labs Files here<\/a><\/p>\n\n\n\n<p><strong>Lab 1: Implement and analyze highly available Azure VM deployments using availability sets and Azure Load Balancer Basic<\/strong><\/p>\n\n\n\n<p>The main tasks for this lab are as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Deploy highly available Azure VMs into an availability set behind an Azure Load Balancer Basic by using Azure Resource Manager templates<\/li><li>Analyze highly available Azure VMs deployed into an availability set behind an Azure Load Balancer Basic<\/li><li>Remove Azure resources deployed in the exercise<\/li><\/ul>\n\n\n\n<p><strong>Task 1: Deploy highly available Azure VMs into an availability set behind an Azure Load Balancer Basic by using Azure Resource Manager templates<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>From your lab computer, start a web browser, navigate to the&nbsp;<a href=\"https:\/\/portal.azure.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Azure portal<\/a>, and sign in by providing credentials of a user account with the Owner role in the subscription you will be using in this lab.<\/li><li>In the Azure portal, open the&nbsp;<strong>Cloud Shell<\/strong>&nbsp;pane by selecting on the toolbar icon directly to the right of the search textbox.<\/li><li>If prompted to select either&nbsp;<strong>Bash<\/strong>&nbsp;or&nbsp;<strong>PowerShell<\/strong>, select&nbsp;<strong>Bash<\/strong>.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: If this is the first time you are starting&nbsp;<strong>Cloud Shell<\/strong>&nbsp;and you are presented with the&nbsp;<strong>You have no storage mounted<\/strong>&nbsp;message, select the subscription you are using in this lab, and select&nbsp;<strong>Create storage<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"4\"><li>From the Cloud Shell pane, run the following to register the Microsoft.Insights resource provider in preparation for the upcoming exercises in this lab:<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az provider register --namespace 'Microsoft.Insights'<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"134\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img1-11-1024x134.png\" alt=\"\" class=\"wp-image-2172\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img1-11-1024x134.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img1-11-300x39.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img1-11-768x100.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img1-11.png 1362w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the toolbar of the Cloud Shell pane, select the&nbsp;<strong>Upload\/Download files<\/strong>&nbsp;icon, in the drop-down menu select&nbsp;<strong>Upload<\/strong>, and upload the file&nbsp;<strong>\\Azurelabs03\\azuredeployexceed30305suba.json<\/strong>&nbsp;into the Cloud Shell home directory.<\/li><li>From the Cloud Shell pane, run the following to designate the Azure region you will be using in this lab (replace the&nbsp;&lt;Azure region&gt;&nbsp;placeholder with the name of the Azure region that is available for deployment of Azure VMs in your subscription and which is closest to the location of your lab computer):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>LOCATION='EastUS'<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: To identify Azure regions where you can provision Azure VMs, refer to&nbsp;<a href=\"https:\/\/azure.microsoft.com\/en-us\/regions\/offers\/\"><strong>https:\/\/azure.microsoft.com\/en-us\/regions\/offers\/<\/strong><\/a><\/p>\n\n\n\n<p><strong>Note<\/strong>: To identify the names of the Azure regions to use when setting the value of the&nbsp;<strong>LOCATION<\/strong>&nbsp;variable, run&nbsp;az account list-locations &#8211;query &#8220;[].{name:name}&#8221; -o table. Make sure to use the notation which does not include a space, e.g.&nbsp;<strong>eastus<\/strong>&nbsp;rather than&nbsp;<strong>US East<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"3\"><li>From the Cloud Shell pane, run the following to create an instance of Network Watcher in preparation for the upcoming exercises in this lab:<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az network watcher configure --resource-group NetworkWatcherRG --locations $LOCATION --enabled -o table<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: If you receive an error indicating there is no \u201cNetworkWatcherRG\u201d resource group, create a resource group from the portal named NetworkWatcherRG and rerun the command.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"4\"><li>From the Cloud Shell pane, run the following to create a resource group in the designated Azure region.<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az deployment sub create --location $LOCATION --template-file azuredeployexceed30305suba.json --parameters rgName=exceed05a-labRG rgLocation=$LOCATION\n\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"372\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img2-11-1024x372.png\" alt=\"\" class=\"wp-image-2046\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img2-11-1024x372.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img2-11-300x109.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img2-11-768x279.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img2-11.png 1359w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>From the Cloud Shell pane, upload the Azure Resource Manager template&nbsp;<strong>\\Azurelabs03\\azuredeployexceed30305rga.json<\/strong>.<\/li><li>From the Cloud Shell pane, upload the Azure Resource Manager parameter file&nbsp;<strong>\\Azurelabs03\\azuredeployexceed30305rga.parameters.json<\/strong>.<\/li><li>From the Cloud Shell pane, run the following to deploy an Azure Load Balancer Basic with its backend pool consisting of a pair of Azure VMs hosting Windows Server 2019 Datacenter Core into the same availability set (replace the&nbsp;&lt;vm_Size&gt;&nbsp;placeholder with the size of the Azure VM you intend to use for this deployment, such as&nbsp;Standard_D2s_v3):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az deployment group create --resource-group exceed05a-labRG --template-file azuredeployexceed30305rga.json --parameters @azuredeployexceed30305rga.parameters.json vmSize=Standard_D2s_v3<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"413\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img3-10-1024x413.png\" alt=\"\" class=\"wp-image-2051\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img3-10-1024x413.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img3-10-300x121.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img3-10-768x310.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img3-10.png 1366w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: Wait for the deployment to complete before proceeding to the next task. This should take about 10 minutes.<\/p>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, close the&nbsp;<strong>Cloud Shell<\/strong>&nbsp;pane.<\/li><\/ol>\n\n\n\n<p><strong>Task 2: Analyze highly available Azure VMs deployed into an availability set behind an Azure Load Balancer Basic<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, search for and select&nbsp;<strong>Network Watcher<\/strong>&nbsp;and, on the&nbsp;<strong>Network Watcher<\/strong>&nbsp;blade, select&nbsp;<strong>Topology<\/strong>.<\/li><li>On the&nbsp;<strong>Network Watcher | Topology<\/strong>&nbsp;blade, specify the following settings:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Subscription<\/td><td>the name of the Azure subscription you are using in this lab<\/td><\/tr><tr><td>Resource Group<\/td><td><strong>exceed05a-labRG<\/strong><\/td><\/tr><tr><td>Virtual Network<\/td><td><strong>exceed05a-vnet<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"3\"><li>Review the resulting topology diagram, noting the connections between the public IP address, load balancer, and the network adapters of Azure VMs in its backend pool.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"568\" height=\"528\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img4-10.png\" alt=\"\" class=\"wp-image-2056\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img4-10.png 568w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img4-10-300x279.png 300w\" sizes=\"auto, (max-width: 568px) 100vw, 568px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Network Watcher<\/strong>&nbsp;blade, select&nbsp;<strong>Effective security rules<\/strong>.<\/li><li>On the&nbsp;<strong>Network Watcher | Effective security rules<\/strong>&nbsp;blade, specify the following settings:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Subscription<\/td><td>the name of the Azure subscription you are using in this lab<\/td><\/tr><tr><td>Resource group<\/td><td><strong>exceed05a-labRG<\/strong><\/td><\/tr><tr><td>Virtual machine<\/td><td><strong>exceed05a-vm0<\/strong><\/td><\/tr><tr><td>Network interface<\/td><td><strong>exceed05a-nic0<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"3\"><li>Review the associated network security group and the effective security rules, including two custom rules that allow inbound connectivity via RDP and HTTP.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: Alternatively, you can view&nbsp;<strong>Effective security rules<\/strong>&nbsp;from:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>the&nbsp;<strong>exceed05a-nic0<\/strong>&nbsp;network interface blade.<ul><li>the&nbsp;<strong>exceed05a-web-nsg<\/strong>&nbsp;network security group blade<\/li><\/ul><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"455\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img5-10-1024x455.png\" alt=\"\" class=\"wp-image-2061\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img5-10-1024x455.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img5-10-300x133.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img5-10-768x342.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img5-10.png 1295w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Network Watcher<\/strong>&nbsp;blade, select&nbsp;<strong>Connection troubleshoot<\/strong>.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: The intention is to verify the proximity (in the networking terms) of the two Azure VMs in the same availability set.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>On the&nbsp;<strong>Network Watcher | Connection troubleshoot<\/strong>&nbsp;blade, specify the following settings and select&nbsp;<strong>Check<\/strong>&nbsp;:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Subscription<\/td><td>the name of the Azure subscription you are using in this lab<\/td><\/tr><tr><td>Resource group<\/td><td><strong>exceed05a-labRG<\/strong><\/td><\/tr><tr><td>Source type<\/td><td><strong>Virtual machine<\/strong><\/td><\/tr><tr><td>Virtual machine<\/td><td><strong>exceed05a-vm0<\/strong><\/td><\/tr><tr><td>Destination<\/td><td><strong>Select a virtual machine<\/strong><\/td><\/tr><tr><td>Resource group<\/td><td><strong>exceed05a-labRG<\/strong><\/td><\/tr><tr><td>Virtual machine<\/td><td><strong>exceed05a-vm1<\/strong><\/td><\/tr><tr><td>Protocol<\/td><td><strong>TCP<\/strong><\/td><\/tr><tr><td>Destination port<\/td><td><strong>80<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Note<\/strong>: You will need to wait a few minutes for the results in order for the&nbsp;<strong>Azure Network Watcher Agent<\/strong>&nbsp;VM extension to be installed on the Azure VMs.<\/li><\/ul>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\" start=\"4\"><li>Review the results and note the latency of the network connection between the Azure VMs.<\/li><\/ol>\n\n\n\n<p><strong>Note<\/strong>: The latency should be about 1 millisecond, since both VMs are in the same availability set (within the same Azure datacenter).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"855\" height=\"577\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img6-9.png\" alt=\"\" class=\"wp-image-2065\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img6-9.png 855w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img6-9-300x202.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img6-9-768x518.png 768w\" sizes=\"auto, (max-width: 855px) 100vw, 855px\" \/><\/figure>\n\n\n\n<p>In the Azure portal, navigate to the&nbsp;<strong>exceed05a-labRG<\/strong>&nbsp;resource group blade, in the list of resources, select the&nbsp;<strong>exceed05a-avset<\/strong>&nbsp;availability set entry, and on the&nbsp;<strong>exceed05a-avset<\/strong>&nbsp;blade, note the fault domain and update domain values assigned the two Azure VMs.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"341\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img7-9-1024x341.png\" alt=\"\" class=\"wp-image-2069\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img7-9-1024x341.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img7-9-300x100.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img7-9-768x256.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img7-9.png 1041w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, navigate back to the&nbsp;<strong>exceed05a-labRG<\/strong>&nbsp;resource group blade, in the list of resources, select the&nbsp;<strong>exceed05a-lb<\/strong>&nbsp;load balancer entry, and on the&nbsp;<strong>exceed05a-lb<\/strong>&nbsp;blade, note the public IP address entry.<\/li><li>In the Azure portal, start a&nbsp;<strong>Bash<\/strong>&nbsp;session in the Cloud Shell pane.<\/li><li>From the Cloud Shell pane, run the following to test load balancing of HTTP traffic to the Azure VMs in the backend pool of the Azure load balancer (replace the&nbsp;&lt;lb_IP_address&gt;&nbsp;placeholder with the IP address of the front end of the load balancer you identified earlier):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for i in {1..4}; do curl 40.71.66.236; done<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Verify that the returned messages indicate that the requests are being delivered in the round robin manner to the backend Azure VMs<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"119\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img8-9-1024x119.png\" alt=\"\" class=\"wp-image-2073\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img8-9-1024x119.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img8-9-300x35.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img8-9-768x89.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img8-9.png 1364w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>exceed05a-lb<\/strong>&nbsp;blade, select the&nbsp;<strong>Load balancing rules<\/strong>&nbsp;entry and, on the&nbsp;<strong>exceed05a-lb | Load balancing rules<\/strong>&nbsp;blade, select the&nbsp;<strong>exceed05a-lbruletcp80<\/strong>&nbsp;entry representing the load balancing rule handling HTTP traffic.<\/li><li>On the&nbsp;<strong>exceed05a-lbruletcp80<\/strong>&nbsp;blade, in the&nbsp;<strong>Session persistence<\/strong>&nbsp;drop-down list, select&nbsp;<strong>Client IP<\/strong>&nbsp;and then select&nbsp;<strong>Save<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"432\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img9-9-1024x432.png\" alt=\"\" class=\"wp-image-2077\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img9-9-1024x432.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img9-9-300x127.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img9-9-768x324.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img9-9.png 1315w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\"><li>Wait for the update to complete and, from the Cloud Shell pane, re-run the following to test load balancing of HTTP traffic to the Azure VMs in the backend pool of the Azure load balancer with session persistence (replace the&nbsp;&lt;lb_IP_address&gt;&nbsp;placeholder with the IP address of the front end of the load balancer you identified earlier):<\/li><\/ol>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for i in {1..4}; do curl 40.71.66.236; done<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Verify that the returned messages indicate that the requests are being delivered to the same backend Azure VMs<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"141\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img10-3-6-1024x141.png\" alt=\"\" class=\"wp-image-2081\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img10-3-6-1024x141.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img10-3-6-300x41.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img10-3-6-768x106.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img10-3-6.png 1365w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In the Azure portal, navigate back to the&nbsp;<strong>exceed05a-lb<\/strong>&nbsp;blade, select the&nbsp;<strong>Inbound NAT rules<\/strong>&nbsp;entry and note the two rules that allow for connecting to the first and the second of the backend pool VMs via Remote Desktop over TCP ports 33890 and 33891, respectively.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"232\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img11-3-6-1024x232.png\" alt=\"\" class=\"wp-image-2085\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img11-3-6-1024x232.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img11-3-6-300x68.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img11-3-6-768x174.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img11-3-6.png 1315w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>From the Cloud Shell pane, run the following to test Remote Desktop connectivity via NAT to the first Azure VM in the backend pool of the Azure load balancer (replace the&nbsp;&lt;lb_IP_address&gt;&nbsp;placeholder with the IP address of the front end of the load balancer you identified earlier):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -v telnet:\/\/40.71.66.236:33890<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Verify that the returned message indicates that you are successfully connected.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"151\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img12-3-3-1024x151.png\" alt=\"\" class=\"wp-image-2089\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img12-3-3-1024x151.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img12-3-3-300x44.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img12-3-3-768x114.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img12-3-3.png 1366w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Press the&nbsp;<strong>Ctrl+C<\/strong>&nbsp;key combination to return to the Bash shell prompt and run the following to test Remote Desktop connectivity via NAT to the second Azure VM in the backend pool of the Azure load balancer (replace the&nbsp;&lt;lb_IP_address&gt;&nbsp;placeholder with the IP address of the front end of the load balancer you identified earlier):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -v telnet:\/\/40.71.66.236:33891<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Verify that the returned message indicates that you are successfully connected.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"152\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img13-3-3-1024x152.png\" alt=\"\" class=\"wp-image-2093\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img13-3-3-1024x152.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img13-3-3-300x44.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img13-3-3-768x114.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img13-3-3.png 1365w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Press the&nbsp;<strong>Ctrl+C<\/strong>&nbsp;key combination to return to the Bash shell prompt.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 3: Remove Azure resources deployed in the exercise<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>From the Cloud Shell pane, run the following to list the resource group you created in this exercise:<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az group list --query \"&#91;?starts_with(name,'exceed05a-')]\".name --output tsv<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Note<\/strong>: Verify that the output contains only the resource group you created in this lab. This group will be deleted in this task.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>From the Cloud Shell pane, run the following to delete the resource group you created in this lab<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az group list --query \"&#91;?starts_with(name,'exceed05a-')]\".name --output tsv | xargs -L1 bash -c 'az group delete --name $0 --no-wait --yes'<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"78\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img14-8-1024x78.png\" alt=\"\" class=\"wp-image-2009\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img14-8-1024x78.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img14-8-300x23.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img14-8-768x58.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img14-8.png 1353w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Close the Cloud Shell pane.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Lab 2: Implement and analyze highly available Azure VM deployments using availability zones and Azure Load Balancer Standard<\/strong><\/p>\n\n\n\n<p>The main tasks for this lab are as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Deploy highly available Azure VMs into availability zones behind an Azure Load Balancer Standard by using Azure Resource Manager templates<\/li><li>Analyze highly available Azure VMs deployed across availability zones behind an Azure Load Balancer Standard<\/li><li>Remove Azure resources deployed in the exercise<\/li><\/ul>\n\n\n\n<p><strong>Task 1: Deploy highly available Azure VMs into availability zones behind an Azure Load Balancer Standard by using Azure Resource Manager templates<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>If needed, in the Azure portal, open&nbsp;<strong>Cloud Shell<\/strong>&nbsp;pane by selecting on the toolbar icon directly to the right of the search textbox.<\/li><li>If prompted to select either&nbsp;<strong>Bash<\/strong>&nbsp;or&nbsp;<strong>PowerShell<\/strong>, select&nbsp;<strong>Bash<\/strong>.<\/li><li>In the toolbar of the Cloud Shell pane, select the&nbsp;<strong>Upload\/Download files<\/strong>&nbsp;icon, in the drop-down menu select&nbsp;<strong>Upload<\/strong>, and upload the file&nbsp;<strong>\\Azurelabs03\\azuredeployexceed30305subb.json<\/strong>&nbsp;into the Cloud Shell home directory.<\/li><li>From the Cloud Shell pane, run the following to create a resource groups (replace the&nbsp;&lt;Azure region&gt;&nbsp;placeholder with the name of the Azure region that is available in your subscription and which is closest to the location of your lab computer):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>LOCATION='eastus'<\/code><\/pre>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az deployment sub create --location $LOCATION --template-file azuredeployexceed30305subb.json --parameters rgName=exceed05b-labRG rgLocation=$LOCATION<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"281\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img15-7-1024x281.png\" alt=\"\" class=\"wp-image-2010\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img15-7-1024x281.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img15-7-300x82.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img15-7-768x211.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img15-7.png 1365w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>From the Cloud Shell pane, upload the Azure Resource Manager template&nbsp;<strong>\\Azurelabs03\\azuredeployexceed30305rgb.json<\/strong>.<\/li><li>From the Cloud Shell pane, upload the Azure Resource Manager parameter file&nbsp;<strong>\\Azurelabs03\\azuredeployexceed30305rgb.parameters.json<\/strong>.<\/li><li>From the Cloud Shell pane, run the following to deploy an Azure Load Balancer Standard with its backend pool consisting of a pair of Azure VMs hosting Windows Server 2019 Datacenter Core across two availability zones (replace the&nbsp;&lt;vm_Size&gt;&nbsp;placeholder with the size of the Azure VM you intend to use for this deployment, such as&nbsp;Standard_D2s_v3):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az deployment group create --resource-group exceed05b-labRG --template-file azuredeployexceed30305rgb.json --parameters @azuredeployexceed30305rgb.parameters.json vmSize= Standard_D2s_v3<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Wait for the deployment to complete before proceeding to the next task. This should take about 10 minutes.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"4\"><li>In the Azure portal, close the Cloud Shell pane.<\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 2: Analyze highly available Azure VMs deployed across availability zones behind an Azure Load Balancer Standard<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, search for and select&nbsp;<strong>Network Watcher<\/strong>&nbsp;and, on the&nbsp;<strong>Network Watcher<\/strong>&nbsp;blade, select&nbsp;<strong>Topology<\/strong>.<\/li><li>On the&nbsp;<strong>Network Watcher | Topology<\/strong>&nbsp;blade, specify the following settings:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Subscription<\/td><td>the name of the Azure subscription you are using in this lab<\/td><\/tr><tr><td>Resource Group<\/td><td><strong>exceed05b-labRG<\/strong><\/td><\/tr><tr><td>Virtual Network<\/td><td><strong>exceed05b-vnet<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"3\"><li>Review the resulting topology diagram, noting the connections between the public IP address, load balancer, and the network adapters of Azure VMs in its backend pool.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: This diagram is practically identical to the one you viewed in the previous exercise, since, despite being in different zones (and effectively Azure data centers), the Azure VMs reside on the same subnet.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"619\" height=\"542\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img16-7.png\" alt=\"\" class=\"wp-image-2011\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img16-7.png 619w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img16-7-300x263.png 300w\" sizes=\"auto, (max-width: 619px) 100vw, 619px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Network Watcher<\/strong>&nbsp;blade, select&nbsp;<strong>Effective security rules<\/strong>.<\/li><li>On the&nbsp;<strong>Network Watcher | Effective security rules<\/strong>&nbsp;blade, specify the following settings:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Subscription<\/td><td>the name of the Azure subscription you are using in this lab<\/td><\/tr><tr><td>Resource group<\/td><td><strong>exceed05b-labRG<\/strong><\/td><\/tr><tr><td>Virtual machine<\/td><td><strong>exceed05b-vm0<\/strong><\/td><\/tr><tr><td>Network interface<\/td><td><strong>exceed05b-nic0<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\" start=\"3\"><li>Review the associated network security group and the effective security rules, including two custom rules that allow inbound connectivity via RDP and HTTP.<\/li><\/ol>\n\n\n\n<p><strong>Note<\/strong>: This listing is also practically identical to the one you viewed in the previous exercise, with network-level protection implemented by using a network security group associated with the subnet to which both Azure VMs are connected. Keep in mind, however, that the network security group is, in this case, required for the HTTP and RDP traffic to reach the backend pool Azure VMs, due to the usage of the Azure Load Balancer Standard SKU (NSGs are optional when using the Basic SKU).<\/p>\n\n\n\n<p><strong>Note<\/strong>: Alternatively, you can view&nbsp;<strong>Effective security rules<\/strong>&nbsp;from:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>the&nbsp;<strong>exceed05b-nic0<\/strong>&nbsp;network interface blade.<ul><li>the&nbsp;<strong>exceed05b-web-nsg<\/strong>&nbsp;network security group blade<\/li><\/ul><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"449\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img17-7-1024x449.png\" alt=\"\" class=\"wp-image-2012\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img17-7-1024x449.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img17-7-300x131.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img17-7-768x337.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img17-7.png 1305w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Network Watcher<\/strong>&nbsp;blade, select&nbsp;<strong>Connection troubleshoot<\/strong>.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: The intention is to verify the proximity (in the networking terms) of the two Azure VMs in different zones (within different Azure datacenters).<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>On the&nbsp;<strong>Network Watcher | Connection troubleshoot<\/strong>&nbsp;blade, specify the following settings and select&nbsp;<strong>Check<\/strong>&nbsp;:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Subscription<\/td><td>the name of the Azure subscription you are using in this lab<\/td><\/tr><tr><td>Resource group<\/td><td><strong>exceed05b-labRG<\/strong><\/td><\/tr><tr><td>Source type<\/td><td><strong>Virtual machine<\/strong><\/td><\/tr><tr><td>Virtual machine<\/td><td><strong>exceed05b-vm0<\/strong><\/td><\/tr><tr><td>Destination<\/td><td><strong>Select a virtual machine<\/strong><\/td><\/tr><tr><td>Resource group<\/td><td><strong>exceed05b-labRG<\/strong><\/td><\/tr><tr><td>Virtual machine<\/td><td><strong>exceed05b-vm1<\/strong><\/td><\/tr><tr><td>Protocol<\/td><td><strong>TCP<\/strong><\/td><\/tr><tr><td>Destination port<\/td><td><strong>80<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Note<\/strong>: You will need to wait a few minutes for the results in order for the&nbsp;<strong>Azure Network Watcher Agent<\/strong>&nbsp;VM extension to be installed on the Azure VMs.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"4\"><li>Review the results and note the latency of the network connection between the Azure VMs.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: The latency might be slightly higher than the one you observed in the previous exercise, since the two VMs are in different zones (within different Azure datacenters).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"921\" height=\"581\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img18-6.png\" alt=\"\" class=\"wp-image-2013\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img18-6.png 921w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img18-6-300x189.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img18-6-768x484.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img18-6-80x50.png 80w\" sizes=\"auto, (max-width: 921px) 100vw, 921px\" \/><\/figure>\n\n\n\n<p>In the Azure portal, navigate to the&nbsp;<strong>exceed05b-labRG<\/strong>&nbsp;resource group blade, in the list of resources, select the&nbsp;<strong>exceed05b-vm0<\/strong>&nbsp;virtual machine entry, and on the&nbsp;<strong>exceed05b-vm0<\/strong>&nbsp;blade, note the&nbsp;<strong>Location<\/strong>&nbsp;and&nbsp;<strong>Availability zone<\/strong>&nbsp;entries.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"455\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img19-6-1024x455.png\" alt=\"\" class=\"wp-image-2014\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img19-6-1024x455.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img19-6-300x133.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img19-6-768x341.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img19-6.png 1313w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, navigate to the&nbsp;<strong>exceed05b-labRG<\/strong>&nbsp;resource group blade, in the list of resources, select the&nbsp;<strong>exceed05b-vm1<\/strong>&nbsp;virtual machine entry, and on the&nbsp;<strong>exceed05b-vm1<\/strong>&nbsp;blade, note the&nbsp;<strong>Location<\/strong>&nbsp;and&nbsp;<strong>Availability zone<\/strong>&nbsp;entries.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: The entries you reviewed confirm that each Azure VM resides in a different availability zone.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"468\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img20-6-1024x468.png\" alt=\"\" class=\"wp-image-2015\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img20-6-1024x468.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img20-6-300x137.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img20-6-768x351.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img20-6.png 1298w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, navigate to the&nbsp;<strong>exceed05b-labRG<\/strong>&nbsp;resource group blade and, in the list of resources, select the&nbsp;<strong>exceed05b-lb<\/strong>&nbsp;load balancer entry, and on the&nbsp;<strong>exceed05b-lb<\/strong>&nbsp;blade, note the public IP address entry.<\/li><li>In the Azure portal, start a new&nbsp;<strong>Bash<\/strong>&nbsp;session in the Cloud Shell pane.<\/li><li>From the Cloud Shell pane, run the following to test load balancing of HTTP traffic to the Azure VMs in the backend pool of the Azure load balancer (replace the&nbsp;&lt;lb_IP_address&gt;&nbsp;placeholder with the IP address of the front end of the load balancer you identified earlier):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for i in {1..4}; do curl 20.81.28.9; done<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Verify that the returned messages indicate that the requests are being delivered in the round robin manner to the backend Azure VMs<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"167\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img21-6-1024x167.png\" alt=\"\" class=\"wp-image-2016\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img21-6-1024x167.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img21-6-300x49.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img21-6-768x125.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img21-6.png 1363w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>exceed05b-lb<\/strong>&nbsp;blade, select the&nbsp;<strong>Load balancing rules<\/strong>&nbsp;entry and, on the&nbsp;<strong>exceed05b-lb | Load balancing rules<\/strong>&nbsp;blade, select the&nbsp;<strong>exced055b-lbruletcp80<\/strong>&nbsp;entry representing the load balancing rule handling HTTP traffic.<\/li><li>On the&nbsp;<strong>exceed055b-lbruletcp80<\/strong>&nbsp;blade, in the&nbsp;<strong>Session persistence<\/strong>&nbsp;drop-down list, select&nbsp;<strong>Client IP<\/strong>&nbsp;and then select&nbsp;<strong>Save<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"926\" height=\"564\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img22-6.png\" alt=\"\" class=\"wp-image-2017\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img22-6.png 926w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img22-6-300x183.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img22-6-768x468.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img22-6-80x50.png 80w\" sizes=\"auto, (max-width: 926px) 100vw, 926px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Wait for the update to complete and, from the Cloud Shell pane, re-run the following to test load balancing of HTTP traffic to the Azure VMs in the backend pool of the Azure load balancer with session persistence (replace the&nbsp;&lt;lb_IP_address&gt;&nbsp;placeholder with the IP address of the front end of the load balancer you identified earlier):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for i in {1..4}; do curl 20.81.28.9; done<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Verify that the returned messages indicate that the requests are being delivered to the same backend Azure VMs<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"91\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img23-6-1024x91.png\" alt=\"\" class=\"wp-image-2018\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img23-6-1024x91.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img23-6-300x27.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img23-6-768x68.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img23-6.png 1346w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In the Azure portal, navigate back to the&nbsp;<strong>exceed05b-lb<\/strong>&nbsp;blade, select the&nbsp;<strong>Inbound NAT rules<\/strong>&nbsp;entry and note the two rules that allow for connecting to the first and the second of the backend pool VMs via Remote Desktop over TCP ports 33890 and 33891, respectively.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"234\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img24-6-1024x234.png\" alt=\"\" class=\"wp-image-2019\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img24-6-1024x234.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img24-6-300x69.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img24-6-768x175.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img24-6.png 1313w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>From the Cloud Shell pane, run the following to test Remote Desktop connectivity via NAT to the first Azure VM in the backend pool of the Azure load balancer (replace the&nbsp;&lt;lb_IP_address&gt;&nbsp;placeholder with the IP address of the front end of the load balancer you identified earlier):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -v telnet:\/\/20.81.28.9:33890<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Verify that the returned message indicates that you are successfully connected.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"153\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img25-6-1024x153.png\" alt=\"\" class=\"wp-image-2020\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img25-6-1024x153.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img25-6-300x45.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img25-6-768x115.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img25-6.png 1362w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Press the&nbsp;<strong>Ctrl+C<\/strong>&nbsp;key combination to return to the Bash shell prompt and run the following to test Remote Desktop connectivity via NAT to the second Azure VM in the backend pool of the Azure load balancer (replace the&nbsp;&lt;lb_IP_address&gt;&nbsp;placeholder with the IP address of the front end of the load balancer you identified earlier):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -v telnet:\/\/20.81.28.9:33891<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Verify that the returned message indicates that you are successfully connected.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"135\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img26-6-1024x135.png\" alt=\"\" class=\"wp-image-2021\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img26-6-1024x135.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img26-6-300x40.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img26-6-768x101.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img26-6.png 1364w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Press the&nbsp;<strong>Ctrl+C<\/strong>&nbsp;key combination to return to the Bash shell prompt and close the Cloud Shell pane.<\/li><li>On the&nbsp;<strong>exceed05b-lb<\/strong>&nbsp;blade, select the&nbsp;<strong>Load balancing rules<\/strong>&nbsp;entry and, on the&nbsp;<strong>exceed05b-lb | Load balancing rules<\/strong>&nbsp;blade, select the&nbsp;<strong>exceeed055b-lbruletcp80<\/strong>&nbsp;entry representing the load balancing rule handling HTTP traffic.<\/li><li>On the&nbsp;<strong>exceed055b-lbruletcp80<\/strong>&nbsp;blade, in the&nbsp;<strong>Outbound source network address translation (SNAT)<\/strong>&nbsp;section, select&nbsp;<strong>(Recommended) Use outbound rules to provide backend pool members access to the internet<\/strong>, and then select&nbsp;<strong>Save<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"436\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img27-6-1024x436.png\" alt=\"\" class=\"wp-image-2022\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img27-6-1024x436.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img27-6-300x128.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img27-6-768x327.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img27-6.png 1314w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Navigate back to the&nbsp;<strong>exceed05b-lb<\/strong>&nbsp;blade, select the&nbsp;<strong>Outbound rules<\/strong>&nbsp;entry, and on the&nbsp;<strong>exceed05b-lb | Outbound rules<\/strong>&nbsp;blade, select&nbsp;<strong>+ Add<\/strong>.<\/li><li>On the&nbsp;<strong>Add outbound rule<\/strong>&nbsp;blade, specify the following settings and select&nbsp;<strong>Add<\/strong>&nbsp;(leave all other settings with their default values):<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Name<\/td><td><strong>exceed05b-obrule<\/strong><\/td><\/tr><tr><td>Frontend IP address<\/td><td>the name of the existing frontend IP address of the&nbsp;<strong>exceed05b-lb<\/strong>&nbsp;load balancer<\/td><\/tr><tr><td>Backend pool<\/td><td><strong>exceed05b-bepool<\/strong><\/td><\/tr><tr><td>Port allocation<\/td><td><strong>Manually choose number of outbound ports<\/strong><\/td><\/tr><tr><td>Choose by<\/td><td><strong>Maximum number of backend instances<\/strong><\/td><\/tr><tr><td>Maximum number of backend instances<\/td><td><strong>3<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Note<\/strong>: Azure Load Balancer Standard allows you to designate a dedicated frontend IP address for outbound traffic (in cases where multiple frontend IP addresses are assigned).<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"430\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img28-6-1024x430.png\" alt=\"\" class=\"wp-image-2023\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img28-6-1024x430.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img28-6-300x126.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img28-6-768x322.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img28-6.png 1313w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, navigate to the&nbsp;<strong>exceed05b-labRG<\/strong>&nbsp;resource group blade, in the list of resources, select the&nbsp;<strong>exceed05b-vm0<\/strong>&nbsp;virtual machine entry, and on the&nbsp;<strong>exceed05b-vm0<\/strong>&nbsp;blade, in the&nbsp;<strong>Operations<\/strong>&nbsp;blade, select&nbsp;<strong>Run command<\/strong>.<\/li><li>On the&nbsp;<strong>exceed05b-vm0 | Run command<\/strong>&nbsp;blade, select&nbsp;<strong>RunPowerShellScript<\/strong>.<\/li><li>On the&nbsp;<strong>Run Command Script<\/strong>&nbsp;blade, in the&nbsp;<strong>PowerShell Script<\/strong>&nbsp;text box, type the following and select&nbsp;<strong>Run<\/strong>.<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(Invoke-RestMethod -Uri \"http:\/\/ipinfo.io\").IP<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: This command returns the public IP address from which the web request originates.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"835\" height=\"613\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img29-6.png\" alt=\"\" class=\"wp-image-2024\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img29-6.png 835w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img29-6-300x220.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img29-6-768x564.png 768w\" sizes=\"auto, (max-width: 835px) 100vw, 835px\" \/><\/figure>\n\n\n\n<p>Review the output and verify that it matches the public IP address assigned to the frontend of the Azure Load Balancer Standard, which you assigned to the outbound load balancing rule.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 3: Remove Azure resources deployed in the exercise<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, start a new&nbsp;<strong>Bash<\/strong>&nbsp;session in the Cloud Shell pane.<\/li><li>From the Cloud Shell pane, run the following to list the resource group you created in this exercise:<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az group list --query \"&#91;?starts_with(name,'exceed05b-')]\".name --output tsv<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Verify that the output contains only the resource group you created in this lab. This group will be deleted in this task.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"3\"><li>From the Cloud Shell pane, run the following to delete the resource group you created in this lab<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az group list --query \"&#91;?starts_with(name,'exceed05b-')]\".name --output tsv | xargs -L1 bash -c 'az group delete --name $0 --no-wait --yes'<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"71\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img30-6-1024x71.png\" alt=\"\" class=\"wp-image-2025\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img30-6-1024x71.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img30-6-300x21.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img30-6-768x53.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img30-6.png 1365w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Close the Cloud Shell pane.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Lab 3: Implement and analyze highly available Azure VM Scale Set deployments using availability zones and Azure Application Gateway.<\/strong><\/p>\n\n\n\n<p>The main tasks for this lab are as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Deploy a highly available Azure VM Scale Set into availability zones behind an Azure Application Gateway by using Azure Resource Manager templates<\/li><li>Analyze a highly available Azure VM Scale Set deployed across availability zones behind an Azure Application Gateway<\/li><li>Remove Azure resources deployed in the exercise<\/li><\/ul>\n\n\n\n<p><strong>Task 1: Deploy a highly available Azure VM Scale Set into availability zones behind an Azure Application Gateway by using Azure Resource Manager templates<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>If needed, in the Azure portal, open&nbsp;<strong>Cloud Shell<\/strong>&nbsp;pane by selecting on the toolbar icon directly to the right of the search textbox.<\/li><li>If prompted to select either&nbsp;<strong>Bash<\/strong>&nbsp;or&nbsp;<strong>PowerShell<\/strong>, select&nbsp;<strong>Bash<\/strong>.<\/li><li>In the toolbar of the Cloud Shell pane, select the&nbsp;<strong>Upload\/Download files<\/strong>&nbsp;icon, in the drop-down menu select&nbsp;<strong>Upload<\/strong>, and upload the file&nbsp;<strong>\\Azurelabs03\\azuredeployexceed30305subc.json<\/strong>&nbsp;into the Cloud Shell home directory.<\/li><li>From the Cloud Shell pane, run the following to create a resource groups (replace the&nbsp;&lt;Azure region&gt;&nbsp;placeholder with the name of the Azure region that is available in your subscription and which is closest to the location of your lab computer):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az deployment sub create --location 'eastus' --template-file azuredeployexceed30305subc.json --parameters rgName=exceed05c-labRG rgLocation='eastus'<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"353\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img31-3-1024x353.png\" alt=\"\" class=\"wp-image-2026\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img31-3-1024x353.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img31-3-300x103.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img31-3-768x264.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img31-3.png 1365w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>From the Cloud Shell pane, upload the Azure Resource Manager template&nbsp;<strong>\\Azurelabs03\\azuredeployexceed30305rgc.json<\/strong>.<\/li><li>From the Cloud Shell pane, upload the Azure Resource Manager parameter file&nbsp;<strong>\\Azurelabs03\\azuredeployexceed30305rgc.parameters.json<\/strong>.<\/li><li>From the Cloud Shell pane, run the following to deploy an Azure Application Gateway with its backend pool consisting of a pair of Azure VMs hosting Windows Server 2019 Datacenter Core across different availability zones (replace the&nbsp;&lt;vm_Size&gt;&nbsp;placeholder with the size of the Azure VM you intend to use for this deployment, such as&nbsp;Standard_D2s_v3):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az deployment group create --resource-group exceed05c-labRG --template-file azuredeployexceed30305rgc.json --parameters @azuredeployexceed30305rgc.parameters.json vmSize=Standard_D2s_v3<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Wait for the deployment to complete before proceeding to the next task. This should take about 10 minutes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"374\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img32-6-1024x374.png\" alt=\"\" class=\"wp-image-2027\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img32-6-1024x374.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img32-6-300x109.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img32-6-768x280.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img32-6.png 1365w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In the Azure portal, close the Cloud Shell pane.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 2: Analyze a highly available Azure VM Scale Set deployed across availability zones behind an Azure Application Gateway<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, search for and select&nbsp;<strong>Network Watcher<\/strong>&nbsp;and, on the&nbsp;<strong>Network Watcher<\/strong>&nbsp;blade, select&nbsp;<strong>Topology<\/strong>.<\/li><li>On the&nbsp;<strong>Network Watcher | Topology<\/strong>&nbsp;blade, specify the following settings:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Subscription<\/td><td>the name of the Azure subscription you are using in this lab<\/td><\/tr><tr><td>Resource Group<\/td><td><strong>exceed05c-labRG<\/strong><\/td><\/tr><tr><td>Virtual Network<\/td><td><strong>exceed05c-vnet<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"3\"><li>Review the resulting topology diagram, noting the connections between the public IP address, load balancer, and the network adapters of Azure VM instances in the Azure Virtual Machine Scale Set in its backend pool.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: In addition, deployment of an Azure Application Gateway requires a dedicated subnet, included in the diagram (although the gateway is not displayed).<\/p>\n\n\n\n<p><strong>Note<\/strong>: In this configuration, it is not possible to use Network Watcher to view the effective network security rules (that is one of distinctions between Azure VMs and instances of an Azure VM Scale Set). Similarly, you cannot rely on using&nbsp;<strong>Connection troubleshoot<\/strong>&nbsp;to test network connectivity from Azure VM Scale Set instances, although it is possible to use it to test connectivity from the Azure Application Gateway.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"591\" height=\"494\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img33-6.png\" alt=\"\" class=\"wp-image-2028\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img33-6.png 591w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img33-6-300x251.png 300w\" sizes=\"auto, (max-width: 591px) 100vw, 591px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, navigate to the&nbsp;<strong>exceed05c-labRG<\/strong>&nbsp;resource group blade, in the list of resources, and select the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;virtual machine scale set entry.<\/li><li>On the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, note the&nbsp;<strong>Location<\/strong>&nbsp;and&nbsp;<strong>Fault domains<\/strong>&nbsp;entries.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: Unlike Azure VMs, individual instances of Azure VM scale sets deploy into separate fault domains, including instances deployed into the same zone. In addition, they support 5 fault domains (unlike Azure VMs, which can use up to 3 fault domains).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"447\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img34-6-1024x447.png\" alt=\"\" class=\"wp-image-2029\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img34-6-1024x447.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img34-6-300x131.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img34-6-768x335.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img34-6.png 1304w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, select&nbsp;<strong>Instances<\/strong>, on the&nbsp;<strong>exceed05c-vmss | Instances<\/strong>&nbsp;blade, select the first instance, and identify its availability zone by reviewing the value of the&nbsp;<strong>Location<\/strong>&nbsp;property.<\/li><li>Navigate back to the&nbsp;<strong>exceed05c-vmss | Instances<\/strong>&nbsp;blade, select the second instance, and identify its availability zone by reviewing the value of the&nbsp;<strong>Location<\/strong>&nbsp;property.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: Verify that each instance resides in a different availability zone.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"234\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img35-6-1024x234.png\" alt=\"\" class=\"wp-image-2030\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img35-6-1024x234.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img35-6-300x69.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img35-6-768x176.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img35-6.png 1315w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"441\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img36-6-1024x441.png\" alt=\"\" class=\"wp-image-2031\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img36-6-1024x441.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img36-6-300x129.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img36-6-768x331.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img36-6.png 1310w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"414\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img37-6-1024x414.png\" alt=\"\" class=\"wp-image-2032\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img37-6-1024x414.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img37-6-300x121.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img37-6-768x311.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img37-6.png 1315w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In the Azure portal, navigate to the&nbsp;<strong>exceed05c-labRG<\/strong>&nbsp;resource group blade and, in the list of resources, select the&nbsp;<strong>exceed05c-appgw<\/strong>&nbsp;load balancer entry, and on the&nbsp;<strong>exceed05c-appgw<\/strong>&nbsp;blade, note the public IP address entry.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"228\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img38-6-1024x228.png\" alt=\"\" class=\"wp-image-2033\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img38-6-1024x228.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img38-6-300x67.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img38-6-768x171.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img38-6.png 1316w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, start a new&nbsp;<strong>Bash<\/strong>&nbsp;session in the Cloud Shell pane.<\/li><li>From the Cloud Shell pane, run the following to test load balancing of HTTP traffic to the Azure VM Scale Set instances in the backend pool of the Azure Application Gateway (replace the&nbsp;&lt;lb_IP_address&gt;&nbsp;placeholder with the IP address of the front end of the gateway you identified earlier):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for i in {1..4}; do curl 20.81.66.172; done<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Verify that the returned messages indicate that the requests are being delivered in the round robin manner to the backend Azure VMs<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"137\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img39-3-1024x137.png\" alt=\"\" class=\"wp-image-2034\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img39-3-1024x137.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img39-3-300x40.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img39-3-768x103.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img39-3.png 1363w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>exceed05c-appgw<\/strong>&nbsp;blade, select the&nbsp;<strong>HTTP settings<\/strong>&nbsp;entry and, on the&nbsp;<strong>exceed05c-appgw | HTTP settings<\/strong>&nbsp;blade, select the&nbsp;<strong>appGwBackentHttpSettings<\/strong>&nbsp;entry representing the load balancing rule handling HTTP traffic.<\/li><li>On the&nbsp;<strong>appGwBackentHttpSettings<\/strong>&nbsp;blade, review the existing settings without making any changes and note that you can enable&nbsp;<strong>Cookie-based affinity<\/strong>.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: This feature requires that the client supports the use of cookies.<\/p>\n\n\n\n<p><strong>Note<\/strong>: You cannot use Azure Application Gateway to implement NAT for RDP connectivity to instances of an Azure VM Scale Set. Azure Application Gateway supports only HTTP\/HTTPS traffic.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"852\" height=\"601\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img40-6.png\" alt=\"\" class=\"wp-image-2035\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img40-6.png 852w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img40-6-300x212.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img40-6-768x542.png 768w\" sizes=\"auto, (max-width: 852px) 100vw, 852px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Lab 4: Implementing autoscaling of Azure VM Scale Sets using availability zones and Azure Application Gateway.<\/strong><\/p>\n\n\n\n<p>The main tasks for this lab are as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Configuring autoscaling of an Azure VM Scale Set<\/li><li>Testing autoscaling of an Azure VM Scale Set<\/li><\/ul>\n\n\n\n<p><strong>Task 1: Configure autoscaling of an Azure VM Scale Set<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, navigate to the&nbsp;<strong>exceed05c-labRG<\/strong>&nbsp;resource group blade, in the list of resources, select the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;virtual machine scale set entry, and on the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, select&nbsp;<strong>Scaling<\/strong>.<\/li><li>On the&nbsp;<strong>exceed05c-vmss | Scaling<\/strong>&nbsp;blade, select the&nbsp;<strong>Custom autoscale<\/strong>&nbsp;option.<\/li><li>In the&nbsp;<strong>Custom autoscale<\/strong>&nbsp;section, specify the following settings (leave others with their default values):<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Scaling mode<\/td><td><strong>Scale based on a metric<\/strong><\/td><\/tr><tr><td>Instance limits Minimum<\/td><td><strong>1<\/strong><\/td><\/tr><tr><td>Instance limits Maximum<\/td><td><strong>3<\/strong><\/td><\/tr><tr><td>Instance limits Default<\/td><td><strong>1<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"4\"><li>Select&nbsp;<strong>+ Add a rule<\/strong>.<\/li><li>On the&nbsp;<strong>Scale rule<\/strong>&nbsp;blade, specify the following settings and select&nbsp;<strong>Add<\/strong>&nbsp;(leave others with their default values):<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Time aggregation<\/td><td><strong>Maximum<\/strong><\/td><\/tr><tr><td>Metric namespace<\/td><td><strong>Virtual Machine Host<\/strong><\/td><\/tr><tr><td>Metric name<\/td><td><strong>Percentage CPU<\/strong><\/td><\/tr><tr><td>VMName Operator<\/td><td><strong>=<\/strong><\/td><\/tr><tr><td>Dimension values<\/td><td><strong>exceed05c-vmss_0<\/strong><\/td><\/tr><tr><td>Enable metric divide by instance count<\/td><td><strong>Enabled<\/strong><\/td><\/tr><tr><td>Operator<\/td><td><strong>Greater than<\/strong><\/td><\/tr><tr><td>Metric threshold to trigger scale action<\/td><td><strong>1<\/strong><\/td><\/tr><tr><td>Duration (in minutes)<\/td><td><strong>1<\/strong><\/td><\/tr><tr><td>Time grain statistics<\/td><td><strong>Maximum<\/strong><\/td><\/tr><tr><td>Operation<\/td><td><strong>Increase count by<\/strong><\/td><\/tr><tr><td>Instance count<\/td><td><strong>1<\/strong><\/td><\/tr><tr><td>Cool down (minutes)<\/td><td><strong>5<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Note<\/strong>: These values are selected strictly for lab purposes to trigger scaling as soon as possible. For guidance regarding Azure VM Scale Set scaling, refer to&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/virtual-machine-scale-sets\/virtual-machine-scale-sets-autoscale-overview\">Microsoft Docs<\/a>&nbsp;.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"7\"><li>Back on the&nbsp;<strong>exceed05c-vmss | Scaling<\/strong>&nbsp;blade, select&nbsp;<strong>+ Add a rule<\/strong>.<\/li><li>On the&nbsp;<strong>Scale rule<\/strong>&nbsp;blade, specify the following settings and select&nbsp;<strong>Add<\/strong>&nbsp;(leave others with their default values):<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Time aggregation<\/td><td><strong>Average<\/strong><\/td><\/tr><tr><td>Metric namespace<\/td><td><strong>Virtual Machine Host<\/strong><\/td><\/tr><tr><td>Metric name<\/td><td><strong>Percentage CPU<\/strong><\/td><\/tr><tr><td>VMName Operator<\/td><td><strong>=<\/strong><\/td><\/tr><tr><td>Dimension values<\/td><td><strong>2 selected<\/strong><\/td><\/tr><tr><td>Enable metric divide by instance count<\/td><td><strong>Enabled<\/strong><\/td><\/tr><tr><td>Operator<\/td><td><strong>Less than<\/strong><\/td><\/tr><tr><td>Metric threshold to trigger scale action<\/td><td><strong>1<\/strong><\/td><\/tr><tr><td>Duration (in minutes)<\/td><td><strong>1<\/strong><\/td><\/tr><tr><td>Time grain statistics<\/td><td><strong>Minimum<\/strong><\/td><\/tr><tr><td>Operation<\/td><td><strong>Decrease count by<\/strong><\/td><\/tr><tr><td>Instance count<\/td><td><strong>1<\/strong><\/td><\/tr><tr><td>Cool down (minutes)<\/td><td><strong>5<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Back on the **exceed05c-vmss<\/td><td>Scaling** blade, select&nbsp;<strong>Save<\/strong>.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"443\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img41-6-1024x443.png\" alt=\"\" class=\"wp-image-2036\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img41-6-1024x443.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img41-6-300x130.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img41-6-768x332.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img41-6.png 1315w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Task 2: Test autoscaling of an Azure VM Scale Set<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, start a new&nbsp;<strong>Bash<\/strong>&nbsp;session in the Cloud Shell pane.<\/li><li>From the Cloud Shell pane, run the following to trigger autoscaling of the Azure VM Scale Set instances in the backend pool of the Azure Application Gateway (replace the&nbsp;&lt;lb_IP_address&gt;&nbsp;placeholder with the IP address of the front end of the gateway you identified earlier):<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for (( ; ; )); do curl -s 20.81.66.172?&#91;1-10]; done<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"186\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img42-6-1024x186.png\" alt=\"\" class=\"wp-image-2037\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img42-6-1024x186.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img42-6-300x54.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img42-6-768x139.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img42-6.png 1363w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, on the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;Overview blade, on the Monitoring tab, review the&nbsp;<strong>CPU (average)<\/strong>&nbsp;chart and verify that the CPU utilization of the Application Gateway increased sufficiently to trigger scaling out.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: You might need to wait a few minutes.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>On the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, select the&nbsp;<strong>Instances<\/strong>&nbsp;entry and verify that the number of instances has increased.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: You might need to refresh the&nbsp;<strong>exceed05c-vmss | Instances<\/strong>&nbsp;blade.<\/p>\n\n\n\n<p><strong>Note<\/strong>: You might see the number of instances increasing by 2 (rather than 1). This is expected as long as the final number of running instances is 3.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"3\"><li>In the Azure portal, close the&nbsp;<strong>Cloud Shell<\/strong>&nbsp;pane.<\/li><li>In the Azure portal, on the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, review the&nbsp;<strong>CPU (average)<\/strong>&nbsp;chart and verify that the CPU utilization of the Application Gateway decreased sufficiently to trigger scaling in.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: You might need to wait a few minutes.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"5\"><li>On the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, select the&nbsp;<strong>Instances<\/strong>&nbsp;entry and verify that the number of instances has decreased to 2.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: You might need to refresh the&nbsp;<strong>exceed05c-vmss | Instances<\/strong>&nbsp;blade.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"6\"><li>On the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, select&nbsp;<strong>Scaling<\/strong>.<\/li><li>On the&nbsp;<strong>exceed05c-vmss | Scaling<\/strong>&nbsp;blade, select the&nbsp;<strong>Manual scale<\/strong>&nbsp;option and select&nbsp;<strong>Save<\/strong>.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: This will prevent any undesired autoscaling during the next exercise.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"425\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img43-6-1024x425.png\" alt=\"\" class=\"wp-image-2038\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img43-6-1024x425.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img43-6-300x124.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img43-6-768x318.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img43-6.png 1312w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Lab 5: Implementing vertical scaling of Azure VM Scale Sets<\/strong><\/p>\n\n\n\n<p>The main tasks for this lab are as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Scaling compute resources of Azure virtual machine scale set instances.<\/li><li>Scaling storage resources of Azure virtual machine scale sets instances.<\/li><\/ul>\n\n\n\n<p><strong>Task 1: Scale compute resources of Azure virtual machine scale set instances.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure Portal, on the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, select&nbsp;<strong>Size<\/strong>.<\/li><li>In the list of available sizes, select any available size other than currently configured and select&nbsp;<strong>Resize<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"439\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img44-3-1024x439.png\" alt=\"\" class=\"wp-image-2039\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img44-3-1024x439.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img44-3-300x129.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img44-3-768x329.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img44-3.png 1311w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, select the&nbsp;<strong>Instances<\/strong>&nbsp;entry and, on the&nbsp;<strong>exceed05c-vmss | Instances<\/strong>&nbsp;blade, observe the process of replacing existing instances with new ones of the desired size.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: You might need to refresh the&nbsp;<strong>exceed05c-vmss | Instances<\/strong>&nbsp;blade.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>Wait until the instances are updated and running.<\/li><\/ul>\n\n\n\n<p>Task 2: Scale storage resources of Azure virtual machine scale sets instances.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, select&nbsp;<strong>Disks<\/strong>, select&nbsp;<strong>+ Create and attach a new disk<\/strong>, attach a new managed disk with the following settings (leave others with their default values), and select&nbsp;<strong>Save<\/strong>:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>LUN<\/td><td><strong>0<\/strong><\/td><\/tr><tr><td>Size<\/td><td><strong>32<\/strong><\/td><\/tr><tr><td>Storage account type<\/td><td><strong>Standard HDD<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>On the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, select the&nbsp;<strong>Instances<\/strong>&nbsp;entry and, on the&nbsp;<strong>exceed05c-vmss | Instances<\/strong>&nbsp;blade, observe the process of updating the existing instances.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: The disk attached in the previous step is a raw disk. Before it can be used, it is necessary to create a partition, format it, and mount it. To accomplish this, you will deploy a PowerShell script to Azure VM scale set instances via the Custom Script extension. First, however, you will need to remove it.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"3\"><li>On the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, select&nbsp;<strong>Extensions<\/strong>, on the&nbsp;<strong>exceed05c-vmss | Extensions<\/strong>&nbsp;blade, select the&nbsp;<strong>customScriptExtension<\/strong>&nbsp;entry, and then, on the&nbsp;<strong>Extensions<\/strong>&nbsp;blade, select&nbsp;<strong>Uninstall<\/strong>.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: Wait for uninstallation to complete.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"4\"><li>In the Azure portal, navigate to the&nbsp;<strong>exceed05c-labRG<\/strong>&nbsp;resource group blade, in the list of resources, select the storage account resource.<\/li><li>On the storage account blade, select&nbsp;<strong>Containers<\/strong>&nbsp;and then select&nbsp;<strong>+ Container<\/strong>.<\/li><li>On the&nbsp;<strong>New container<\/strong>&nbsp;blade, specify the following settings (leave others with their default values) and select&nbsp;<strong>Create<\/strong>:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td>Setting<\/td><td>Value<\/td><\/tr><\/thead><tbody><tr><td>Name<\/td><td><strong>scripts<\/strong><\/td><\/tr><tr><td>Public access level<\/td><td><strong>Private (no anonymous access<\/strong>)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"7\"><li>Back on the storage account blade displaying the list of containers, select&nbsp;<strong>scripts<\/strong>.<\/li><li>On the&nbsp;<strong>scripts<\/strong>&nbsp;blade, select&nbsp;<strong>Upload<\/strong>.<\/li><li>On the&nbsp;<strong>Upload blob<\/strong>&nbsp;blade, select the folder icon, in the&nbsp;<strong>Open<\/strong>&nbsp;dialog box, navigate to the&nbsp;<strong>\\Azurelabs03<\/strong>&nbsp;folder, select&nbsp;<strong>exceed05e-configure_VMSS_with_data_disk.ps1<\/strong>, select&nbsp;<strong>Open<\/strong>, and back on the&nbsp;<strong>Upload blob<\/strong>&nbsp;blade, select&nbsp;<strong>Upload<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"223\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img45-3-1024x223.png\" alt=\"\" class=\"wp-image-2040\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img45-3-1024x223.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img45-3-300x65.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img45-3-768x167.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img45-3.png 1312w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Azure portal, navigate back to the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;virtual machine scale set blade.<\/li><li>On the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, select&nbsp;<strong>Extensions<\/strong>, on the&nbsp;<strong>exceed05c-vmss | Extensions<\/strong>&nbsp;blade, select&nbsp;<strong>+ Add<\/strong>&nbsp;and then, select the&nbsp;<strong>customScriptExtension<\/strong>&nbsp;entry on the&nbsp;<strong>Extensions<\/strong>&nbsp;blade.<\/li><li>On the&nbsp;<strong>New resource<\/strong>&nbsp;blade, select&nbsp;<strong>Custom Script Extension<\/strong>&nbsp;and then select&nbsp;<strong>Create<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"437\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img46-3-1024x437.png\" alt=\"\" class=\"wp-image-2041\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img46-3-1024x437.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img46-3-300x128.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img46-3-768x327.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img46-3.png 1311w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>From the&nbsp;<strong>Install extension<\/strong>&nbsp;blade, select&nbsp;<strong>Browse<\/strong>.<\/li><li>On the&nbsp;<strong>Storage accounts<\/strong>&nbsp;blade, select the name of the storage account into which you uploaded the&nbsp;<strong>exceed05e-configure_VMSS_with_data_disk.ps1<\/strong>&nbsp;script, on the&nbsp;<strong>Containers<\/strong>&nbsp;blade, select&nbsp;<strong>scripts<\/strong>, on the&nbsp;<strong>scripts<\/strong>&nbsp;blade, select&nbsp;<strong>exceed05e-configure_VMSS_with_data_disk.ps1<\/strong>, and then select&nbsp;<strong>Select<\/strong>.<\/li><li>Back on the&nbsp;<strong>Install extension<\/strong>&nbsp;blade, select&nbsp;<strong>OK<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>On the&nbsp;<strong>exceed05c-vmss<\/strong>&nbsp;blade, select the&nbsp;<strong>Instances<\/strong>&nbsp;entry and, on the **exceed05c-vmss<\/td><td>Instances** blade, observe the process of updating existing instances.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Note<\/strong>: You might need to refresh the&nbsp;<strong>exceed05c-vmss | Instances<\/strong>&nbsp;blade.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"375\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img47-3-1024x375.png\" alt=\"\" class=\"wp-image-2042\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img47-3-1024x375.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img47-3-300x110.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img47-3-768x282.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img47-3.png 1309w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Task 3: Remove Azure resources deployed in the exercise<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>From the Cloud Shell pane, run the following to list the resource group you created in this exercise:<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az group list --query \"&#91;?starts_with(name,'exceed05c-')]\".name --output tsv<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: Verify that the output contains only the resource group you created in this lab. This group will be deleted in this task.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>From the Cloud Shell pane, run the following to delete the resource group you created in this lab<\/li><\/ul>\n\n\n\n<p>Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>az group list --query \"&#91;?starts_with(name,'exceed05c-')]\".name --output tsv | xargs -L1 bash -c 'az group delete --name $0 --no-wait --yes'<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"115\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img48-3-1024x115.png\" alt=\"\" class=\"wp-image-2043\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img48-3-1024x115.png 1024w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img48-3-300x34.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img48-3-768x86.png 768w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/02\/img48-3.png 1364w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Close the Cloud Shell pane.<\/p>\n\n\n\n<p><mark class=\"kt-highlight\"><strong>Reminder<\/strong>: Don\u2019t forget to delete or shutdown all unused Azure resources after your labs for cost saving<\/mark><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cloud infrastructure services, known as Infrastructure as a Service (IaaS), are made of highly scalable and automated compute resources. IaaS is fully self-service for accessing and monitoring computers, networking, storage, and other services. IaaS allows businesses to purchase resources on-demand &hellip; <a href=\"https:\/\/exceedthecloud.com\/?p=395\">Continued<\/a><\/p>\n","protected":false},"author":1,"featured_media":879,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"kt_blocks_editor_width":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[17,4,19],"tags":[73,74,29,35,31],"class_list":["post-395","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-networking","category-practical-labs-series","category-virtual-machines","tag-iaas","tag-infrastructure","tag-load-balancer","tag-virtual-machines","tag-virtual-network"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2021\/10\/istockphoto-1297900286-170667a.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts\/395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=395"}],"version-history":[{"count":4,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts\/395\/revisions"}],"predecessor-version":[{"id":2339,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts\/395\/revisions\/2339"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/media\/879"}],"wp:attachment":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}