第 4 章 在目录服务器中配置目录数据库
您可以配置数据库、后缀、串联策略、数据库链接和引用。使用虚拟目录树来组织自定义分组或层次结构中的条目。
4.1. 在单独的数据库中存储后缀 复制链接链接已复制到粘贴板!
您可以通过将实例中的数据划分为多个数据库,在目录服务器中设计分布式数据存储逻辑。您可以使用目录树的后缀作为数据划分的方法。
您可以创建多个目录树,并通过 root 后缀将其存储在单独的数据库中。您还可以将单个目录树划分为分支,并通过子后缀将分支存储在单独的数据库中。
4.1.1. 数据结构中后缀的角色 复制链接链接已复制到粘贴板!
目录服务器以分级结构呈现数据,称为目录树(DIT)。以下是一个简单的目录树:
图 4.1. 带有单个根后缀的简单目录树
每个目录树都有一个根条目,用于定义该目录树的命名上下文,如 dc=example,dc=com。
您可以将目录树的不同部分存储在不同的数据库中,然后在多个服务器间分发这些数据库。
您可以使用后缀来定义数据存储的分布逻辑。后缀将目录树的分支(subtree)与特定数据库相关联。
这样,您可以在服务器的单一实例中拥有多个数据库。您不限于单个数据库。
4.1.2. 根后缀和子后缀 复制链接链接已复制到粘贴板!
根后缀将整个目录树(DIT)与数据库相关联。root 后缀没有父后缀。
当您要将目录树的分支存储在单独的数据库中时,您可以创建一个子后缀,它将树的分支与分支的不同数据库相关联。子后缀必须附加到父后缀。父后缀可以是根后缀或子后缀,这意味着任何子树的分支可以存储在单独的数据库中。
图 4.2. 在单独的数据库中带有子后缀的目录树
在本例中,ou=people,dc=example,dc=com 子后缀存储在一个数据库中,根后缀下的其余目录树存储在不同的数据库中。
使用子后缀的优点:
- 您可以在粒度级别上执行数据库维护(导入/导出/索引)。
- 您可以在单独的磁盘上存储子修复,从而解决磁盘空间问题。
使用子修复的缺点:
- 在设置过程中,您需要更多的管理操作。
- 复制需要为每个子后缀单独配置和复制协议。
4.1.3. 几个 root 后缀 复制链接链接已复制到粘贴板!
您还可以在单个实例中有多个带有不同根后缀的目录树(DIT)。例如,当您想要将部分数据与用户 root 分开时。
图 4.3. 由 root 后缀定义的几个目录树
当客户端搜索 dc=example,dc=com 树时,搜索不会从其他树中返回条目,因为它们对搜索算法没有限制。
然后,您可以选择哪个目录树和命名上下文用于您的实例。
4.1.4. 使用命令行创建根后缀 复制链接链接已复制到粘贴板!
此流程演示了如何在命令行上创建目录树的根后缀。
流程
可选:列出已使用的后缀和后端数据库:
dsconf <instance_name> backend suffix list
# dsconf <instance_name> backend suffix list dc=example,dc=com (userroot)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 括号中的名称是存储相应后缀数据的后端数据库。在下一步中创建根后缀时,您无法使用现有数据库名称。
在--suffix 参数中指定根后缀的 DN,并使用
--be-name参数将其与新数据库关联:dsconf <instance_name> backend create --suffix="dc=example,dc=net" --be-name="example"
# dsconf <instance_name> backend create --suffix="dc=example,dc=net" --be-name="example"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
- 在此流程的第一步中使用 命令列出后缀和数据库。
4.1.5. 使用 Web 控制台创建根后缀 复制链接链接已复制到粘贴板!
此流程指导您在浏览器中创建目录树的根后缀。
先决条件
- 在 web 控制台中登录到实例。
流程
- 在 Database 下,点配置树下的 按钮。
- 填写 后缀 DN 和 数据库名称。
- 选择 Create The Top Suffix Entry 并点 。
验证
- 新后缀应出现在后缀的树中。
4.1.6. 更改默认命名上下文 复制链接链接已复制到粘贴板!
命名上下文是目录树(DIT)的属性,它为该 DIT 中的条目定义根命名空间。当您使用多个根后缀在实例中构建数据时,您的实例有几个 DIT,各自具有不同的命名上下文。
此流程指示您在实例中使用多个 root 后缀时,如何在命令行中更改默认命名上下文。
访问您的实例的客户端可能不知道他们需要使用哪个命名上下文。如果目录服务器没有其他配置给它们知道的命名上下文,则目录服务器会向客户端发出默认命名上下文信号。
您可以在 cn=config 中的 nsslapd-defaultnamingcontext 属性中设置默认命名上下文。目录服务器将此值传播到目录服务器代理服务条目(root DSE),客户端可以匿名查询它。
先决条件
- 您已创建了根后缀,用于定义实例的默认命名上下文。
流程
可选:查看当前的默认命名上下文:
dsconf <instance_name> config get nsslapd-defaultnamingcontext
# dsconf <instance_name> config get nsslapd-defaultnamingcontext nsslapd-defaultnamingcontext: dc=example,dc=comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
nsslapd-defaultnamingcontext参数的值替换为所需的命名上下文:dsconf <instance_name> config replace nsslapd-defaultnamingcontext=dc=example,dc=net
# dsconf <instance_name> config replace nsslapd-defaultnamingcontext=dc=example,dc=netCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
- 查看当前的默认命名上下文。应该更新该值。
4.1.7. 使用命令行创建子后缀 复制链接链接已复制到粘贴板!
您可以使用命令行创建目录树的子修复。
先决条件
- 为 sub-suffix 创建父后缀。
流程
可选:列出已使用的后缀和后端数据库:
dsconf <instance_name> backend suffix list
# dsconf <instance_name> backend suffix list dc=example,dc=com (userroot)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 括号中的名称是存储相应后缀数据的后端数据库。在下一步中创建子后缀时,您无法使用现有数据库名称。
在--suffix 参数中指定 sub-suffix 的完整 DN,使用
--be-name参数将其与新数据库关联,并在--parent-suffix参数中指定父后缀:dsconf <instance_name> backend create --suffix="ou=People,dc=example,dc=com" --be-name="example" --parent-suffix="dc=example,dc=com" --create-suffix
# dsconf <instance_name> backend create --suffix="ou=People,dc=example,dc=com" --be-name="example" --parent-suffix="dc=example,dc=com" --create-suffixCopy to Clipboard Copied! Toggle word wrap Toggle overflow with
-create-suffix参数,命令为子后缀创建配置条目,以及子后缀条目ou=People,dc=example,dc=com。--create-suffix参数支持使用以下 RDN 属性 type:c,cn,dc,o, 和ou创建后缀。如果要使用 RDN 创建后缀,如l,您可以使用dsconf backend create命令,而无需使用--create-suffix选项,然后使用 LDAP add 操作或从 LDIF 文件导入条目来添加后缀条目。
验证
- 在此流程的第一步中使用 命令列出后缀和数据库。
4.1.8. 使用 Web 控制台创建子后缀 复制链接链接已复制到粘贴板!
此流程指导您在浏览器中创建目录树的子后缀。
先决条件
- 在 web 控制台中登录到实例。
- 为 sub-suffix 创建父后缀。
流程
- 在 Database 下,从是子suffix 的父配置树中选择一个后缀。
- 点 ,然后选择 。
-
填写 Sub-Suffix DN,如
ou=People,以及数据库名称。 -
选择
Create The Top Suffix Entry并点 。
验证
- 新子后缀应当出现在配置树中的后缀中。