在企业或团队环境中,稳定、高效的文件共享服务至关重要。本文将详细讲解如何在 Ubuntu 系统上部署一个高可用的 Ubuntu文件共享集群,使用 Samba 实现跨平台文件共享,并通过 Keepalived + NFS 实现主备高可用架构。即使你是 Linux 新手,也能轻松跟着本教程完成部署。
一、环境准备
我们需要两台 Ubuntu 22.04 LTS 服务器(也可以是虚拟机),分别作为主节点(node1)和备节点(node2):
node1:IP 192.168.1.101 node2:IP 192.168.1.102 虚拟IP(VIP):192.168.1.100(用于客户端访问)确保两台服务器网络互通,并已安装 openssh-server 以便远程管理。
二、部署共享存储(NFS)
为了实现数据同步,我们使用 NFS 共享存储。你也可以使用 GlusterFS 或 Ceph,但本教程以简单易用的 NFS 为例。
在 node1 上安装并配置 NFS 服务:
sudo apt updatesudo apt install -y nfs-kernel-serversudo mkdir -p /shared/datasudo chmod 777 /shared/dataecho "/shared/data 192.168.1.0/24(rw,sync,no_subtree_check)" | sudo tee -a /etc/exportssudo exportfs -asudo systemctl restart nfs-kernel-server
在 node2 上挂载 NFS 共享目录:
sudo apt install -y nfs-commonsudo mkdir -p /shared/datasudo mount 192.168.1.101:/shared/data /shared/data# 开机自动挂载echo "192.168.1.101:/shared/data /shared/data nfs defaults 0 0" | sudo tee -a /etc/fstab
三、安装并配置 Samba 文件共享服务
Samba 是 Linux 下实现 Windows 兼容文件共享的核心工具。我们在两台节点上都安装 Samba。
sudo apt install -y samba
编辑 Samba 配置文件(两台节点配置相同):
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.baksudo tee /etc/samba/smb.conf <<EOF[global] workgroup = WORKGROUP server string = Samba Server %v netbios name = ubuntu-samba security = user map to guest = bad user dns proxy = no[shared] path = /shared/data browsable = yes writable = yes guest ok = yes read only = no create mask = 0777 directory mask = 0777EOFsudo systemctl restart smbd nmbdsudo systemctl enable smbd nmbd
此时,任意一台服务器单独运行时,都能通过 IP 访问共享文件夹。但我们要的是高可用文件服务器,所以继续下一步。
四、配置 Keepalived 实现高可用
Keepalived 可以在主节点故障时,自动将虚拟 IP(VIP)漂移到备节点,实现无缝切换。
在两台服务器上安装 Keepalived:
sudo apt install -y keepalived
配置 node1(主节点):
sudo tee /etc/keepalived/keepalived.conf <<EOFvrrp_script chk_samba { script "/usr/bin/pgrep smbd" interval 2 weight 2}vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 } track_script { chk_samba }}EOFsudo systemctl restart keepalivedsudo systemctl enable keepalived
配置 node2(备节点):
sudo tee /etc/keepalived/keepalived.conf <<EOFvrrp_script chk_samba { script "/usr/bin/pgrep smbd" interval 2 weight 2}vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 } track_script { chk_samba }}EOFsudo systemctl restart keepalivedsudo systemctl enable keepalived
五、测试与验证
1. 在客户端(Windows/Linux/Mac)上访问 \\192.168.1.100 或 smb://192.168.1.100,应能正常看到 shared 共享文件夹。
2. 手动关闭 node1 的 Samba 服务:sudo systemctl stop smbd,观察 VIP 是否自动漂移到 node2(可通过 ip addr show 查看)。
3. 恢复 node1 后,VIP 应自动切回(取决于配置,也可设置为不抢占)。
六、总结
通过本教程,你已经成功搭建了一个基于 Ubuntu文件共享集群 的高可用 Samba 服务。该方案结合了 Samba共享配置、NFS 数据同步和 Keepalived 故障转移,实现了 高可用文件服务器 的核心功能。无论是小型办公室还是开发团队,这套 Linux集群部署 方案都能提供稳定可靠的文件共享体验。
提示:生产环境中建议增加防火墙规则、用户认证、日志监控等安全措施。
