Azure入门:创建第一个虚拟机
发布时间: 2023-12-14 15:51:39 阅读量: 38 订阅数: 39
# 1. 介绍:了解Azure和虚拟机基础知识
## 1.1 什么是Azure
Microsoft Azure是一种灵活的云计算平台和服务,提供了计算、存储、数据库、人工智能等各种功能,能够帮助个人和企业构建、部署和管理应用程序,通过全球范围的数据中心进行灵活的扩展和升级。
## 1.2 什么是虚拟机
虚拟机(Virtual Machine,VM)是一种基于软件的模拟计算机系统,它能在一个物理计算机上创建出一个或多个逻辑上独立的计算机环境,用户可以在这些环境中运行不同的操作系统和应用程序。在Azure中,虚拟机是一种用于托管业务应用程序和服务的弹性计算资源。
## 2. 准备工作:注册Azure账号和创建资源组
在开始创建虚拟机之前,我们需要先进行一些准备工作,包括注册Azure账号和创建资源组。
### 2.1 注册Azure账号
要使用Azure的服务,我们首先需要注册一个Azure账号。请按照以下步骤进行注册:
1. 打开Azure官方网站(https://azure.microsoft.com/),并点击页面右上角的"开始免费"按钮。
2. 在弹出的页面上,选择一个适合的订阅类型(如"免费帐户"或"付费计划")。
3. 提供所需的个人信息,并创建一个新的Microsoft账号。
4. 按照指示完成注册过程。
在注册完成后,你将拥有一个Azure账号,可以使用它来访问和管理Azure的各种服务。
### 2.2 创建资源组
资源组是Azure中用来组织和管理资源的基本单元。在创建虚拟机之前,我们需要先创建一个资源组。请按照以下步骤进行创建:
1. 登录Azure门户网站(https://portal.azure.com/)。
2. 点击左侧导航栏中的"创建资源"按钮,然后选择"资源组"。
3. 在弹出的窗口中,选择要创建资源组的订阅,然后填写资源组的基本信息,包括名称、区域等。
4. 点击"创建"按钮,等待资源组创建完成。
创建资源组完成后,我们就可以开始创建虚拟机了。
### 3. 创建虚拟机:选择虚拟机规格和配置
在Azure中,创建虚拟机是非常简单的,首先你需要登录到Azure门户并在指定的资源组中创建新的虚拟机。接下来,我们将讨论如何选择虚拟机规格以及配置虚拟机网络和操作系统。
#### 3.1 选择虚拟机规格
Azure提供了各种各样的虚拟机规格,以满足不同的计算需求。你可以根据虚拟机的用途、处理器、内存和存储等需求来选择合适的规格。在选择虚拟机规格时,你需要考虑以下几个因素:
- **虚拟机系列**:Azure提供了多种系列的虚拟机,如通用用途系列、计算优化系列、存储优化系列等,根据你的需求选择合适的系列。
- **处理器和内存**:根据你的计算需求选择虚拟机的处理器核数和内存大小,Azure提供了不同规格的虚拟机供你选择。
- **存储**:你可以选择使用Azure提供的标准存储或高级存储,也可以根据需要添加附加数据磁盘。
在Azure门户中,你可以通过“创建虚拟机”向导来浏览并选择虚拟机规格,根据你的需求进行筛选和选择合适的规格。
```python
# 示例代码:使用Azure Python SDK选择虚拟机规格的代码示例
from azure.identity import DefaultAzureCredential
from azure.mgmt.compute import ComputeManagementClient
credential = DefaultAzureCredential()
subscription_id = 'your-subscription-id'
resource_group_name = 'your-resource-group-name'
location = 'eastus'
vm_size = 'Standard_D2_v3' # 选择的虚拟机规格
compute_client = ComputeManagementClient(credential, subscription_id)
available_sizes = compute_client.virtual_machines.list_available_sizes(resource_group_name, 'your-vm-name', location)
for size in available_sizes:
if size.name == vm_size:
print("Selected VM Size: ", size.name)
break
```
**代码总结:** 上面的示例代码演示了如何使用Azure Python SDK来列出特定位置上可用的虚拟机规格,并选择指定的虚拟机规格。
**结果说明:** 运行以上代码,会输出所选择的虚拟机规格名称。
#### 3.2 配置虚拟机网络
在创建虚拟机时,你需要配置虚拟网络以便虚拟机能够与其他资源通信,并且保证安全性。Azure提供了虚拟网络、子网、网络安全组(NSG)等功能来帮助你进行网络配置。
- **虚拟网络**:在创建虚拟机时,你可以选择现有的虚拟网络,或者创建一个新的虚拟网络。
- **子网**:如果你选择现有的虚拟网络,还需要选择一个子网来部署你的虚拟机。
- **网络安全组(NSG)**:网络安全组可以帮助你控制进出虚拟机的流量,限制网络访问。
下面是一个配置虚拟机网络的简单示例代码:
```java
// 示例代码:使用Java SDK配置虚拟机网络的代码示例
import com.azure.identity.DefaultAzureCredential;
import com.azure.management.network.Network;
import com.azure.management.network.NetworkSecurityGroup;
import com.azure.management.network.NetworkSecurityGroups;
import com.azure.management.network.PublicIpAddress;
import com.azure.management.network.Subnet;
import com.azure.management.network.VirtualNetwork;
import com.azure.management.network.VirtualNetworks;
import com.azure.management.resources.fluentcore.arm.Region;
import com.azure.management.resources.fluentcore.utils.SdkContext;
import com.azure.resourcemanager.Azure;
import com.azure.resourcemanager.compute.models.CachingTypes;
import com.azure.resourcemanager.compute.models.Disk;
import com.azure.resourcemanager.compute.models.OperatingSystemTypes;
import com.azure.resourcemanager.compute.models.StorageAccountTypes;
import com.azure.resourcemanager.compute.models.VirtualMachine;
import com.azure.resourcemanager.compute.models.VirtualMachineSizeTypes;
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
Azure azure = Azure.configure().authenticate(credential).withDefaultSubscription();
Network network = azure.networks().define("MyNetwork")
.withRegion(Region.US_EAST)
.withNewResourceGroup("MyResourceGroup")
.create();
Subnet subnet = network.update().defineSubnet("MySubnet")
.withAddressPrefix("192.168.1.0/24")
.attach()
.apply();
NetworkSecurityGroup nsg = azure.networkSecurityGroups()
.define("MyNsg")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("MyResourceGroup")
.defineRule("AllowSSH")
.allowInbound()
.fromAnyAddress()
.fromPort(22)
.toAnyAddress()
.toPort(22)
.withProtocol(SecurityRuleProtocol.TCP)
.withPriority(100)
.attach()
.create();
```
**代码总结:** 上面的示例代码演示了如何使用Azure Java SDK来创建虚拟网络、子网以及配置网络安全组(NSG)。
**结果说明:** 运行以上代码会在Azure中创建虚拟网络、子网和网络安全组,并定义允许SSH流量的安全规则。
#### 3.3 确定操作系统
在创建虚拟机时,你需要确定虚拟机的操作系统。Azure支持多种操作系统,包括Windows Server、Ubuntu、CentOS、Red Hat Enterprise Linux等。在选择操作系统时,你需要考虑到你的应用程序和工作负载的兼容性、性能需求等因素。
在Azure门户中创建虚拟机时,你可以在“基本详情”步骤中选择合适的操作系统映像,并且可以选择自定义映像或市场映像。此外,你还可以使用Azure提供的各种虚拟机扩展来实现特定的操作系统定制需求。
以上是创建虚拟机时选择虚拟机规格和配置网络的基本步骤,下一步我们将讨论如何设置虚拟机的安全性和管理选项。
### 4. 设置虚拟机:配置安全性和管理选项
在创建虚拟机之后,我们需要配置一些安全性和管理选项,以确保虚拟机的安全性和可管理性。
#### 4.1 设置虚拟机的安全组和网络安全组(NSG)
Azure虚拟机的安全组和网络安全组 (NSG) 是用于控制网络流量的基本防火墙。安全组是能够在虚拟网络级别和子网级别控制网络流量的安全规则集,而 NSG 是能够控制单个网络接口的安全规则集。
下面是如何使用 Azure CLI 创建安全组和设置规则的示例:
```bash
# 创建安全组
az network nsg create --resource-group MyResourceGroup --name MyNsg
# 创建安全规则
az network nsg rule create --resource-group MyResourceGroup --nsg-name MyNsg --name SSH --priority 100 \
--source-address-prefix "*" --source-port-range "*" --destination-address-prefix "*" --destination-port-range 22 --access Allow --protocol Tcp --description "Allow SSH Access"
```
#### 4.2 远程连接到虚拟机
远程连接虚拟机是管理虚拟机的常见方式之一。在 Azure 中,可以通过 SSH 或 RDP 协议与虚拟机建立远程连接。下面是使用 Azure CLI 创建 SSH 连接的示例:
```bash
# 获取公共 IP 地址
az network public-ip show --resource-group MyResourceGroup --name MyPublicIP --query ipAddress
# 使用 SSH 远程连接
ssh azureuser@公共IP地址
```
#### 4.3 配置监视和警报
为了及时了解虚拟机的运行情况,可以配置监视和警报。Azure 提供了 Azure Monitor 服务来帮助监视虚拟机的性能和运行状况,并设置警报规则以便在出现问题时及时通知管理员。
可以通过 Azure 门户或 Azure CLI 来配置监视和警报规则。以下是使用 Azure CLI 设置启动时间和运行状况警报的示例:
```bash
# 设置启动时间警报规则
az monitor metrics alert create --resource-group MyResourceGroup --name StartStopAlert --scopes /subscriptions/<SubscriptionID>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/MyVm --condition "metric=Percentage CPU > 90" --description "Start/Stop VM Alert" --evaluation-frequency 5 --window-size 15 --severity 3 --action "/subscriptions/<SubscriptionID>/resourceGroups/MyResourceGroup/providers/microsoft.insights/actiongroups/MyActionGroup"
# 设置运行状况警报规则
az monitor metrics alert create --resource-group MyResourceGroup --name VMHealthAlert --scopes /subscriptions/<SubscriptionID>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/MyVm --condition "metric=Percentage CPU > 90" --description "VM Health Alert" --evaluation-frequency 15 --window-size 30 --severity 2 --action "/subscriptions/<SubscriptionID>/resourceGroups/MyResourceGroup/providers/microsoft.insights/actiongroups/MyActionGroup"
```
以上是设置虚拟机安全组、远程连接及监视警报的一些基本操作示例。根据具体需求,还可以进一步配置虚拟机的安全性和管理选项。
## 5. 启动和连接虚拟机:远程连接虚拟机并进行操作
在完成虚拟机的创建后,我们可以通过远程连接来启动虚拟机并进行操作。本章节将介绍如何启动虚拟机、远程连接到虚拟机以及进行常见操作,如上传文件和执行命令等。
### 5.1 启动虚拟机
1. 打开Azure门户并登录到您的账号。
2. 转到虚拟机资源的页面。
3. 选择要启动的虚拟机。
4. 在顶部选项栏中,点击“启动”按钮。
### 5.2 远程连接到虚拟机
当虚拟机启动后,我们可以通过远程连接工具来连接到虚拟机。
#### 远程连接到Windows虚拟机
对于运行Windows操作系统的虚拟机,可以使用远程桌面协议(RDP)来进行连接。以下是连接到Windows虚拟机的步骤:
1. 打开远程桌面连接软件(如Windows自带的“远程桌面连接”工具)。
2. 输入虚拟机的公共IP地址或主机名。
3. 点击“连接”按钮。
4. 在弹出的登录对话框中,输入虚拟机的用户名和密码。
5. 点击“确定”按钮。
#### 远程连接到Linux虚拟机
对于运行Linux操作系统的虚拟机,可以使用SSH协议来进行连接。以下是连接到Linux虚拟机的步骤:
1. 打开SSH客户端软件(如Windows上的PuTTY)。
2. 输入虚拟机的公共IP地址或主机名。
3. 设置连接端口(默认情况下,SSH使用22端口)。
4. 点击“连接”按钮。
5. 在弹出的登录对话框中,输入虚拟机的用户名和密码。
6. 点击“确定”按钮。
### 5.3 进行常见操作,如上传文件、执行命令等
一旦成功连接到虚拟机,您可以进行各种常见操作。
#### 上传文件到虚拟机
要将文件上传到虚拟机,可以使用SCP(Secure Copy)命令或工具。以下是使用SCP命令上传文件的示例(以Linux虚拟机为例):
```bash
scp /path/to/local/file username@virtual-machine-ip:/path/to/remote/directory
```
#### 执行命令
在虚拟机上执行命令的方式取决于虚拟机的操作系统。以下是一些常见操作系统的命令示例:
- 在Windows上执行命令:
```bash
dir # 查看当前目录内容
ipconfig # 查看网络配置信息
```
- 在Linux上执行命令:
```bash
ls # 查看当前目录内容
ifconfig # 查看网络配置信息
```
请根据虚拟机的操作系统和您的需求,执行适当的命令。
在本章节中,我们了解了如何启动虚拟机,并使用远程连接工具连接到虚拟机。我们还介绍了如何上传文件到虚拟机和在虚拟机上执行命令。这些基本操作将帮助您在使用Azure虚拟机时进行必要的操作和管理。
### 6. 关闭和管理虚拟机:保存资源和降低成本
在使用Azure虚拟机时,及时关闭和管理虚拟机是非常重要的,可以帮助我们节约成本并保护资源。本章将介绍如何关闭和管理虚拟机。
#### 6.1 关闭虚拟机
在不需要虚拟机时,可以将其关闭,以节约成本并释放资源。以下是如何关闭虚拟机的示例代码(使用Python SDK):
```python
from azure.identity import DefaultAzureCredential
from azure.mgmt.compute import ComputeManagementClient
from azure.mgmt.compute.models import InstanceViewStatus
# 使用默认凭据进行身份验证
credentials = DefaultAzureCredential()
# 设置订阅ID和资源组名称
subscription_id = 'your-subscription-id'
resource_group_name = 'your-resource-group-name'
vm_name = 'your-vm-name'
# 实例化计算管理客户端
compute_client = ComputeManagementClient(credentials, subscription_id)
# 关闭虚拟机
async_vm_stop = compute_client.virtual_machines.begin_power_off(resource_group_name, vm_name)
async_vm_stop.result()
print("虚拟机已关闭")
```
代码说明:此代码使用Azure Python SDK,通过身份验证后,找到要关闭的虚拟机并执行关闭操作。
#### 6.2 管理虚拟机资源
除了关闭虚拟机外,还可以通过管理虚拟机资源来降低成本。例如,可以将虚拟机从高性能规格调整为低性能规格,以减少费用。以下是一个调整虚拟机规格的示例(使用Azure CLI):
```shell
az vm resize --resource-group your-resource-group-name --name your-vm-name --size Standard_DS1_v2
```
代码说明:通过使用Azure CLI中的`az vm resize`命令可以将虚拟机的规格调整为`Standard_DS1_v2`,从而降低成本。
#### 6.3 调整虚拟机规格来降低成本
在实际使用中,根据实际需求定期评估和调整虚拟机规格是非常重要的,以便最大限度地降低成本并保障资源的有效利用。
0
0