Samba 共享解决方案:微服务多机共享 `/app` 目录
Samba 共享解决方案:微服务多机共享 /app
目录
背景需求
- 技术栈:Java SpringCloud + Nacos 微服务架构
- 部署变更:从单机开发环境迁移至四台生产服务器
- 核心问题:多服务器需同时读写
/app
目录 - 选型原因:分布式存储改造时间不足,采用 Samba 作为临时共享方案
服务端配置(Ubuntu)
1. 安装 Samba 服务
sudo apt update && sudo apt install samba samba-common-bin -y
2. 配置共享目录
创建目录并设置权限
sudo mkdir -p /app/share # 推荐使用系统级目录
sudo chmod -R 1777 /appa/share # 开放读写权限
编辑 Samba 配置 (/etc/samba/smb.conf)
[SharedApp]
comment = App Samba Share # 描述
path = /app/share
browseable = yes
writable = yes
read only = no
guest ok = no
force create mode = 0775
force directory mode = 0775
- 参数说明:
- SharedApp 是url后的名字对应
- comment 描述
- path 物理路径
- browseable 是否可见
- writable 可写
- read only 是否 禁用
- guest ok 是否禁止匿名访问
- force create mode 文件默认权限
- force directory mode 目录默认权限
3. 用户与权限管理
# 创建系统用户
sudo adduser smbuser# 设置Samba专用密码(与系统密码隔离)
sudo smbpasswd -a smbuser# 修改目录属主
sudo chown -R smbuser:smbuser /app/share
4. 防火墙与服务重启
sudo ufw allow samba # 放行139/445端口
sudo systemctl restart smbd
sudo testparm # 验证配置语法
客户端挂载(其他服务器)
1. 安装依赖工具
sudo apt install cifs-utils -y
2. 挂载共享目录
sudo mount -t cifs //smb服务器ip/SharedApp /app/share -o username=smbuser,password=emacs,vers=3.0
注意事项:
- 生产环境建议使用密钥文件替代明文密码
- 如需开机自动挂载,需将配置写入 /etc/fstab
- 确保所有客户端服务器的 /app/share 目录存在
方案优缺点
优点 | 缺点 |
---|---|
快速实现多机共享 | 单点故障风险 |
无需改造现有代码 | 网络延迟影响IO性能 |
权限管理灵活 | 不适合海量小文件场景 |
建议后续迁移至 MinIO 或 NFS 等分布式存储方案