首先警告几句:用 CTDB 集群域控制器并不常见。Clustering/CTDB 是为文件服务器制作的,这些文件服务器通常是域中的成员服务器。域控制器的主要目的是为客户端提供登录服务,并且通常使用不同的复制服务(例如将 DB 存储在 ldap 中而不是 TDB 中)。对域控制器进行群集可能会出现问题,因为整个群集需要始终如一地向客户端显示自己作为单个服务器。这可能会导致 nmbd / NetBIOS 名称解析出现问题。此外,一个问题是您需要确保在集群中所有底层用户帐户都是在具有相同用户 ID 的所有 ctdb 集群节点上创建的。
通常,最佳实践是尽可能将文件服务器角色与域控制器角色分开。还要记住,从 Samba 4.0 开始,现在有一个 Active Directory 域控制器的功能,它带有协议级别的用户数据库的多主复制。
话虽如此,重要的是您不能随意替换 samba 和 ctdb 版本。Samba 3.6 应该与 ctdb 2.5 一起使用,但需要针对要使用的 ctdb 版本重新编译 Samba。即,如果 Samba 是针对旧版本的 CTDB(如 1.0.114.X)编译的,那么这个二进制包将无法与 CTDB 2.5 一起使用。
如果您有一组工作的 samba 和 ctdb 软件包,那么将以前的安装迁移到这个新安装的过程取决于以前的安装是否也是 CTDB 集群。如果是这样,你可以这样做
ctdb getdbmap
在旧安装上然后运行
ctdb backupdb
在所有标记为 PERSISTENT 的数据库上。在您使用的新安装中
ctdb restoredb
恢复所有这些数据库。
如果之前的安装是非集群 Samba,那么您使用 ltdbtool 的提示是正确的。你必须
之后,这些数据库应该在集群上同步。