总结

总结

总结

与共享交互时 ctdb + samba 集群中的一个节点发生故障会中断共享连接。

  • 这里这里声明正在进行相关工作以实现这一目标
  • 这里指出使用 Samba 3.0 已经可以实现(目前使用 4.7)

我的设置

3 个节点运行 ceph + cephfs
其中 2 个节点运行 CTDB 和 Samba 1 个客户端(不是 3 个服务器之一)

这是一个实验室设置,因此每个服务器只有一个网卡=节点,一个子网以及所有 Ceph 组件和 Samba 都在同一台服务器上。我知道,这不是可行的方法。

问题

我想使用 ctdb 在 Ceph 上托管集群 Samba 文件共享。我按照 CTDB 文档 (https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba#Configuring_Clusters_with_CTDB)及其部分内容:https://wiki.samba.org/index.php/Samba_CTDB_GPFS_Cluster_HowTo。集群正在运行,并且共享在两个节点上均可访问、可读、可写,我的 smb.conf 如下所示:

[global]
netbios name = CEPHFS
workgroup = SIMPLE
clustering = yes
idmap config * : backend = autorid
idmap config * : range = 1000000-1999999
log file = /var/log/samba/smb.log

# Set files creation permissions
create mask = 664
force create mode = 664

# Set directory creation mask
directory mask = 2775
force directory mode = 2775

[public]
comment = public share
path = /mnt/mycephfs/testshare
public = yes
writeable = yes
only guest = yes
ea support = yes

CTDB 管理 Samba 并报告两个节点均正常。

但是当我通过公共 IP 读取或写入其中一个节点并让其失败(重新启动 ctdb)时,读取或写入会失败。第二次写入尝试成功(公共 IP 被另一台主机成功获取)。

但 CTDB 应该能够做到这一点https://ctdb.samba.org/-> IP 接管?我有新服务器 (接管公网 IP 的服务器) 的 tcpdump,在客户端向服务器发送重传后,该服务器向我的客户端发送了 tcp RST。

知道吗,问题可能出在哪里?

附言:我非常乐意为您提供更多信息(ctdb 配置文件、防火墙配置、pcap 等等;)),但是这已经足够长了……

编辑:

还在虚拟化环境和 Windows 10 客户端上测试了 GlusterFS 作为存储后端。需要kernel share modes = No,使用 gluster vfs。

答案1

问题是 Samba 版本是不支持持久句柄然而,以下存储库支持它,但还没有准备好在官方 Samba 存储库中创建稳定版本。请参阅YouTube以获得关于此实现的完整解释。

耐用手柄受 Samba 支持,因此节点的网络故障将得到解决,但 CTDB 执行 IP 接管的故障将需要 SMB 客户端重新连接。Windows 应用程序/程序必须管理和捕获错误并重试,例如复制在 Windows 上有一个标志/Z(看选项) 哪个重新建立连接当新节点发生 IP 接管时。

相关内容