步骤1:在Azure门户或使用az CLI登录:az login。
步骤2:选择香港区域(eastasia),创建资源组:az group create -n rg-hk -l eastasia。
步骤3:规划VNet/Subnet、NSG,建议独立Subnet用于负载层和应用层,确保子网CIDR足够大(例如10.0.0.0/16)。
建议使用VM Scale Set便于横向扩展:示例命令:
az vmss create -g rg-hk -n vmss-app --image UbuntuLTS --vm-sku Standard_D4s_v3 --instance-count 2 --admin-username azureuser --generate-ssh-keys --location eastasia --upgrade-policy-mode automatic
说明:VMSS自动绑定到负载均衡器,并且支持自动扩缩容与自定义扩展脚本。
方案:对外使用Application Gateway v2(支持WAF、Cookie亲和),或Front Door做全局加速;区域内用Standard Load Balancer做四层负载。
示例创建Application Gateway:
az network application-gateway create -g rg-hk -n appgw --capacity 2 --sku Standard_v2 --vnet-name vnet1 --subnet appgw-subnet --public-ip-address appgw-ip --location eastasia
配置健康探针路径为/healthz并设置间隔5s、失败阈值2。
若应用为微服务,优先使用AKS,可配合Horizontal Pod Autoscaler(HPA):
az aks create -g rg-hk -n aks-hk --node-count 3 --node-vm-size Standard_D4s_v3 --location eastasia --enable-addons monitoring --generate-ssh-keys --enable-cluster-autoscaler --min-count 3 --max-count 10
在Kubernetes中使用HPA:kubectl autoscale deployment myapp --cpu-percent=60 --min=3 --max=15。
高并发下必须将会话从实例内存分离:
推荐使用Azure Cache for Redis:az redis create -g rg-hk -n redis-hk --sku Premium --vm-size c1 --location eastasia --shard-count 2
在应用中配置Redis连接字符串,统一存储会话和短时数据,避免粘滞会话带来的扩展瓶颈。
推荐方案:业务数据采用分库分表或使用CosmosDB/SQL Hyperscale。
如果使用Azure SQL,启用读副本或elastic pools;若是高并发写多读少,设计分区键并在应用侧做路由。对热点数据使用Redis或缓存层做缓冲。
VMSS示例自动伸缩:先创建autoscale规则:
az monitor autoscale create -g rg-hk -n autoscale-vmss --target "/subscriptions//resourceGroups/rg-hk/providers/Microsoft.Compute/virtualMachineScaleSets/vmss-app" --min-count 2 --max-count 10 --count 2
再添加规则(按CPU):
az monitor autoscale rule create -g rg-hk --autoscale-name autoscale-vmss --condition "Percentage CPU > 70 avg 00:05:00" --scale to 4 --scale out true --metric-source "Microsoft.Compute/virtualMachineScaleSets"
配置探针路径(/healthz 或 /ready),探针响应应尽量快速且仅返回服务可用状态。
部署时使用滚动升级(VMSS或AKS),并设置最小保留实例数,避免因扩容延迟导致流量打满单机。
使用k6、wrk或Azure Load Testing做阶梯式压测:
示例k6脚本基础场景并逐步提高并发,观察CPU、内存、响应时间、错误率,记录开始扩容时间与实例数变化。
根据95/99百分位延迟设定SLO并据此调整扩容阈值与冷启动策略(预热镜像、延迟调度)。
开启NSG最小放开端口、使用WAF和DDoS标准保护(必要时)。
成本控制:评估Reserved VM Instances或Azure Savings Plan、使用Spot实例做非关键批处理、监控使用率并设置预算告警。
启用Application Insights、Log Analytics与Azure Monitor:
采集端到端事务追踪、错误率、依赖调用和自定义指标(如QPS、队列长度)。
为自动伸缩准备告警和Runbook(自动化脚本),例如当扩容失败通知SRE并触发manual failover脚本。
问:香港区域部署与新加坡有什么差别,选择时应注意什么?
答:差别主要在延迟和合规。eastasia(香港)对香港/珠三角用户延迟更低;southeastasia(新加坡)在东南亚覆盖更好。选择时看用户分布、合规/数据主权与可用服务(某些服务在部分区可能延后上线)。
问:容器化AKS和VMSS哪个更适合高并发场景?
答:若系统已微服务化、需要快速扩缩和更细粒度资源控制优先选择AKS(结合HPA和Cluster Autoscaler)。若应用为传统单体且改造成本高,VMSS更容易迁移且能快速利用现有镜像和部署逻辑。
问:扩容后如何保证新实例不会被短时间内打满流量导致失败?
答:采用灰度/滚动发布、预热策略和负载均衡探针。新实例上线后通过健康探针判断是否接流,并使用应用层限流(如漏桶/令牌桶)与退避重试,确保流量渐进切换,避免突增拥塞。