这个方案结合了Nginx的负载均衡能力和NFS的文件共享功能,适用于需要高可用性、可扩展的文件服务场景。典型应用包括: - 多Web服务器共享静态内容 - 分布式应用的文件存储 - 需要高可用性的文件服务
服务端配置 (/etc/exports
示例):
/data 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
客户端挂载:
mount -t nfs nfs-server:/data /mnt/data
基础负载均衡配置 (nginx.conf
部分):
upstream backend {
server 192.168.1.101:80 weight=5;
server 192.168.1.102:80;
server 192.168.1.103:80 backup;
# 负载均衡算法
least_conn; # 最少连接算法
# ip_hash; # 或IP哈希算法
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 静态文件服务直接指向NFS挂载点
location /static/ {
alias /mnt/data/static/;
expires 30d;
}
}
async
选项提高写入性能(但降低数据安全性)rsize
和wsize
(通常8192或16384)upstream backend {
server 192.168.1.101:80 max_fails=3 fail_timeout=30s;
server 192.168.1.102:80 max_fails=3 fail_timeout=30s;
}
sticky cookie srv_id expires=1h domain=.example.com path=/;
NFS安全:
Nginx安全:
NFS监控:
nfsstat
- 查看NFS统计信息mountstats
- 监控挂载点性能Nginx监控:
常见问题1: NFS挂载缓慢
- 检查网络延迟
- 调整timeo
和retrans
参数
- 考虑使用TCP而非UDP(现代NFS默认使用TCP)
常见问题2: 负载不均衡 - 检查负载均衡算法是否适合应用场景 - 验证后端服务器健康状态 - 检查权重设置是否正确
对于更高要求的场景,可以考虑: 1. 使用DRBD+Heartbeat实现NFS高可用 2. 用GlusterFS替代NFS提供分布式文件系统 3. 在Nginx前添加L4负载均衡器(如HAProxy)