WordPress多台服务器负载均衡,文件同步用NAS完美解决
去年双11,我负责的WordPress电商站流量突然暴增5倍,单台服务器CPU拉满,网站访问慢到几乎打不开。紧急加了一台服务器做负载均衡,结果发现用户上传的图片只在一台服务器上,另一台服务器访问就404。最后用阿里云NAS共享存储解决了这个难题,现在流量再翻倍也不慌了。
遇到的问题:负载均衡后文件不同步
当时的场景是这样的:
- 原本单台2核4G云服务器,跑WordPress+MySQL,日常流量3000PV/天没问题
- 双11活动期间流量暴增到1.5万PV/天,服务器CPU持续90%以上,页面加载要10秒+
- 紧急购买第二台服务器,配置SLB负载均衡,把流量分摊到两台机器
负载均衡上线后,流量分流效果明显,CPU降到50%左右。但很快客服反馈:用户上传的商品图片经常显示不出来。
WordPress的 wp-content/uploads 目录存储用户上传的图片。用户请求打到服务器A,图片上传到A的本地磁盘;下次请求打到服务器B,B的本地磁盘里没有这张图片,就返回404。
当时考虑过三个方案:
| 方案 | 实现方式 | 问题 |
|---|---|---|
| 方案1:定时同步脚本 | 服务器A定时同步到服务器B | 延迟高(几分钟一次),单点故障风险 |
| 方案2:上传到OSS | 插件自动上传到对象存储 | 改造成本高,历史图片迁移麻烦 |
| 方案3:NAS共享存储 | 两台服务器挂载同一个NAS目录 | 实时同步,无需改代码 |
最终选择了NAS方案,原因是改造成本最低,且文件实时同步,不用担心延迟。
解决方案:NAS共享存储部署步骤
- 购买NAS文件系统:阿里云控制台进入文件存储NAS,创建文件系统
- 存储类型:通用型NAS(适合中小流量)
- 协议类型:NFS(Linux服务器用NFS,Windows用SMB)
- 地域:必须与ECS在同一地域
- 创建挂载点:文件系统详情页添加挂载点
- 网络类型:专有网络VPC
- VPC和交换机:选择与ECS相同的VPC
- 权限组:默认权限组(允许所有IP读写)
- 两台服务器分别挂载NAS:安装nfs-utils客户端工具,创建本地挂载目录,执行mount命令连接到NAS的挂载地址,协议版本选NFSv3
- 迁移WordPress上传目录:在服务器A上把原有uploads目录的文件同步复制到NAS挂载目录下,确认文件完整后,把本地uploads目录改名备份,再创建一个指向NAS挂载路径的软链接,命名为uploads
- 服务器B做同样的软链接:删除服务器B本地的uploads目录,创建指向同一个NAS挂载路径的软链接
- 设置开机自动挂载:在两台服务器的系统挂载配置文件中添加NAS挂载信息,确保重启后自动挂载不丢失
整个流程从购买NAS到两台服务器配置完成,实际耗时约30分钟,其中大部分时间是迁移历史文件(我们有15GB图片)。
效果验证:问题彻底解决
部署完成后,我们做了几项测试验证效果:
测试1:文件同步实时性
在WordPress后台上传一张图片,立即访问页面,无论请求打到服务器A还是B,图片都能正常显示。查看两台服务器的挂载目录,文件列表完全一致。
测试2:性能影响
上传图片的速度几乎没有变化(NAS在同VPC内,网络延迟1ms以内)。页面加载速度从原来的10秒降到2秒左右,主要是负载均衡分流的效果。
测试3:扩展性
双12活动又加了第三台服务器,只需要重复挂载NAS和创建软链接,10分钟搞定,不需要迁移任何文件。
- 改造前: 单机2核4G,流量1.5万PV卡顿
- 改造后: 2台2核4G加SLB加NAS,流量3万PV稳定
- 成本增加: 服务器和SLB约200元/月,NAS约30元/月
- 收益: 流量容量翻倍,横向扩展能力获得
成本分析和优化建议
很多人担心NAS会增加不少成本,实际算下来并不高:
| 费用项 | 规格 | 月费用 |
|---|---|---|
| NAS存储容量 | 100GB | 9元 |
| NAS吞吐量 | 按需计费 | 约20元 |
| 合计 | - | 约30元 |
相比OSS方案(存储9元/月加流量费约50元/月),NAS在多服务器文件共享场景下反而更省钱,因为服务器之间通过内网访问NAS不产生流量费。
省钱建议:
- 如果文件总量小于1TB,选择通用型NAS即可,按需付费
- 文件量稳定后,可以购买存储包(100GB存储包96元/年),比按量付费便宜约10%
- 只把需要共享的目录(uploads、插件上传的附件)放NAS,WordPress核心代码放本地磁盘,降低NAS吞吐费用
- 权限问题:挂载NAS后,确保Web服务器进程有读写权限,否则上传会失败
- 单点故障:虽然NAS本身是高可用的,但挂载点故障会影响所有服务器。生产环境建议配置多个挂载点
- 性能瓶颈:通用型NAS吞吐上限150MB/s,极高并发场景可能不够,需要升级到性能型NAS
常见问题
总结
WordPress多服务器负载均衡,文件同步是绕不开的问题。NAS共享存储方案改造成本低、实时同步、横向扩展容易,月成本只要30元左右,非常适合流量增长期的中小站点。我们从单机扛不住到3台服务器集群,整个架构升级只花了半天时间,现在流量再翻倍也不慌了。如果你也遇到类似问题,强烈推荐试试NAS方案。