WordPress多服务器共享存储怎么做?NAS实战部署教程
小李运营着一个日访问量10万+的WordPress博客,随着流量增长,单台服务器已经扛不住了。他想用负载均衡+多台ECS来分摊压力,但遇到一个棘手问题:WordPress的上传图片存在本地磁盘,多台服务器之间无法共享,用户上传的图片只保存在其中一台机器上,访问其他机器时图片就404了。本文通过小李的实战案例,手把手教你用阿里云NAS文件存储解决多服务器共享问题,实现真正的弹性扩展。
问题场景:多服务器图片不同步
小李的WordPress架构是这样的:前端用SLB负载均衡,后端挂了3台ECS跑WordPress应用。看起来很完美,但实际使用时发现:
- 用户A通过SLB访问到ECS1,上传了一张图片,保存在ECS1的uploads目录
- 用户B通过SLB访问到ECS2,打开文章时图片返回404,因为ECS2本地没有这个文件
- 3台服务器各自维护自己的uploads目录,图片分散在不同机器上,无法互相访问
小李试过用rsync定时同步,但延迟大、效率低,而且一旦某台服务器挂了,同步链路就断了。他需要一个所有服务器实时共享的文件系统,这就是NAS的用武之地。
解决方案:NAS共享文件系统架构
用NAS替代本地磁盘,让所有ECS挂载同一个NAS目录,实现文件实时共享。
用户通过SLB访问任意一台ECS,上传的图片写入NAS共享目录。其他ECS因为挂载了同一个NAS,立即就能看到新文件,无需同步延迟。就像多台电脑访问同一个网络硬盘,天然支持多点读写。
实战步骤1:创建NAS文件系统
- 登录阿里云控制台:搜索文件存储NAS,进入NAS管理页面
- 创建文件系统:
- 地域:选择和ECS相同的地域(比如华东1杭州)
- 存储类型:选通用型NAS(性能型适合高IOPS场景,价格贵3倍)
- 协议类型:选NFS(Linux推荐,SMB适合Windows)
- 网络类型:专有网络VPC
- VPC:选择ECS所在的VPC
- 交换机:选择和ECS相同的可用区
- 设置权限组:
- 新建权限组,授权地址填写ECS的内网网段
- 读写权限选择读写
- 用户权限选择不压缩全部用户(保持WordPress文件权限)
- 获取挂载点:创建完成后,在文件系统详情页看到挂载点地址
- 文件系统: 通用型NAS,NFS协议
- 容量: 按量付费(用多少扣多少,WordPress媒体库预估50GB)
- 月成本: 50GB × 0.35元/GB = 17.5元
实战步骤2:ECS挂载NAS
在3台ECS上分别执行挂载操作,让它们共享同一个NAS目录。
- 安装NFS客户端(3台ECS都要执行):CentOS用yum安装nfs-utils,Ubuntu用apt安装nfs-common
- 创建挂载目录:创建目录用于挂载NAS
- 挂载NAS:使用mount命令挂载NAS到指定目录,参数包括vers=3和noresvport
- 验证挂载:用df命令检查NAS是否挂载成功
- 设置开机自动挂载:编辑fstab文件,避免重启后失效
第一次挂载时忘了加noresvport参数,导致WordPress上传大文件时报错。NFS默认使用特权端口,加上这个参数后就正常了。还有,挂载前确保ECS安全组允许NFS端口2049。
实战步骤3:迁移WordPress上传目录
把现有的uploads目录内容迁移到NAS,然后软链接过去。
- 停止WordPress写入:暂时停止Web服务,避免迁移过程中有新文件上传
- 复制现有上传文件到NAS:使用rsync命令同步现有文件到NAS
- 备份原目录并创建软链接:重命名原uploads目录作为备份,创建软链接指向NAS
- 修改权限:设置NAS目录的所有者为Web服务器用户
- 重启Web服务:启动Web服务开始使用
登录WordPress后台,上传一张测试图片。然后SSH到另外2台ECS,检查是否能看到刚上传的文件,如果能看到,说明共享成功。
性能优化和监控
小李上线后发现NAS性能比本地磁盘慢一些,做了这些优化。
| 优化项 | 具体操作 | 效果 |
|---|---|---|
| 开启NFS缓存 | 挂载时加参数rsize和wsize | 大文件读写速度提升40% |
| CDN加速 | WordPress插件配置CDN回源到NAS | 用户访问图片走CDN,不占NAS带宽 |
| 缩略图插件 | 安装EWWW Image Optimizer压缩图片 | 减少存储空间和传输流量 |
| NAS容量监控 | 在云监控中设置容量报警(超过80%告警) | 避免突然满盘 |
- NAS存储: 50GB × 0.35元/GB/月 = 17.5元/月
- NAS流量: 开启CDN后几乎为0
- 总成本: 比用OSS+同步工具省心,比本地磁盘+rsync可靠
常见问题
NAS和OSS该选哪个?
NAS适合需要文件系统接口的场景(像本地磁盘一样读写),比如WordPress、共享开发环境。OSS适合对象存储场景(通过API上传下载),比如APP的图片、视频存储。WordPress用NAS更方便,不需要改代码。
多台ECS同时写入NAS会冲突吗?
NFS支持多客户端并发读写,有文件锁机制。但WordPress本身不支持多进程同时写同一个文件,实际使用中不会冲突。如果是自己开发的应用,注意做好文件锁控制。
NAS挂载失败怎么排查?
检查4点:1)ECS和NAS在同一个VPC;2)ECS安全组开放2049端口;3)NAS权限组授权了ECS的IP段;4)挂载命令参数正确(特别是vers=3)。
NAS性能够用吗?
通用型NAS读写速度约150MB/s,对于WordPress这种静态文件存储完全够用。如果是数据库或高频日志场景,建议用性能型NAS或直接用EBS云盘。
总结
通过小李的实战案例,我们看到用NAS解决WordPress多服务器共享存储非常简单:创建NAS文件系统→ECS挂载→迁移uploads目录→设置权限,前后不到30分钟就能搞定。关键优势是实时共享、无需同步,所有服务器看到的都是同一份数据。成本也不高,50GB媒体库每月只需17.5元,比自己搭建NFS服务器省心多了。如果你也在用负载均衡+多台服务器跑WordPress,现在就去控制台创建NAS,彻底解决图片404问题。