From 4de45e84c5a2c9066e9b7e6c842949eaf98934f6 Mon Sep 17 00:00:00 2001 From: Mike Wasson Date: Tue, 3 Apr 2018 18:40:59 -0700 Subject: [PATCH] Update single VM reference architectures (#482) - Update deployment instructions - Add NSG to diagram - Add deployment verification step --- .../images/single-vm-diagram.png | Bin 32196 -> 28326 bytes .../virtual-machines-linux/single-vm.md | 87 ++++++++++-------- .../images/single-vm-diagram.png | Bin 32196 -> 28326 bytes .../virtual-machines-windows/single-vm.md | 79 ++++++++-------- 4 files changed, 91 insertions(+), 75 deletions(-) diff --git a/docs/reference-architectures/virtual-machines-linux/images/single-vm-diagram.png b/docs/reference-architectures/virtual-machines-linux/images/single-vm-diagram.png index 07cc81b49d9a0e568f4d61fdac14c5e2067d910c..6276c828d3438b9b5d26e7e968350cb5d4f22047 100644 GIT binary patch literal 28326 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 K%GbOU{Qm$8J+wan literal 32196 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 Qz&1^!p{Ao+tZWhRUx9c>7XSbN diff --git a/docs/reference-architectures/virtual-machines-linux/single-vm.md b/docs/reference-architectures/virtual-machines-linux/single-vm.md index c3907338a4a..abdc189a73a 100644 --- a/docs/reference-architectures/virtual-machines-linux/single-vm.md +++ b/docs/reference-architectures/virtual-machines-linux/single-vm.md @@ -6,7 +6,7 @@ description: >- author: telmosampaio -ms.date: 12/12/2017 +ms.date: 04/03/2018 pnp.series.title: Linux VM workloads pnp.series.next: multi-vm @@ -23,31 +23,37 @@ This reference architecture shows a set of proven practices for running a Linux ## Architecture -Provisioning an Azure VM requires additional components, such as compute, networking, and storage resources. +Provisioning an Azure VM requires some additional components besides the VM itself, including networking and storage resources. + +* **Resource group.** A [resource group][resource-manager-overview] is a logical container that holds related Azure resources. In general, group resources based on their lifetime and who will manage them. -* **Resource group.** A [resource group][resource-manager-overview] is a container that holds related resources. In general, you should group resources in a solution based on their lifetime and who will manage the resources. For a single VM workload, you may want to create a single resource group for all resources. * **VM**. You can provision a VM from a list of published images, or from a custom managed image or virtual hard disk (VHD) file uploaded to Azure Blob storage. Azure supports running various popular Linux distributions, including CentOS, Debian, Red Hat Enterprise, Ubuntu, and FreeBSD. For more information, see [Azure and Linux][azure-linux]. -* **OS disk.** The OS disk is a VHD stored in [Azure Storage][azure-storage], so it persists even when the host machine is down. For Linux VMs, the OS disk is `/dev/sda1`. -* **Temporary disk.** The VM is created with a temporary disk. This disk is stored on a physical drive on the host machine. It is **not** saved in Azure Storage and may be deleted during reboots and other VM lifecycle events. Use this disk only for temporary data, such as page or swap files. For Linux VMs, the temporary disk is `/dev/sdb1` and is mounted at `/mnt/resource` or `/mnt`. -* **Data disks.** A [data disk][data-disk] is a persistent VHD used for application data. Data disks are stored in Azure Storage, like the OS disk. -* **Virtual network (VNet) and subnet.** Every Azure VM is deployed into a VNet that can be segmented into multiple subnets. + +* **Managed Disks**. [Azure Managed Disks][managed-disks] simplify disk management by handling the storage for you. The OS disk is a VHD stored in [Azure Storage][azure-storage], so it persists even when the host machine is down. For Linux VMs, the OS disk is `/dev/sda1`. We also recommend creating one or more [data disks][data-disk], which are persistent VHDs used for application data. + +* **Temporary disk.** The VM is created with a temporary disk. This disk is stored on a physical drive on the host machine. It is *not* saved in Azure Storage and may be deleted during reboots and other VM lifecycle events. Use this disk only for temporary data, such as page or swap files. For Linux VMs, the temporary disk is `/dev/sdb1` and is mounted at `/mnt/resource` or `/mnt`. + +* **Virtual network (VNet).** Every Azure VM is deployed into a VNet that can be segmented into multiple subnets. + +* **Network interface (NIC)**. The NIC enables the VM to communicate with the virtual network. + * **Public IP address.** A public IP address is needed to communicate with the VM — for example, via SSH. + * **Azure DNS**. [Azure DNS][azure-dns] is a hosting service for DNS domains, providing name resolution using Microsoft Azure infrastructure. By hosting your domains in Azure, you can manage your DNS records using the same credentials, APIs, tools, and billing as your other Azure services. -* **Network interface (NIC)**. An assigned NIC enables the VM to communicate with the virtual network. -* **Network security group (NSG)**. [Network security groups][nsg] are used to allow or deny network traffic to a network resource. You can associate an NSG with an individual NIC or with a subnet. If you associate it with a subnet, the NSG rules apply to all VMs in that subnet. + +* **Network security group (NSG)**. [Network security groups][nsg] are used to allow or deny network traffic to VMs. NSGs can be associated either with subnets or with individual VM instances. + * **Diagnostics.** Diagnostic logging is crucial for managing and troubleshooting the VM. ## Recommendations -This architecture shows the baseline recommendations for running a Linux VM in Azure. However, we don't recommend using a single VM for mission critical workloads because it creates a single point of failure. For higher availability, deploy multiple VMs in an [availability set][availability-set]. For more information, see [Running multiple VMs on Azure][multi-vm]. +This architecture shows the baseline recommendations for running a Linux VM in Azure. However, we don't recommend using a single VM for mission critical workloads because it creates a single point of failure. For higher availability, deploy two or more load-balanced VMs. For more information, see [Running multiple VMs on Azure][multi-vm]. ### VM recommendations -Azure offers many different virtual machine sizes. [Premium Storage][premium-storage] is recommended due to its high performance and low latency, and is [supported by specific VM sizes][premium-storage-supported]. Select one of these sizes unless you have a specialized workload such as high-performance computing. For more information, see [virtual machine sizes][virtual-machine-sizes]. +Azure offers many different virtual machine sizes. For more information, see [Sizes for virtual machines in Azure][virtual-machine-sizes]. If you are moving an existing workload to Azure, start with the VM size that's the closest match to your on-premises servers. Then measure the performance of your actual workload with respect to CPU, memory, and disk input/output operations per second (IOPS), and adjust the size as needed. If you require multiple NICs for your VM, be aware that a maximum number of NICs is defined for each [VM size][vm-size-tables]. -If you are moving an existing workload to Azure, start with the VM size that's the closest match to your on-premises servers. Then measure the performance of your actual workload with respect to CPU, memory, and disk input/output operations per second (IOPS), and adjust the size as needed. If you require multiple NICs for your VM, be aware that a maximum number of NICs is defined for each [VM size][vm-size-tables]. - -When you provision Azure resources, you must specify a region. Generally, choose a region closest to your internal users or customers. However, not all VM sizes are available in all regions. For more information, see [Services by region][services-by-region]. For a list of the VM sizes available in a specific region, run the following command from the Azure command-line interface (CLI): +Generally, choose an Azure region that is closest to your internal users or customers. However, not all VM sizes are available in all regions. For more information, see [Services by region][services-by-region]. For a list of the VM sizes available in a specific region, run the following command from the Azure command-line interface (CLI): ``` az vm list-sizes --location @@ -61,13 +67,9 @@ Enable monitoring and diagnostics, including basic health metrics, diagnostics i For best disk I/O performance, we recommend [Premium Storage][premium-storage], which stores data on solid-state drives (SSDs). Cost is based on the capacity of the provisioned disk. IOPS and throughput (that is, data transfer rate) also depend on disk size, so when you provision a disk, consider all three factors (capacity, IOPS, and throughput). -We also recommend the use of [managed disks](/azure/storage/storage-managed-disks-overview). Managed disks do not require a storage account. You simply specify the size and type of disk and it is deployed as a highly available resource. - -If you are using unmanaged disks, create separate Azure storage accounts for each VM to hold the virtual hard disks (VHDs), in order to avoid hitting the [(IOPS) limits][vm-disk-limits] for storage accounts. - -Add one or more data disks. When you create a VHD, it is unformatted. Log into the VM to format the disk. If you are not using managed disks and have a large number of data disks, be aware of the total I/O limits of the storage account. For more information, see [virtual machine disk limits][vm-disk-limits]. +We also recommend using [Managed Disks][managed-disks]. Managed disks do not require a storage account. You simply specify the size and type of disk and it is deployed as a highly available resource. -In the Linux shell, data disks are displayed as `/dev/sdc`, `/dev/sdd`, and so on. You can run `lsblk` to list the block devices, including the disks. To use a data disk, create a partition and file system, and mount the disk. For example: +Add one or more data disks. When you create a VHD, it is unformatted. Log into the VM to format the disk. In the Linux shell, data disks are displayed as `/dev/sdc`, `/dev/sdd`, and so on. You can run `lsblk` to list the block devices, including the disks. To use a data disk, create a partition and file system, and mount the disk. For example: ```bat # Create a partition. @@ -85,7 +87,11 @@ When you add a data disk, a logical unit number (LUN) ID is assigned to the disk You may want to change the I/O scheduler to optimize for performance on SSDs because the disks for VMs with premium storage accounts are SSDs. A common recommendation is to use the NOOP scheduler for SSDs, but you should use a tool such as [iostat] to monitor disk I/O performance for your workload. -To maximize performance, create a separate storage account to hold diagnostic logs. A standard locally redundant storage (LRS) account is sufficient for diagnostic logs. +Create a storage account to hold diagnostic logs. A standard locally redundant storage (LRS) account is sufficient for diagnostic logs. + +> [!NOTE] +> If you aren't using Managed Disks, create separate Azure storage accounts for each VM to hold the virtual hard disks (VHDs), in order to avoid hitting the [(IOPS) limits][vm-disk-limits] for storage accounts. Be aware of the total I/O limits of the storage account. For more information, see [virtual machine disk limits][vm-disk-limits]. + ### Network recommendations @@ -100,7 +106,7 @@ To enable SSH, add an NSG rule that allows inbound traffic to TCP port 22. ## Scalability considerations -You can scale a VM up or down by [changing the VM size][vm-resize]. To scale out horizontally, put two or more VMs behind a load balancer. For more information, see [Running multiple VMs on Azure for scalability and availability][multi-vm]. +You can scale a VM up or down by [changing the VM size][vm-resize]. To scale out horizontally, put two or more VMs behind a load balancer. For more information, see [Run load-balanced VMs for scalability and availability][multi-vm]. ## Availability considerations @@ -108,8 +114,6 @@ For higher availability, deploy multiple VMs in an availability set. This also p Your VM may be affected by [planned maintenance][planned-maintenance] or [unplanned maintenance][manage-vm-availability]. You can use [VM reboot logs][reboot-logs] to determine whether a VM reboot was caused by planned maintenance. -VHDs are stored in [Azure storage][azure-storage]. Azure storage is replicated for durability and availability. - To protect against accidental data loss during normal operations (for example, because of user error), you should also implement point-in-time backups, using [blob snapshots][blob-snapshot] or another tool. ## Manageability considerations @@ -118,13 +122,9 @@ To protect against accidental data loss during normal operations (for example, b **SSH**. Before you create a Linux VM, generate a 2048-bit RSA public-private key pair. Use the public key file when you create the VM. For more information, see [How to Use SSH with Linux and Mac on Azure][ssh-linux]. -**Stopping a VM.** Azure makes a distinction between "stopped" and "deallocated" states. You are charged when the VM status is stopped, but not when the VM is deallocated. - -In the Azure portal, the **Stop** button deallocates the VM. If you shut down through the OS while logged in, the VM is stopped but **not** deallocated, so you will still be charged. - -**Deleting a VM.** If you delete a VM, the VHDs are not deleted. That means you can safely delete the VM without losing data. However, you will still be charged for storage. To delete the VHD, delete the file from [Blob storage][blob-storage]. +**Stopping a VM.** Azure makes a distinction between "stopped" and "deallocated" states. You are charged when the VM status is stopped, but not when the VM is deallocated. In the Azure portal, the **Stop** button deallocates the VM. If you shut down through the OS while logged in, the VM is stopped but **not** deallocated, so you will still be charged. -To prevent accidental deletion, use a [resource lock][resource-lock] to lock the entire resource group or lock individual resources, such as a VM. +**Deleting a VM.** If you delete a VM, the VHDs are not deleted. That means you can safely delete the VM without losing data. However, you will still be charged for storage. To delete the VHD, delete the file from [Blob storage][blob-storage]. To prevent accidental deletion, use a [resource lock][resource-lock] to lock the entire resource group or lock individual resources, such as a VM. ## Security considerations @@ -154,31 +154,31 @@ A deployment for this architecture is available on [GitHub][github-folder]. It d ### Prerequisites -Before you can deploy the reference architecture to your own subscription, you must perform the following steps. - 1. Clone, fork, or download the zip file for the [reference architectures][ref-arch-repo] GitHub repository. 2. Make sure you have the Azure CLI 2.0 installed on your computer. For CLI installation instructions, see [Install Azure CLI 2.0][azure-cli-2]. 3. Install the [Azure building blocks][azbb] npm package. -4. From a command prompt, bash prompt, or PowerShell prompt, login to your Azure account by using one of the commands below, and follow the prompts. +4. From a command prompt, bash prompt, or PowerShell prompt, enter the following command to log into your Azure account. ```bash az login ``` +5. Create an SSH key pair. For more information, see [How to create and use an SSH public and private key pair for Linux VMs in Azure](/azure/virtual-machines/linux/mac-create-ssh-keys). + ### Deploy the solution using azbb -To deploy the sample single VM workload, follow these steps: +To deploy this reference architecture, follow these steps: -1. Navigate to the `virtual-machines\single-vm\parameters\linux` folder for the repository you downloaded in the prerequisites step above. +1. Navigate to the `virtual-machines/single-vm/parameters/linux` folder for the repository you downloaded in the prerequisites step above. -2. Open the `single-vm-v2.json` file and enter a username and SSH public key between the quotes, as shown below, then save the file. +2. Open the `single-vm-v2.json` file and enter a username and your SSH public key between the quotes, then save the file. ```bash - "adminUsername": "", - "sshPublicKey": "", + "adminUsername": "", + "sshPublicKey": "ssh-rsa AAAAB3NzaC1...", ``` 3. Run `azbb` to deploy the sample VM as shown below. @@ -187,7 +187,15 @@ To deploy the sample single VM workload, follow these steps: azbb -s -g -l -p single-vm-v2.json --deploy ``` -For more information on deploying this sample reference architecture, visit our [GitHub repository][git]. +To verify the deployment, run the following Azure CLI command to find the public IP address of the VM: + +```bash +az vm show -n ra-single-linux-vm1 -g -d -o table +``` + +If you navigate to this address in a web browser, you should see the default Apache2 homepage. + +For information about customizing this deployment, visit our [GitHub repository][git]. ## Next steps @@ -215,6 +223,7 @@ For more information on deploying this sample reference architecture, visit our [github-folder]: https://github.com/mspnp/reference-architectures/tree/master/virtual-machines/single-vm [iostat]: https://en.wikipedia.org/wiki/Iostat [manage-vm-availability]: /azure/virtual-machines/virtual-machines-linux-manage-availability +[managed-disks]: /azure/storage/storage-managed-disks-overview [multi-vm]: multi-vm.md [naming-conventions]: /azure/architecture/best-practices/naming-conventions.md [nsg]: /azure/virtual-network/virtual-networks-nsg diff --git a/docs/reference-architectures/virtual-machines-windows/images/single-vm-diagram.png b/docs/reference-architectures/virtual-machines-windows/images/single-vm-diagram.png index 07cc81b49d9a0e568f4d61fdac14c5e2067d910c..6276c828d3438b9b5d26e7e968350cb5d4f22047 100644 GIT binary patch literal 28326 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 K%GbOU{Qm$8J+wan literal 32196 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 Qz&1^!p{Ao+tZWhRUx9c>7XSbN diff --git a/docs/reference-architectures/virtual-machines-windows/single-vm.md b/docs/reference-architectures/virtual-machines-windows/single-vm.md index 0fe986028d9..96be06e198e 100644 --- a/docs/reference-architectures/virtual-machines-windows/single-vm.md +++ b/docs/reference-architectures/virtual-machines-windows/single-vm.md @@ -6,7 +6,7 @@ description: >- author: telmosampaio -ms.date: 12/12/2017 +ms.date: 04/03/2018 pnp.series.title: Windows VM workloads pnp.series.next: multi-vm @@ -23,31 +23,37 @@ This reference architecture shows a set of proven practices for running a Window ## Architecture -Provisioning an Azure VM requires additional components, such as compute, networking, and storage resources. +Provisioning an Azure VM requires some additional components besides the VM itself, including networking and storage resources. + +* **Resource group.** A [resource group][resource-manager-overview] is a logical container that holds related Azure resources. In general, group resources based on their lifetime and who will manage them. -* **Resource group.** A [resource group][resource-manager-overview] is a container that holds related resources. In general, you should group resources in a solution based on their lifetime and who will manage the resources. For a single VM workload, you may want to create a single resource group for all resources. * **VM**. You can provision a VM from a list of published images, or from a custom managed image or virtual hard disk (VHD) file uploaded to Azure Blob storage. -* **OS disk.** The OS disk is a VHD stored in [Azure Storage][azure-storage], so it persists even when the host machine is down. -* **Temporary disk.** The VM is created with a temporary disk (the `D:` drive on Windows). This disk is stored on a physical drive on the host machine. It is **not** saved in Azure Storage and may be deleted during reboots and other VM lifecycle events. Use this disk only for temporary data, such as page or swap files. -* **Data disks.** A [data disk][data-disk] is a persistent VHD used for application data. Data disks are stored in Azure Storage, like the OS disk. -* **Virtual network (VNet) and subnet.** Every Azure VM is deployed into a VNet that can be segmented into multiple subnets. + +* **Managed Disks**. [Azure Managed Disks][managed-disks] simplify disk management by handling the storage for you. The OS disk is a VHD stored in [Azure Storage][azure-storage], so it persists even when the host machine is down. We also recommend creating one or more [data disks][data-disk], which are persistent VHDs used for application data. + +* **Temporary disk.** The VM is created with a temporary disk (the `D:` drive on Windows). This disk is stored on a physical drive on the host machine. It is *not* saved in Azure Storage and may be deleted during reboots and other VM lifecycle events. Use this disk only for temporary data, such as page or swap files. + +* **Virtual network (VNet).** Every Azure VM is deployed into a VNet that can be segmented into multiple subnets. + +* **Network interface (NIC)**. The NIC enables the VM to communicate with the virtual network. + * **Public IP address.** A public IP address is needed to communicate with the VM — for example, via remote desktop (RDP). -* **Azure DNS**. [Azure DNS][azure-dns] is a hosting service for DNS domains, providing name resolution using Microsoft Azure infrastructure. By hosting your domains in Azure, you can manage your DNS records using the same credentials, APIs, tools, and billing as your other Azure services. -* **Network interface (NIC)**. An assigned NIC enables the VM to communicate with the virtual network. -* **Network security group (NSG)**. [Network security groups][nsg] are used to allow or deny network traffic to a network resource. You can associate an NSG with an individual NIC or with a subnet. If you associate it with a subnet, the NSG rules apply to all VMs in that subnet. + +* **Azure DNS**. [Azure DNS][azure-dns] is a hosting service for DNS domains, providing name resolution using Microsoft Azure infrastructure. By hosting your domains in Azure, you can manage your DNS records using the same credentials, APIs, tools, and billing as your other Azure services. + +* **Network security group (NSG)**. [Network security groups][nsg] are used to allow or deny network traffic to VMs. NSGs can be associated either with subnets or with individual VM instances. + * **Diagnostics.** Diagnostic logging is crucial for managing and troubleshooting the VM. ## Recommendations -This architecture shows the baseline recommendations for running a Windows VM in Azure. However, we don't recommend using a single VM for mission critical workloads because it creates a single point of failure. For higher availability, deploy multiple VMs in an [availability set][availability-set]. For more information, see [Running multiple VMs on Azure][multi-vm]. +This architecture shows the baseline recommendations for running a Windows VM in Azure. However, we don't recommend using a single VM for mission critical workloads because it creates a single point of failure. For higher availability, deploy two or more load-balanced VMs. For more information, see [Running multiple VMs on Azure][multi-vm]. ### VM recommendations -Azure offers many different virtual machine sizes. [Premium Storage][premium-storage] is recommended due to its high performance and low latency, and is [supported by specific VM sizes][premium-storage-supported]. Select one of these sizes unless you have a specialized workload such as high-performance computing. For more information, see [virtual machine sizes][virtual-machine-sizes]. - -If you are moving an existing workload to Azure, start with the VM size that's the closest match to your on-premises servers. Then measure the performance of your actual workload with respect to CPU, memory, and disk input/output operations per second (IOPS), and adjust the size as needed. If you require multiple NICs for your VM, be aware that a maximum number of NICs is defined for each [VM size][vm-size-tables]. +Azure offers many different virtual machine sizes. For more information, see [Sizes for virtual machines in Azure][virtual-machine-sizes]. If you are moving an existing workload to Azure, start with the VM size that's the closest match to your on-premises servers. Then measure the performance of your actual workload with respect to CPU, memory, and disk input/output operations per second (IOPS), and adjust the size as needed. If you require multiple NICs for your VM, be aware that a maximum number of NICs is defined for each [VM size][vm-size-tables]. -When you provision Azure resources, you must specify a region. Generally, choose a region closest to your internal users or customers. However, not all VM sizes are available in all regions. For more information, see [Services by region][services-by-region]. For a list of the VM sizes available in a specific region, run the following command from the Azure command-line interface (CLI): +Generally, choose an Azure region that is closest to your internal users or customers. However, not all VM sizes are available in all regions. For more information, see [Services by region][services-by-region]. For a list of the VM sizes available in a specific region, run the following command from the Azure command-line interface (CLI): ``` az vm list-sizes --location @@ -61,15 +67,15 @@ Enable monitoring and diagnostics, including basic health metrics, diagnostics i For best disk I/O performance, we recommend [Premium Storage][premium-storage], which stores data on solid-state drives (SSDs). Cost is based on the capacity of the provisioned disk. IOPS and throughput (that is, data transfer rate) also depend on disk size, so when you provision a disk, consider all three factors (capacity, IOPS, and throughput). -We also recommend the use of [managed disks](/azure/storage/storage-managed-disks-overview). Managed disks do not require a storage account. You simply specify the size and type of disk and it is deployed as a highly available resource. +We also recommend using [Managed Disks][managed-disks]. Managed disks do not require a storage account. You simply specify the size and type of disk and it is deployed as a highly available resource. -If you are using unmanaged disks, create separate Azure storage accounts for each VM to hold the virtual hard disks (VHDs), in order to avoid hitting the [(IOPS) limits][vm-disk-limits] for storage accounts. +Add one or more data disks. When you create a VHD, it is unformatted. Log into the VM to format the disk. When possible, install applications on a data disk, not the OS disk. Some legacy applications might need to install components on the C: drive; in that case, you can [resize the OS disk][resize-os-disk] using PowerShell. -Add one or more data disks. When you create a VHD, it is unformatted. Log into the VM to format the disk. If you are not using managed disks and have a large number of data disks, be aware of the total I/O limits of the storage account. For more information, see [virtual machine disk limits][vm-disk-limits]. +Create a storage account to hold diagnostic logs. A standard locally redundant storage (LRS) account is sufficient for diagnostic logs. -When possible, install applications on a data disk, not the OS disk. Some legacy applications might need to install components on the C: drive; in that case, you can [resize the OS disk][resize-os-disk] using PowerShell. +> [!NOTE] +> If you aren't using Managed Disks, create separate Azure storage accounts for each VM to hold the virtual hard disks (VHDs), in order to avoid hitting the [(IOPS) limits][vm-disk-limits] for storage accounts. Be aware of the total I/O limits of the storage account. For more information, see [virtual machine disk limits][vm-disk-limits]. -To maximize performance, create a separate storage account to hold diagnostic logs. A standard locally redundant storage (LRS) account is sufficient for diagnostic logs. ### Network recommendations @@ -84,7 +90,7 @@ To enable RDP, add an NSG rule that allows inbound traffic to TCP port 3389. ## Scalability considerations -You can scale a VM up or down by [changing the VM size][vm-resize]. To scale out horizontally, put two or more VMs behind a load balancer. For more information, see [Running multiple VMs on Azure for scalability and availability][multi-vm]. +You can scale a VM up or down by [changing the VM size][vm-resize]. To scale out horizontally, put two or more VMs behind a load balancer. For more information, see [Run load-balanced VMs for scalability and availability][multi-vm]. ## Availability considerations @@ -92,21 +98,15 @@ For higher availability, deploy multiple VMs in an availability set. This also p Your VM may be affected by [planned maintenance][planned-maintenance] or [unplanned maintenance][manage-vm-availability]. You can use [VM reboot logs][reboot-logs] to determine whether a VM reboot was caused by planned maintenance. -VHDs are stored in [Azure storage][azure-storage]. Azure storage is replicated for durability and availability. - To protect against accidental data loss during normal operations (for example, because of user error), you should also implement point-in-time backups, using [blob snapshots][blob-snapshot] or another tool. ## Manageability considerations **Resource groups.** Put closely associated resources that share the same lifecycle into the same [resource group][resource-manager-overview]. Resource groups allow you to deploy and monitor resources as a group and track billing costs by resource group. You can also delete resources as a set, which is very useful for test deployments. Assign meaningful resource names to simplify locating a specific resource and understanding its role. For more information, see [Recommended Naming Conventions for Azure Resources][naming-conventions]. -**Stopping a VM.** Azure makes a distinction between "stopped" and "deallocated" states. You are charged when the VM status is stopped, but not when the VM is deallocated. - -In the Azure portal, the **Stop** button deallocates the VM. If you shut down through the OS while logged in, the VM is stopped but **not** deallocated, so you will still be charged. +**Stopping a VM.** Azure makes a distinction between "stopped" and "deallocated" states. You are charged when the VM status is stopped, but not when the VM is deallocated. In the Azure portal, the **Stop** button deallocates the VM. If you shut down through the OS while logged in, the VM is stopped but **not** deallocated, so you will still be charged. -**Deleting a VM.** If you delete a VM, the VHDs are not deleted. That means you can safely delete the VM without losing data. However, you will still be charged for storage. To delete the VHD, delete the file from [Blob storage][blob-storage]. - -To prevent accidental deletion, use a [resource lock][resource-lock] to lock the entire resource group or lock individual resources, such as a VM. +**Deleting a VM.** If you delete a VM, the VHDs are not deleted. That means you can safely delete the VM without losing data. However, you will still be charged for storage. To delete the VHD, delete the file from [Blob storage][blob-storage]. To prevent accidental deletion, use a [resource lock][resource-lock] to lock the entire resource group or lock individual resources, such as a VM. ## Security considerations @@ -132,19 +132,17 @@ A deployment for this architecture is available on [GitHub][github-folder]. It d * A virtual network with a single subnet named **web** used to host the VM. * An NSG with two incoming rules to allow RDP and HTTP traffic to the VM. * A VM running the latest version of Windows Server 2016 Datacenter Edition. - * A sample custom script extension that formats the two data disks, and a PowerShell DSC script that deploys IIS. + * A sample custom script extension that formats the two data disks, and a PowerShell DSC script that deploys Internet Information Services (IIS). ### Prerequisites -Before you can deploy the reference architecture to your own subscription, you must perform the following steps. - 1. Clone, fork, or download the zip file for the [reference architectures][ref-arch-repo] GitHub repository. 2. Make sure you have the Azure CLI 2.0 installed on your computer. For CLI installation instructions, see [Install Azure CLI 2.0][azure-cli-2]. 3. Install the [Azure building blocks][azbb] npm package. -4. From a command prompt, bash prompt, or PowerShell prompt, login to your Azure account by using one of the commands below, and follow the prompts. +4. From a command prompt, bash prompt, or PowerShell prompt, enter the following command to log into your Azure account. ```bash az login @@ -152,11 +150,11 @@ Before you can deploy the reference architecture to your own subscription, you m ### Deploy the solution using azbb -To deploy the sample single VM workload, follow these steps: +To deploy this reference architecture, follow these steps: 1. Navigate to the `virtual-machines\single-vm\parameters\windows` folder for the repository you downloaded in the prerequisites step above. -2. Open the `single-vm-v2.json` file and enter a username and SSH key between the quotes, as shown below, then save the file. +2. Open the `single-vm-v2.json` file and enter a username and password between the quotes, then save the file. ```bash "adminUsername": "", @@ -169,7 +167,15 @@ To deploy the sample single VM workload, follow these steps: azbb -s -g -l -p single-vm-v2.json --deploy ``` -For more information on deploying this sample reference architecture, visit our [GitHub repository][git]. +To verify the deployment, run the following Azure CLI command to find the public IP address of the VM: + +```bash +az vm show -n ra-single-windows-vm1 -g -d -o table +``` + +If you navigate to this address in a web browser, you should see the default IIS homepage. + +For information about customizing this deployment, visit our [GitHub repository][git]. ## Next steps @@ -197,6 +203,7 @@ For more information on deploying this sample reference architecture, visit our [group-policy]: https://docs.microsoft.com/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn595129(v=ws.11) [log-collector]: https://azure.microsoft.com/blog/simplifying-virtual-machine-troubleshooting-using-azure-log-collector/ [manage-vm-availability]: /azure/virtual-machines/virtual-machines-windows-manage-availability +[managed-disks]: /azure/storage/storage-managed-disks-overview [multi-vm]: multi-vm.md [naming-conventions]: ../../best-practices/naming-conventions.md [nsg]: /azure/virtual-network/virtual-networks-nsg