第一章:MCP AZ-104 考试模拟题及解析
虚拟机规模集自动扩展配置
在 Azure 中,虚拟机规模集(VM Scale Sets)支持基于性能指标的自动扩展。以下是一个常见的考试场景:根据 CPU 使用率动态扩展实例数量。
{
"name": "autoscalehost",
"location": "eastus",
"properties": {
"profiles": [
{
"name": "Auto created scale condition",
"capacity": {
"minimum": "2",
"maximum": "10",
"default": "2"
},
"rules": [
{
"metricTrigger": {
"metricName": "Percentage CPU",
"operator": "GreaterThan",
"threshold": 75,
"timeGrainSeconds": 60,
"timeWindowSeconds": 300
},
"scaleAction": {
"direction": "Increase",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT5M"
}
}
]
}
],
"enabled": true
}
}
上述 JSON 定义了当 CPU 平均使用率超过 75% 持续 5 分钟时,增加 1 个实例,冷却时间为 5 分钟。此配置常用于应对突发负载。
常见考点分析
AZ-104 考试重点考察资源管理、虚拟网络、身份权限与备份恢复能力。以下是高频知识点归纳:
- Azure Resource Manager 模板部署与验证
- 网络安全组(NSG)规则优先级理解
- 用户分配托管身份在 VM 上的应用
- 使用 Azure Monitor 设置警报与指标
- 恢复服务保管库配置备份策略
典型选择题示例
| 问题 | 选项 | 正确答案 |
|---|
| 如何为现有 VM 启用系统分配托管身份? |
- 通过门户在 VM 的“身份”选项卡中设置
- 重新创建 VM 并勾选“启用托管身份”
- 运行 PowerShell 命令 Set-AzVm -IdentityType SystemAssigned
| 1 和 3 |
graph TD
A[开始] --> B{是否启用自动缩放?}
B -->|是| C[定义度量触发器]
B -->|否| D[保持静态实例数]
C --> E[设置扩容/缩容动作]
E --> F[保存并应用配置]
第二章:核心服务配置与管理实战
2.1 虚拟网络与子网划分设计原理与实操
在云计算环境中,虚拟网络(VPC)是实现资源隔离与安全通信的基础架构。通过合理规划IP地址空间,可有效支持多业务系统的部署。
子网划分的核心原则
子网划分需遵循最小化暴露面、最大化灵活性的原则。通常采用CIDR(无类别域间路由)进行地址分配,例如将
10.0.0.0/16划分为多个
/24子网,每个子网容纳256个IP地址。
子网划分示例表
| 子网名称 | CIDR块 | 用途 |
|---|
| subnet-web | 10.0.1.0/24 | 前端应用服务器 |
| subnet-db | 10.0.2.0/24 | 数据库实例 |
使用CLI创建VPC与子网
# 创建VPC
aws ec2 create-vpc --cidr-block 10.0.0.0/16
# 在VPC内创建子网
aws ec2 create-subnet --vpc-id vpc-xxxxxx --cidr-block 10.0.1.0/24 --availability-zone us-west-1a
上述命令首先创建一个包含16位掩码的VPC,随后在指定可用区中创建Web层子网。参数
--cidr-block定义了子网的IP范围,而
--availability-zone确保资源物理分布的高可用性。
2.2 Azure虚拟机部署策略与高可用性配置
在Azure中部署虚拟机时,合理的部署策略是保障业务连续性的基础。通过可用性集(Availability Set)和可用性区域(Availability Zone)可有效分散物理故障风险。
可用性集配置示例
az vm create \
--name myVM \
--resource-group myRG \
--image Ubuntu2204 \
--availability-set myAvSet \
--zone 1
该命令创建一台加入指定可用性集的虚拟机。可用性集确保虚拟机分布在多个容错域和更新域中,避免因主机维护或硬件故障导致整体服务中断。
高可用性架构对比
| 特性 | 可用性集 | 可用性区域 |
|---|
| 物理隔离级别 | 数据中心内 | 跨数据中心 |
| SLA承诺 | 99.95% | 99.99% |
2.3 存储账户类型选择与数据持久化实践
在构建高可用云原生应用时,存储账户的选择直接影响数据的持久性与访问性能。Azure 提供多种存储账户类型,如通用 v2、Blob 存储和高级性能账户,需根据 I/O 特征和访问频率进行匹配。
存储账户类型对比
| 类型 | 适用场景 | 冗余策略 | 访问层级 |
|---|
| Standard HDD | 备份归档 | LRS/GRS | 冷层 |
| Premium SSD | 高频读写 | LRS | 热层 |
持久化配置示例
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: azure-managed-disk
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
storageClassName: managed-premium
上述声明创建了一个基于 Azure 高级 SSD 的持久卷,适用于低延迟数据库场景。storageClassName 映射到云平台预定义的存储类,确保数据自动绑定至高性能磁盘。
2.4 Azure备份与恢复方案深度解析
Azure Backup 提供企业级数据保护,支持虚拟机、文件系统、数据库等多层级资源的持续备份。其核心组件包括恢复服务保管库、备份策略与保留周期。
备份策略配置示例
{
"properties": {
"backupManagementType": "AzureIaasVM",
"workloadType": "VM",
"schedulePolicy": {
"scheduleRunFrequency": "Daily",
"scheduleRunTimes": ["2023-01-01T02:00:00Z"]
},
"retentionPolicy": {
"dailySchedule": {
"retentionDuration": { "count": 30, "durationType": "Days" }
}
}
}
}
上述JSON定义了每日凌晨2点执行备份,保留30天。backupManagementType指定管理类型,workloadType标识保护对象为虚拟机。
关键优势对比
| 特性 | Azure Backup | 传统本地备份 |
|---|
| 可扩展性 | 自动弹性扩展 | 受限于硬件 |
| RPO/RTO | 分钟级 | 小时级 |
2.5 网络安全组与Azure防火墙协同防护实战
在复杂云网络架构中,网络安全组(NSG)与Azure防火墙的协同使用可实现分层防御。NSG部署于子网或网卡层级,提供基于IP、端口和协议的快速流量过滤。
协同工作模式
NSG作为第一道防线,拦截明显恶意流量;Azure防火墙则位于核心出口,执行FQDN过滤、威胁情报检测等高级策略。
配置示例
{
"nsgRule": {
"priority": 100,
"access": "Allow",
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRange": "80,443"
}
}
该规则允许HTTP/HTTPS流量进入Web子网,由NSG初步放行后,交由Azure防火墙进行深度内容检查。
| 组件 | 作用层级 | 主要功能 |
|---|
| NSG | 子网/实例 | 基础五元组过滤 |
| Azure防火墙 | 虚拟网络边界 | FQDN过滤、IDPS、威胁情报 |
第三章:身份与访问管理综合应用
2.1 基于RBAC的权限分配最佳实践
在现代系统架构中,基于角色的访问控制(RBAC)是实现权限管理的核心模式。通过将权限与角色绑定,再将角色分配给用户,可有效降低权限配置的复杂性。
角色设计原则
应遵循最小权限原则和职责分离原则,避免角色膨胀。常见角色包括:
- 管理员:拥有系统全部操作权限
- 编辑者:可修改内容但不可配置系统
- 查看者:仅具备数据读取权限
权限模型示例
type Role struct {
ID string `json:"id"`
Name string `json:"name"`
Permissions []string `json:"permissions"` // 权限码列表
}
该结构体定义了角色的基本属性,
Permissions字段存储如
user:read、
post:write等权限标识,便于进行细粒度控制。
权限映射表
| 角色 | 用户管理 | 日志查看 | 系统配置 |
|---|
| 管理员 | ✔️ | ✔️ | ✔️ |
| 运维员 | ❌ | ✔️ | ❌ |
| 访客 | ❌ | ❌ | ❌ |
2.2 Azure AD用户与组管理场景模拟
在企业IT环境中,Azure AD的用户与组管理常用于实现精细化权限控制。通过自动化脚本可批量创建用户并分配至相应安全组。
用户批量创建与分组分配
# 创建新用户并加入指定组
New-AzureADUser -DisplayName "Alice Chen" -MailNickName "alice.chen" `
-UserPrincipalName "alice.chen@contoso.com" `
-AccountEnabled $true -PasswordProfile $passwordProfile
Add-AzureADGroupMember -ObjectId "GROUP-ID-SECURITY" `
-RefObjectId "USER-OBJECT-ID-alice"
该PowerShell脚本首先调用
New-AzureADUser创建标准用户账户,关键参数包括
UserPrincipalName和密码配置;随后使用
Add-AzureADGroupMember将其加入预定义的安全组,实现基于角色的访问控制(RBAC)。
典型应用场景
- 新员工入职自动开通资源访问权限
- 项目团队动态调整成员归属
- 合规审计中的权限定期清理
2.3 多因素认证与条件访问策略实施
在现代身份安全架构中,多因素认证(MFA)是防止未授权访问的核心防线。通过结合密码、设备令牌和生物特征等多种验证方式,显著提升账户安全性。
条件访问策略配置示例
{
"displayName": "Require MFA from Untrusted Locations",
"conditions": {
"signInRisk": "medium",
"location": {
"includeLocations": ["allTrusted"],
"excludeLocations": ["allTrusted"]
}
},
"grantControls": {
"operator": "OR",
"builtInControls": ["mfa"]
}
}
该策略逻辑表示:当用户登录风险为“中等”或来自非可信位置时,强制要求多因素认证。其中,
signInRisk依赖于AI驱动的风险评估引擎,
location基于IP地理定位与企业定义的可信范围进行匹配。
策略执行流程
用户请求 → 身份验证 → 风险评估 → 条件判断 → MFA挑战 → 访问授予/拒绝
通过动态策略控制,系统可在不同风险场景下自动调整认证强度,实现安全与用户体验的平衡。
第四章:监控、治理与自动化运维
4.1 使用Azure Monitor实现资源健康监控
Azure Monitor 是 Azure 平台中用于收集、分析和响应资源运行状况的核心服务。通过统一采集日志与指标,可实现对虚拟机、应用服务等资源的实时监控。
核心组件构成
- Metrics:高频采集的数值型性能数据,如 CPU 使用率
- Logs:结构化日志数据,支持 Kusto 查询语言分析
- Alerts:基于规则触发通知或自动修复动作
配置监控告警示例
{
"criteria": {
"allOf": [
{
"metricName": "Percentage CPU",
"threshold": 80,
"timeAggregation": "Average",
"windowSize": "PT5M"
}
]
},
"action": ["Send email notification"]
}
该规则表示:在过去5分钟内,若 CPU 平均使用率超过80%,则触发告警。其中
windowSize 定义时间窗口,
timeAggregation 指定聚合方式,确保判断精准。
可视化监控面板
通过 Azure Dashboard 集成图表控件,可构建专属资源健康视图,提升运维效率。
4.2 Azure Policy合规性控制与治理落地
Azure Policy 是实现云环境治理和合规性控制的核心服务,通过定义策略规则,强制实施组织标准,确保资源始终符合安全与架构规范。
策略定义与分配
策略可在管理组、订阅或资源组级别分配,支持继承与覆盖机制。常用内置策略包括“仅允许特定区域”或“必须启用加密”。
{
"if": {
"field": "location",
"notIn": ["eastus", "westeurope"]
},
"then": {
"effect": "deny"
}
}
该策略拒绝在非指定区域创建资源,
field 指定评估属性,
effect 定义违规处理方式。
合规性报告与持续监控
Azure Policy 自动生成合规性报告,标识违规资源,并集成 Log Analytics 实现告警。通过策略扫描频率(通常每小时)保障持续合规。
- 使用“审计”效应记录不合规资源
- “修正”任务可批量修复现有资源
- 策略集(Initiative)简化多策略管理
4.3 自动化Runbook编写与调度实战
Runbook结构设计
自动化Runbook应具备清晰的输入参数、错误处理和日志输出机制。以PowerShell为例,标准结构如下:
param(
[string]$ResourceGroup = "default-rg"
)
try {
Write-Output "开始资源组清理: $ResourceGroup"
Remove-AzResourceGroup -Name $ResourceGroup -Force
} catch {
Write-Error "执行失败: $_"
}
该脚本定义可配置参数,通过try-catch捕获异常,确保执行过程可观测。
调度策略配置
使用Azure Automation或Ansible Tower可实现定时触发。常见调度方式包括:
- Cron表达式:精确控制执行时间点
- 事件驱动:响应监控告警自动触发
- 周期性轮询:每5分钟检查一次任务队列
结合实际业务SLA选择合适策略,提升运维响应效率。
4.4 成本管理与资源标签策略优化
在云环境中,精细化成本控制依赖于有效的资源标签(Tagging)策略。通过为资源添加语义化标签,如环境类型、项目归属和负责人信息,可实现成本分摊与使用分析。
标签命名规范示例
- env: prod、staging、dev
- project: user-management
- owner: team-alpha
自动化标签校验代码
# 校验EC2实例是否包含必要标签
import boto3
ec2 = boto3.resource('ec2')
for instance in ec2.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running']}]):
tags = {t['Key']: t['Value'] for t in (instance.tags or [])}
required = {'env', 'project', 'owner'}
if not required.issubset(tags.keys()):
print(f"实例 {instance.id} 缺失必要标签:{required - tags.keys()}")
该脚本定期扫描运行中的EC2实例,检查关键标签完整性,便于及时修复或告警,提升成本追踪准确性。
第五章:总结与展望
技术演进的持续驱动
现代软件架构正快速向云原生与边缘计算融合,Kubernetes 已成为容器编排的事实标准。在实际生产环境中,通过自定义 Operator 可实现对有状态服务的精细化控制。
// 示例:Kubernetes Operator 中的 Reconcile 逻辑片段
func (r *MyAppReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
var app myappv1.MyApp
if err := r.Get(ctx, req.NamespacedName, &app); err != nil {
return ctrl.Result{}, client.IgnoreNotFound(err)
}
// 确保 Deployment 副本数与自定义资源定义一致
desiredReplicas := app.Spec.Replicas
if err := r.ensureDeployment(ctx, &app, desiredReplicas); err != nil {
r.Log.Error(err, "无法同步 Deployment")
return ctrl.Result{Requeue: true}, nil
}
return ctrl.Result{RequeueAfter: 30 * time.Second}, nil
}
可观测性体系构建
在微服务架构中,分布式追踪、指标监控与日志聚合缺一不可。以下为某金融系统采用的技术组合:
| 组件类型 | 技术选型 | 用途说明 |
|---|
| 日志收集 | Fluent Bit + Loki | 轻量级日志采集,高效结构化查询 |
| 链路追踪 | OpenTelemetry + Jaeger | 跨服务调用链分析,定位延迟瓶颈 |
| 指标监控 | Prometheus + Alertmanager | 实时性能监控与告警触发 |
- 实施灰度发布时,结合 Istio 的流量镜像功能可降低上线风险
- 使用 eBPF 技术进行内核级性能剖析,在高并发场景下显著提升问题定位效率
- 基于 GitOps 模式管理集群配置,确保环境一致性与审计追溯能力