Ubuntu 应用在 Azure 上的部署与排错
完成 Azure 版之后,你应该看到一件事:不同云只是产品名称不同,运维方法论是一致的。排障顺序:DNS → 网络规则 → 实例 → Nginx → 应用 → 日志。
Azure 排障链路
graph TD
A[Azure DNS 解析] --> B[NSG 入站规则]
B --> C[VM 实例]
C --> D[Nginx 反向代理]
D --> E[应用进程]
E --> F[Log Analytics / Azure Monitor]
三家云平台统一排障对照
| 检查点 | AWS | GCP | Azure |
|---|---|---|---|
| DNS 解析 | Route 53 NS | Cloud DNS NS | Azure DNS NS |
| 网络规则 | Security Group | VPC Firewall(标签) | NSG(子网或 NIC) |
| 虚拟机 | EC2 | Compute Engine | Virtual Machine |
| 日志工具 | CloudWatch Logs | Cloud Logging | Log Analytics |
| 告警 | CloudWatch Alarm | Alerting Policy | Alert Rule + Action Group |
Azure 特有排查命令
# 查看 NSG 规则(确认 80/443 开放,22 限制来源)
az network nsg rule list \
--resource-group myapp-rg \
--nsg-name myapp-vmNSG \
--output table
# 实时查看 VM 串口日志(适合启动失败时排查)
az vm boot-diagnostics get-boot-log \
--resource-group myapp-rg \
--name myapp-vm
# 在 Log Analytics 查询应用日志(KQL 查询语言)
# 进入 Azure Portal → Log Analytics Workspace → Logs,执行:
# Syslog | where ProcessName == "nginx" | order by TimeGenerated desc | take 50
# SSH 连不上时用 Azure Bastion(无需公网 IP)
az network bastion ssh \
--name myapp-bastion \
--resource-group myapp-rg \
--target-resource-id /subscriptions/.../virtualMachines/myapp-vm \
--auth-type ssh-key \
--username ubuntu \
--ssh-key ~/.ssh/id_rsa
常见故障与处理
| 现象 | Azure 原因 | 处理方法 |
|---|---|---|
| VM 无法启动 | 磁盘配额不足或镜像问题 | 查串口日志 boot-diagnostics |
| 域名超时 | Azure DNS NS 未在注册商更新 | nslookup myapp.com 8.8.8.8 |
| 502 Bad Gateway | NSG 阻断应用端口或 Nginx 配置错误 | curl http://127.0.0.1:3000/health |
| Public IP 访问不通 | NSG 规则未开放 80/443 | az network nsg rule list 核查 |
常见误区
- 以为 Managed Identity 自动有所有权限:Managed Identity 只是一个身份,需要在目标资源(如 Storage Account)上明确赋予 RBAC 角色
- Log Analytics 查询使用 SQL 语法:Azure 日志查询使用 KQL(Kusto Query Language),语法与 SQL 不同,
where写在from后面 - Azure 告警邮件总是没收到:Action Group 邮件通知默认有速率限制,短时间内多条告警会合并,检查 Notification 设置
本节执行清单
- [ ] 走一遍完整部署流程(拉代码 → 重启服务 → 健康检查)
- [ ] 验证三层链路:域名 → NSG → Nginx → 应用
- [ ] 在 Log Analytics 执行一次 KQL 查询,确认日志有数据
- [ ] 对比三家云平台的排障顺序,记录自己最熟悉的一家和原因
学完下一本:DNS 与站点技术运营指南——继续深入公开服务入口层;或者读 LLM 生产实践指南 把这些能力迁移到 AI 系统。