1.
准备与需求评估
先列出站群规模(站点数量、并发、峰值流量)和SLA。根据流量预估确定每节点带宽、CPU、内存、磁盘IO。划分公网IP、子网和防火墙规则。准备VPN或专线方案以便管理节点。
2.
网络与DNS设计
购买香港机房后设置负载均衡域名策略:A/AAAA记录或CNAME配合CDN。规划DNS解析TTL、备用解析线路。配置内网子网和安全组,开放必要端口(80/443、SSH、应用端口、数据库复制端口)。
3.
负载均衡部署
推荐使用反向代理或硬件/云负载均衡:Nginx/HAProxy/LVS或云厂商LB。步骤:安装->配置后端服务器池->设置健康检查(HTTP 200、响应时间)->开启会话保持(如需)。测试滚动添加/删除后端节点。
4.
会话与状态管理
强烈建议无状态化;如果不能,采用共享会话:Redis/ memcached作集中会话存储或使用JWT。配置应用使用统一Session存储,设置过期策略和高可用Redis哨兵或Cluster。
5.
共享存储与静态资源
不要在单机磁盘存放用户上传:使用对象存储(S3兼容)或NFS/SMB共享。步骤:搭建MinIO或使用云对象存储->应用修改上传路径->配置CDN加速静态资源->同步已存在文件。
6.
数据库扩展策略
先做主从/主备分离:部署一主多从,配置binlog复制,调整读写路由(读走从,写走主)。根据需要再做分库分表或Proxy层(如MySQL-Proxy、ProxySQL)。实施步骤:备份->初始化从库->测试故障切换->监控延迟。
7.
缓存与队列
引入Redis集群或分布式缓存,缓存热点数据并设置合理过期。异步任务用RabbitMQ或Kafka降低峰值压力。步骤:规划集群拓扑->容量与持久化策略->应用接入并实现缓存失效策略。
8.
自动化部署与灰度发布
使用CI/CD(Jenkins/GitLab CI)实现镜像化(Docker)和蓝绿/滚动发布。步骤:构建镜像->部署模板(Kubernetes或Docker Compose)->先灰度小流量->监控无异常再全量切换。
9.
监控、告警与容量预警
部署Prometheus+Grafana或云监控,监测QPS、响应时间、CPU、内存、磁盘IO、DB复制延迟、Redis命中率。配置告警策略并接入钉钉/邮件/短信,设置自动扩容触发条件(CPU>70%、响应延迟上升等)。
10.
备份与灾备流程
制定数据库定期备份(逻辑备份+物理备份)、对象存储异地复制、快照策略和恢复演练。步骤:编写恢复脚本->定期演练回滚->记录RTO/RPO指标并优化。
11.
安全与合规
开启WAF、DDoS防护、证书管理(Let's Encrypt或CA),SSH密钥管理、最小权限原则、日志审计。步骤:部署WAF规则->启用HTTPS强制->定期漏洞扫描并修补。
12.
性能测试与上线验证
在扩容后做压力测试(JMeter/Locust):先做基线测试,再做并发递增测试,观察瓶颈点。步骤:建立测试场景->逐步加压->记录指标->按需再扩容或优化代码/索引。
13.
常见问题:横向扩容后会话丢失如何解决?
问:横向扩容后,用户会话在不同节点间切换会丢失怎么办? 回答:应无状态化或统一会话存储(Redis/memcached或JWT)。若必须粘性会话,可启用LB的session sticky,但不推荐长期依赖。
14.
常见问题:如何实现数据库零停机扩容?
问:数据库扩容能否做到零停机? 回答:可以,通过异步复制拉从库、提升从库为主(或使用Proxy切换)并完成分片。务必先同步数据、测试切换脚本并做预案回滚。
15.
常见问题:扩容成本如何控制?
问:横向扩容会带来高成本,有没有优化建议? 回答:按需扩容+自动伸缩、使用预留/包年实例、合理使用CDN和缓存减少后端压力,以及通过监控找出资源浪费点并优化。
来源:规模扩展策略 香港站群服务器购买后横向扩容实施指南