Microsoft Azure 上配置虚拟机

想把个人项目放到云上,正好单位有微软Azure的账号,记录下步骤。

1. 基本概念

什么是虚拟机?

虚拟机(又称为 VM)是物理计算机的软件仿真。 因为 VM 以软件形式存在,所以能够在几分钟内生成数十、数百甚至数千台 Azure VM,并且可在不需要它们时将其删除。 由于使用成本低,并且按分钟计费,你只需在你使用的时长内为你使用的计算资源付费。 另外,还可通过多种方法来对 VM 进行配置以满足需求。

正在运行的 VM 的快照称为“映像”。 Azure 为 Windows 和多种 Linux 提供了映像。 此外,你还可以创建自己的预配置映像来加快部署的速度。 在这里,你将搭建由 Canonical 提供的 Ubuntu 18.04 VM

Azure 上的虚拟机是由什么定义的?

虚拟机是由许多因素定义的,包括其大小和位置。 在搭建 VM 之前,让我们简单了解一下它涉及的内容。

Size

VM 的“大小”定义了其处理器速度、内存量、初始存储量以及预期的网络带宽。 某些大小甚至包括专用硬件,例如用于大量图形渲染和视频编辑的 GPU。

Region

Azure 由分布在世界各地的数据中心组成。 “区域”是指定的地理位置中的 Azure 数据中心集。 每个 Azure 资源(包括虚拟机)都分配有一个区域。 例如,美国东部和北欧区域。

Network

“虚拟网络”指的是 Azure 中逻辑隔离的网络。 Azure 上的每台虚拟机都与一个虚拟网络相关联。 Azure 为虚拟网络提供了称为“网络安全组”的云级防火墙。

Resource groups

虚拟机和其他云资源分组到称为“资源组”的逻辑容器中。 组通常用于组织作为应用程序或服务的一部分一起部署的资源集。 你通过资源名称来引用资源。

什么是 Azure Cloud Shell?

Azure Cloud Shell 是一个基于浏览器的命令行体验,用于管理和开发 Azure 资源。 可以将 Cloud Shell 视为在云中运行的交互式控制台。

Cloud Shell 提供了可供选择的两种体验:Bash 和 PowerShell。 这两者都包括了对 Azure 的命令行界面 Azure CLI 的访问权限。

可以使用任何 Azure 管理界面(包括 Azure 门户、Azure CLI 和 Azure PowerShell)管理任何类型的 VM。 为便于学习,此处使用 Azure CLI 来创建和管理 Windows 或 Linux VM。

在 Azure 中创建资源

通常,我们要做的第一件事就是创建一个“资源组”来保存所有需要创建的内容。 这样,我们就能够作为一个整体来管理构成我们解决方案的所有 VM、磁盘、网络接口和其他元素。 我们可以使用 Azure CLI 通过 az group create 命令创建资源组。 它采用 --name 在订阅中为其提供唯一名称,并采用 --location 告诉 Azure 默认情况下我们希望资源位于世界的哪个区域。

2. 创建Linux VM

在cloud shell中(可以在Microsoft Azure的门户中打开)运行以下命令创建VM:

az vm create \
  --name myVM \
  --resource-group 4881af1b-6766-45d7-961e-ce3777a53267 \
  --image UbuntuLTS \
  --location eastus \
  --size Standard_DS2_v2 \
  --admin-username xxl \
  --generate-ssh-keys

其中:

  • VM 命名为 myVM。 此名称在 Azure 中标识 VM。 它还将成为 VM 的内部主机名或计算机名。
  • 资源组(或称作 VM 的逻辑容器)命名为 myResource
  • UbuntuLTS 指定 Ubuntu 18.04 LTS VM 映像。
  • Standard_DS2_v2 指的是 VM 大小。 此大小的 VM 具有两个虚拟 CPU 和 7 GB 内存。
  • --admin-username 选项将“xxl”指定为 VM 的用户名。 用户名可以是任何所需内容。
  • --generate-ssh-keys 选项创建用于登录到 VM 的 SSH 密钥对。默认情况下, SSH 公钥和私钥文件在 ~/.ssh 目录中创建。关于Linux VM中的ssh相关可以参照 https://docs.microsoft.com/zh-cn/azure/virtual-machines/linux/mac-create-ssh-keys

默认情况下,Azure 为 VM 分配公用 IP 地址。 可以将 VM 配置为可从 Internet 访问或仅可从内部网络访问。

当 VM 就绪后,即可查看其相关信息。 下面是一个示例。记下publicIpAddress,后面会用此地址访问VM。也可以在门户中查到该地址。

{
  "fqdns": "",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "eastus",
  "macAddress": "00-0D-3A-1D-EB-02",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "137.135.110.210",
  "resourceGroup": "myResourceGroup",
  "zones": ""
}

验证 VM 是否正在运行

运行以下 az vm get-instance-view 命令以验证 VM 是否已成功创建并正在运行

az vm get-instance-view \
  --name myVM \
  --resource-group 4881af1b-6766-45d7-961e-ce3777a53267 \
  --output table

显示的输出类似如下所示:

Name    ResourceGroup                         Location    ProvisioningState    PowerState
------  ------------------------------------  ----------  -------------------  ------------
myVM    myResource                            eastus      Succeeded            VM running

注意: 这里也可以用门户上的UI进行创建操作,可以手动选择配置选项。

为web流量打开端口80

默认情况下,Azure中创建Linux VM仅打开 SSH 连接。 使用 az vm open-port 打开 TCP 端口 80 以供 NGINX Web 服务器使用。

运行此 az vm open-port 命令以打开防火墙端口 80 (HTTP)。

az vm open-port \
  --name myVM \
  --resource-group 4881af1b-6766-45d7-961e-ce3777a53267 \
  --port 80

 

3. 添加web服务器

在这里,你将在 VM 中安装一个 Web 服务器并提供一个显示 VM 主机名的基本网页。

若要配置 VM,你有多种选择。 您可以直接连接,并以交互方式配置系统。 例如,在 Windows 系统上,你可以创建一个远程桌面会话来连接到远程 Windows 计算机的 UI,就像你坐在它面前一样。 在 Linux 系统上,你可以创建 SSH 连接来从终端安全地操作远程 Linux 系统

在这里,你将从 Cloud Shell 会话使用基于 Linux 的 Azure 虚拟机的一项称为“自定义脚本扩展”的功能远程配置 Nginx

什么是 Nginx?

Nginx(读作“engine-x”)是一个流行的免费开源 Web 服务器,它在 Unix、Linux、macOS 和 Windows 上运行。 在这里,你将使用 Nginx 为一个基本网页提供服务。

什么是自定义脚本扩展?

自定义脚本扩展是一种在 Azure VM 上下载并运行脚本的简单方法。 它只是在 VM 启动并运行后,可用来配置系统的多种方法之一。

可以将脚本存储在 Azure 存储中,也可以将其存储在某个公共位置中,例如 GitHub。 可以手动运行脚本,也可以将其作为自动化程度较高的部署的一部分运行。 在这里,你将运行 Azure CLI 命令来从 GitHub 下载一个 Bash 脚本并在 VM 上执行该脚本。 该脚本配置 Nginx。

手动配置是一个好的开始,但当你添加系统时,可以执行自动部署。 自动化涉及运行可重复的过程,例如程序和脚本,这减轻了你的重担。

手动配置Nginx:

注意,当前还是用Azure账号进行操作,包括创建虚拟机等。当前还没有进入建立的Linux VM系统。外部可以用Azure CLI进行才做。

若要进入虚拟机进行部署,需要手动连接到虚拟机。

通过ssh连接到VM,将adminName和publicIpAddress替换为你定义的用户名以及VM的公共IP地址(前面记下的)

ssh adminName@publicIpAddress

更新程序包来源,并安装最新的Nginx程序包

sudo apt-get -y update
sudo apt-get -y install nginx

 

自定义脚本扩展配置 Nginx

在这里,你将从 Cloud Shell 使用自定义脚本扩展在 VM 上远程配置 Nginx。 

从 Cloud Shell 中,运行此 az vm extension set 命令来下载并执行一个 Bash 脚本,该脚本安装 Nginx 并配置一个基本主页。

az vm extension set \
  --resource-group 4881af1b-6766-45d7-961e-ce3777a53267 \
  --vm-name myVM \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --settings "{'fileUris':['https://raw.githubusercontent.com/MicrosoftDocs/mslearn-welcome-to-azure/master/configure-nginx.sh']}" \
  --protected-settings "{'commandToExecute': './configure-nginx.sh'}"

配置 Nginx、设置主页内容和启动服务的过程需要几分钟才能完成。

在此期间,如果需要,可以从一个单独的浏览器选项卡检查该bash脚本 (就是上面的fileUris: https://raw.githubusercontent.com/MicrosoftDocs/mslearn-welcome-to-azure/master/configure-nginx.sh) 。 该脚本在Ubuntu安装 Nginx 并将主页配置为显示一条欢迎消息和 VM 的计算机名“myVM”。内容如下:

#!/bin/bash

# Update apt cache.
sudo apt-get update

# Install Nginx.
sudo apt-get install -y nginx

# Set the home page.
echo "<html><body><h2>Welcome to Azure! My name is $(hostname).</h2></body></html>" | sudo tee -a /var/www/html/index.html

 

验证配置

现在已设置了 Nginx,让我们验证它是否正在运行。

  1. 运行此 az vm show 命令以列出 VM 的公共 IP 地址
    az vm show \
      --name myVM \
      --resource-group 4881af1b-6766-45d7-961e-ce3777a53267 \
      --show-details \
      --query [publicIps] \
      --output tsv

    可以看到 VM 的公用 IP 地址,例如,40.114.36.25

  2. 在新的浏览器选项卡中,导航到 VM 的 IP 地址。 可以看到欢迎消息和 VM 的名称。这里的html页面即为Nginx的bash中配置的html字符串

  • 如果看不到欢迎消息:1. 验证是否使用的是自己的 VM IP 地址,而不是任何示例中显示的 IP 地址。2. 验证是否运行了前面显示的 az vm open-port 命令来打开防火墙端口 80 (HTTP)。3. 等待几分钟,然后刷新页面。 即使已安装 Nginx,该服务也可能尚未完全启动。

4. 纵向扩展

你的 Web 服务器已建成且正在运行,但你意识到你需要更强的计算能力来改善用户体验。 如何使 VM 更快地运行?

什么是扩展?

扩展指的是增加网络带宽、内存、存储或计算能力来实现更好的性能。

你可能听说过术语“纵向扩展”和“横向扩展”。

纵向扩展是指在现有虚拟机上增加内存、存储或计算能力。 例如,可以向 Web 或数据库服务器添加更多内存来使其更快地运行。

横向扩展是指添加其他虚拟机来提升应用程序的能力。 例如,可创建配置方式完全相同的许多虚拟机,并使用负载均衡器在它们之间分配负载。

纵向扩展 VM

回想一下,你在创建 VM 时指定了大小 Standard_DS2_v2。 你的 VM 当前具有两个虚拟 CPU 和 7 GB 内存。

让我们将其提升到下一个大小 Standard_DS3_v2。 这样,你的 VM 将具有四个虚拟 CPU 和 14 GB 内存。

  1. 在 Cloud Shell 中,运行 az vm resize 以将 VM 的大小增加到 Standard_DS3_v2。
    az vm resize \
      --resource-group 4881af1b-6766-45d7-961e-ce3777a53267 \
      --name myVM \
      --size Standard_DS3_v2

    更新需要大约一分钟,此过程中将重启VM

  2. 运行 az vm show 以验证 VM 是否在运行新大小。

    az vm show \
      --resource-group 4881af1b-6766-45d7-961e-ce3777a53267 \
      --name myVM \
      --query "hardwareProfile" \
      --output tsv

    可看到新的 VM 大小为 Standard_DS3_v2

5. 使用scp往VM传输文件

具体可参照 https://docs.azure.cn/zh-cn/virtual-machines/linux/copy-files-to-linux-vm-using-scp

注意传输的VM上的目标文件夹需要有所用的用户访问权限(而不能只有root权限)。需要将目标文件夹与所在的父文件夹都开通权限才能拷入,具体可见 https://blog.csdn.net/longzhinuhou/article/details/90209304

 

6. 使用SMB在Linux VM上装在Azure文件存储

https://docs.azure.cn/zh-cn/virtual-machines/linux/mount-azure-file-storage-on-linux-using-smb

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值