Exam AZ-300: Microsoft Azure Architect Technologies
从今天开始,准备AZ-300,AZ-301架构师考试,会根据每一条考试大纲整理出要点和心得以及实验。
一) Deploy and configure infrastructure
(1) Analyze resource utilization and consumption
-
configure diagnostic settings on resources
-
create baseline for resources
-
create and rest alerts
可以根据特定的性能指标创建警报。 例如,当平均 CPU 使用率超过特定的阈值或者可用磁盘空间低于特定的空间量时,警报可用于发出通知。 警报显示在 Azure 门户中,也可以通过电子邮件发送。 还可以触发 Azure 自动化 Runbook 或 Azure 逻辑应用来响应生成的警报。
以下示例针对平均 CPU 使用率创建警报。
- 在 Azure 门户中选择“资源组”,选择“myResourceGroupMonitor”,并在资源列表中选择“myVM”。
- 选择“警报(经典)”,然后在警报窗口顶部选择“添加指标警报(经典)”。
- 为警报提供名称,例如 myAlertRule
- 若要在 CPU 百分比持续 5 分钟超过 1.0 时触发警报,请选中其他所有默认值。
- (可选)选中“电子邮件所有者、参与者和读者”对应的框,以便向他们发送电子邮件通知。 默认操作是在门户中显示通知。
- 选择“确定”按钮。
-
analyze alerts across subscription
-
analyze metrics across subscription
Azure Monitor 收集的所有数据属于以下两种基本类型之一:指标和日志。 指标是数字值,用于描述系统某些方面在特定时间点的情况。 指标是轻型数据,可以支持近实时方案。 日志包含不同类型的已经整理成记录的数据,每种类型都有不同的属性集。 与性能数据一样,事件和跟踪等遥测数据也作为日志存储,因此,可将它们合并以进行分析。
指标的响应速度快于日志,因此在创建警报时延迟更低,成本也更低。
Azure 中指标的特定特性包括:
- 按一分钟频率收集(除非指标定义中另有规定)。
- 由指标名称和充当类别的命名空间唯一标识。
- 存储 93 天。 可将指标复制到日志以了解长期趋势。
-
create action groups
-
monitor for unused resources
设置规则,CPU内存使用率低于多少的定义为未使用资源
-
monitor spend
Portal订阅中可以查看当前花费
-
report on spend
可以将消费明细通过邮件等方式发送给用户
-
utilize Log Search query functions
-
view alerts in Azure Monitor logs
(2) Create and configure storage accounts
-
configure network access to the storage account
-
create and configure storage account
可利用portal,PowerShell,CLI,模板等创建存储账户
New-AzStorageAccount -ResourceGroupName $resourceGroup `
-Name <account-name> `
-Location $location `
-SkuName Standard_RAGRS `
-Kind StorageV2
SKU有LRS,GRS,ZRS和RA-GRS
-
generate shared access signature
使用SAS可以避免直接暴露共享密钥,只能写入和读取数据
可以通过存储资源管理器检索共享访问签名 (SAS)。 右键单击某个存储帐户、容器或 Blob,并选择“获取共享访问签名...”。选择开始时间和过期时间以及 SAS URL 的权限,并选择“创建”。 系统会提供包含查询字符串的完整 URL 以及查询字符串本身,在下一个屏幕 中可以复制这些信息。
-
install and use Azure Storage Explorer
-
manage access keys
portal上的key中查看和管理共享密钥,包含主密钥和副密钥,可以手动重置密钥
-
monitor activity log by using Azure Monitor logs
-
implement Azure storage replication
LRS,副本留在不同容错域和更新域中
GRS,副本在不同区域,采用异步复制
(3) Create and configure a Virtual Machine (VM) for Windows and Linux
-
configure high availability
虚拟机高可用
虚拟机高可用一般是配置可用性集。可用性集是数据中心内的 VM 的逻辑分组,可让 Azure 了解应用程序的构建方式,以便提供冗余和可用性。 建议在可用性集内创建两个或多个 VM,提供高度可用的应用程序,并满足 99.95% Azure SLA 的要求。 可用性集本身是免费的,只需为创建的每个 VM 实例付费。 当单个 VM 使用 Azure 高级 SSD 时,有 99.9%的 SLA 要求。
容错域
容错域是共享公用电源和网络交换机的基础硬件逻辑组,类似于本地数据中心内的机架。 在可用性集内创建 VM 时,Azure 平台会将 VM 自动分布到这些容错域。 此方法可限制潜在物理硬件故障、网络中断或断电的影响。
更新域
更新域是可以同时维护或重新启动的基础硬件逻辑组。 在可用性集内创建 VM 时,Azure 平台会自动将 VM 分布到这些更新域。 Azure 平台进行定期维护时,此方法可确保至少有一个应用程序实例始终保持运行状态。 在计划内维护期间,更新域的重启顺序可能不会按序进行,但一次只重启一个更新域。
存储高可用
Azure 托管磁盘
- 本地冗余存储 (LRS)
- 在创建存储帐户时所在的区域复制数据三次。
基于存储帐户的磁盘
- 本地冗余存储 (LRS)
- 在创建存储帐户时所在的区域复制数据三次。
- 区域冗余存储 (ZRS)
- 在两到三个设施之间复制数据三次(在单个区域内或两个区域之间)。
- 异地冗余存储 (GRS)
- 将数据复制到距主要区域数百公里以外的次要区域。
- 读取访问异地冗余存储 (RA-GRS)
- 与 GRS 一样,可将数据复制到次要区域,但此外还提供对次要位置中数据的只读访问权限。
对于使用 Azure 托管磁盘的 VM,在使用托管可用性集时,VM 与托管磁盘容错域一致。 该一致性可确保附加到 VM 的所有托管磁盘都在同一托管磁盘容错域内。 在托管可用性集中,只能创建带托管磁盘的 VM。 托管磁盘容错域的数目因区域而异 - 每个区域两个或三个托管磁盘容错域。
实际操作
首先创建资源组
az group create --name myResourceGroupAvailability --location chinaeast
再创建可用性集
az vm availability-set create \
--resource-group myResourceGroupAvailability \
--name myAvailabilitySet \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
再在可用性集内创建VM
for i in `seq 1 2`; do
az vm create \
--resource-group myResourceGroupAvailability \
--name myVM$i \
--availability-set myAvailabilitySet \
--size Standard_DS1_v2 \
--vnet-name myVnet \
--subnet mySubnet \
--image UbuntuLTS \
--admin-username azureuser \
--generate-ssh-keys
done
-
configure monitoring, networking, storage, and virtual machine size
monitoring
可以通过portal上VM的“监视”选项卡,增加相应规则,通过这里可以查找所有相应监视纸指标。
通过CLI,建立一个cpu利用率大于90%的警报
az monitor metrics alert create -n {nameofthealert} -g {ResourceGroup} --scopes {VirtualMachineResourceID} --condition "avg Percentage CPU > 90" --description {descriptionofthealert}
创建网络
az network vnet create \
--resource-group myResourceGroup \
--name myVnet \
--address-prefix 192.168.0.0/16 \
--subnet-name mySubnet \
--subnet-prefix 192.168.1.0/24
创建公共IP地址
az network public-ip create \
--resource-group myResourceGroup \
--name myPublicIP \
--dns-name mypublicdns
创建网络安全组及规则
az network nsg create \
--resource-group myResourceGroup \
--name myNetworkSecurityGroup
az network nsg rule create \
--resource-group myResourceGroup \
--nsg-name myNetworkSecurityGroup \
--name myNetworkSecurityGroupRuleSSH \
--protocol tcp \
--priority 1000 \
--destination-port-range 22 \
--access allow
创建虚拟网卡
az network nic create \
--resource-group myResourceGroup \
--name myNic \
--vnet-name myVnet \
--subnet mySubnet \
--public-ip-address myPublicIP \
--network-security-group myNetworkSecurityGroup
存储
包含高级SSD,标准SSD和HDD,其中标准SSD比HDD有着更低的延迟和更稳定的性能,高级SSD则有着更好的性能和更高的IOPS等
az vm disk attach \
--resource-group myResourceGroupDisk \
--vm-name myVM \
--disk myDataDisk \
--size-gb 128 \
--sku Premium_LRS \
--new
VM size
-
deploy and configure scale sets
利用虚拟机规模集,可以部署和管理一组相同的、自动缩放的虚拟机。 可以手动缩放规模集中的 VM 数,也可以定义规则,以便根据资源使用情况(如 CPU 使用率、内存需求或网络流量)进行自动缩放。
代码
az vmss create \
--resource-group myResourceGroupScaleSet \
--name myScaleSet \
--image UbuntuLTS \
--upgrade-policy-mode automatic \
--admin-username azureuser \
--generate-ssh-keys
upgrade-policy-mode可以设置为 {Automatic, Manual, Rolling},完整参数可参考 https://docs.azure.cn/zh-cn/cli/vmss?view=azure-cli-latest#commands
可以在portal上设置缩放规则,同时VMSS也可以与数据磁盘结合使用
(4) Automate deployment of Virtual Machines (VMs)
-
Modify Azure Resource Manager template
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", #必须存在,描述模板语言版本的 JSON 架构文件所在的位置。
"contentVersion": "", #必须存在,模板的版本(例如 1.0.0.0)。 可为此元素提供任意值。 使用此值记录模板中的重要更改。 使用模板部署资源时,此值可用于确保使用正确的模板。
"apiProfile": "", #用作资源类型 API 版本集合的 API 版本。 使用此值可以避免为模板中的每个资源指定 API 版本。 如果你指定 API 配置文件版本但不指定资源类型的 API 版本,则资源管理器将使用配置文件中为该资源类型定义的 API 版本。
"parameters": { }, #执行部署以自定义资源部署时提供的值。
"variables": { }, #在模板中用作 JSON 片段以简化模板语言表达式的值。
"functions": [ ], #定义函数
"resources": [ ], #必须存在
"outputs": { } #部署后返回的值
}
总体为JSON语法,但是,可以使用表达式来扩展模板中可用的 JSON 值。 表达式分别以方括号 [
与 ]
开头和结尾。
-
configure location of new VMs
在 'resources'中定义位置信息
"location": "[resourceGroup().lication]"
-
configure VHD template
-
deploy from template
部署本地模板
New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
-TemplateFile c:\MyTemplates\azuredeploy.json
部署远程模板
New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
-TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-storage-account-create/azuredeploy.json
-
save a deployment as an Azure Resource Manager template
-
deploy Windows and Linux VMs
(5) Implement solutions that use virtual machines (VM)
-
provision VMs
-
create Azure Resource Manager templates
-
configure Azure Disk Encryption for VMs
包含加密密钥和关联的计算资源(例如存储和 VM 本身)的 Azure 密钥保管库必须位于同一区域。只允许镜像市场里的VM镜像磁盘加密,自定义镜像无。
加密 VM 的过程如下:
- 在 Azure 密钥保管库中创建加密密钥。
- 配置可用于加密磁盘的加密密钥。
- 为虚拟磁盘启用磁盘加密。
- 从 Azure Key Vault 请求所需的加密密钥。
- 使用提供的加密密钥加密虚拟磁盘。
代码实现
az provider register -n Microsoft.KeyVault
resourcegroup="myResourceGroup"
az group create --name $resourcegroup --location chinaeast
keyvault_name=myvaultname$RANDOM
az keyvault create \
--name $keyvault_name \
--resource-group $resourcegroup \
--location chinaeast \
--enabled-for-disk-encryption True
创建秘钥
az keyvault key create \
--vault-name $keyvault_name \
--name myKey \
--protection software
az vm create \
--resource-group $resourcegroup \
--name myVM \
--image UbuntuLTS \
--admin-username azureuser \
--generate-ssh-keys \
--data-disk-sizes-gb 10
获取加密ID和密码
az ad sp create-for-rbac --query [appId,password] -o tsv
az keyvault set-policy --name $keyvault_name `
--spn <sp_id> --key-permissions wrapKey `
--secret-permissions set
az vm encryption enable \
--resource-group $resourcegroup \
--name myVM \
--aad-client-id <sp_id> \
--aad-client-secret <sp_password> \
--disk-encryption-keyvault $keyvault_name \
--key-encryption-key myKey \
--volume-type all
(6) Create connectivity between virtual networks
-
create and configure VNET peering
-
create and configure VNET to VNET
-
verify virtual network connectivity
控制台使用ping,能ping通则成功连接
-
create virtual network gateway
(7) Implement and manage virtual networking
-
configure private and public IP addresses, network routes, network interface, subnets, and virtual network
(8) Manage Azure Active Directory (AD)
-
add custom domains
-
configure Azure AD Identity Protection, Azure AD Join, and Enterprise State Roaming
-
configure self-service password reset
-
implement conditional access policies
-
manage multiple directories
-
perform an access review
(9) Implement and manage hybrid identities
-
install and configure Azure AD Connect
-
configure federation and single sign-on
-
manage Azure AD Connect
-
manage password sync and writeback