5.3. 分配和管理唯一数字属性值
有些条目属性值需要唯一的数字,如 uidNumber
和 gidNumber
。使用分布式数字分配(DNA)插件,您可以将目录服务器配置为自动从配置的数量生成并分配唯一数字到指定属性。
DNA 插件不保证 属性唯一性。如果您从插件管理的范围内手动分配了一个值,则插件不会检查该值是否是唯一的。
使用 DNA 插件,您可以通过为供应商上的不同本地 DNA 插件实例设置不同的范围来有效地避免复制冲突。例如,供应商 A 可以从 1 到 1000 分配数字,供应商 B 可将数字从 1001 分配给 2000。这样可确保每个供应商都使用真正唯一的数字集。
5.3.1. 关于动态编号分配 复制链接链接已复制到粘贴板!
DNA 插件分配实例可以发布的可用数字范围。两个属性定义范围定义:服务器下一个可用数字(范围的 botton 值)及其最大值(范围的最大值)。配置插件时,您要设置初始底部值。之后,插件会描述这个底部值。
通过将可用数字拆分为每个副本上的独立范围,服务器可以持续分配数字,而不会相互重叠。
5.3.1.1. 过滤、搜索和目标条目 复制链接链接已复制到粘贴板!
服务器在内部执行排序搜索,以验证另一台服务器是否已使用了下一个指定的范围,要求 managed 属性具有具有正确排序匹配规则的相等索引。
DNA 插件始终应用到目录树的特定区域( 范围 )以及该子树中的特定条目类型( 过滤器)。
DNA 插件 仅适用于单个 数据库,无法管理多个数据库的编号分配。DNA 插件使用 sort 控制来检查在 DNA 插件之外是否手动分配值。但是,这种验证使用 sort 控件仅适用于单个数据库。
5.3.1.2. 使用 dnaMagicRegen分配唯一数字 复制链接链接已复制到粘贴板!
使用 magic 值(dnaMagicRegen
)作为 DNA 插件管理的属性的模板值。这个魔法值是服务器范围之外的内容、数字甚至一个单词。当使用 magic 值添加条目且该条目位于 DNA 插件的配置范围和过滤器中时,magic 值会自动触发插件来生成新的唯一值。
例如,您可以使用 ldapmodify
工具将零(0
)添加为一个 magic 值:
使用配置的 dnaMagicRegen
,DNA 插件只针对在添加条目时值等于 magic 值的属性生成唯一的值。如果您没有为 DNA 插件设置 magic 值,则插件会覆盖受管属性的任何值。
- 备注
- 在这种情形中,DNA 插件仅管理一个属性,并且添加的条目不包含 managed 属性,则 add 操作会触发 DNA 插件来添加此属性并为它生成唯一值。
5.3.1.3. 同一范围内的多个属性 复制链接链接已复制到粘贴板!
DNA 插件可以从单个唯一数字中分配唯一数字到单个或多个属性类型。
这提供多个选项来分配唯一数字到属性:
- 来自唯一范围内的单个属性类型的单个数字。
- 在一个条目中两个属性的唯一数字。
- 分配了两个不同的属性,与相同范围的唯一数字不同。
在很多情况下,为每个属性类型分配唯一数字就足够了。例如,当将 employeeID
分配给新员工条目时,务必要确保每个员工条目收到唯一的 employeeID
。
但是,您可以将同一范围内的唯一数字分配给多个属性。例如,当将 uidNumber
和 gidNumber
分配给 posixAccount
条目时,DNA 插件可以为这两个属性分配相同的数字。要做到这一点,将受管属性传递给修改操作,并使用 ldapmodify
工具指定 magic 值(0
):
当 DNA 插件处理多个属性时,它只能在对象类只允许一个属性时为一个属性分配唯一的值。例如,posixGroup
对象类允许 gidNumber
,但不能 uidNumber
。如果 DNA 插件管理 uidNumber
和
,它会在创建 gidNumber
posixGroup
条目时为 uidNumber
和 gidNumber
属性范围分配一个唯一数字。为所有受管属性共享池可确保持续分配唯一数字,防止不同条目上的 uidNumber
和 gidNumber
结束与不同范围相同的数量冲突。
如果 DNA 插件管理多个属性,它会在单个修改操作中为所有这些属性分配相同的值。但是,如果条目不允许为范围定义的每种属性,或者条目允许所有定义的属性类型,但只有属性的子集需要唯一值,您必须通过执行单独的修改操作来从同一范围分配 不同 数量。例如:
例 5.4. 示例.DNA 和唯一银行帐户号
示例银行希望将相同的唯一数字用于客户的 primaryAccount
和 customerID
属性。Example bank 管理员配置了 DNA 插件,为同一范围内的两个属性分配唯一的值。
此外,银行希望为来自客户 ID 和主要帐户编号的二级账户分配号,但这些数字不能与主要帐户号相同。Example bank 管理员配置 DNA 插件也会管理
属性,但仅在创建条目并分配 secondaryAccount
primaryAccount
和 customerID 属性
后,将 secondaryAccount 属性添加到条目中。这可确保 primaryAccount
和 customerID
共享相同的唯一数字,并且任何 secondAccount
号码都完全唯一,但仍来自同一范围的数字。
5.3.2. DNA 插件的语法 复制链接链接已复制到粘贴板!
分布式数字分配(DNA)插件本身是一个容器条目,带有可分辨名称(DN) cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config
。DNA 插件条目下的每个 DNA 条目为 DNA 插件定义一个新的受管范围。因此,要为 DNA 插件配置新的受管范围,请在容器条目下创建条目。例如,如果您希望插件管理条目中的 uidNumber
属性,请在其中定义范围和其他插件设置创建 cn=Account UIDs,cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config
配置条目。
插件语法因您在单一服务器上配置插件还是复制拓扑中的多个服务器配置插件而有所不同。
单个服务器的 DNA 插件语法
如果您在单一服务器上使用插件,则基本 DNA 配置条目会定义以下属性:
- dnaType
- 定义插件管理的属性。
- dnaScope
- 定义插件用作基础条目的条目(DN)来搜索条目。
- dnaFilter
- 定义插件用来识别要管理的条目的搜索过滤器。
- dnaNextValue
- 定义插件在创建条目后分配的下一个可用值。
以下是单个属性类型的单个服务器上的 DNA 配置条目示例:
复制拓扑中服务器的 DNA 插件语法
要在多个供应商上配置分布式数字分配,配置条目还必须包含以下信息来共享和传输范围:
- dnaMaxValue
- 定义服务器可以分配的最大数量。
- dnaThreshold
-
定义范围不足以触发范围传输的阈值。如果没有设置
dnaThreshold
,则默认值为1
。 - dnaRangeRequestTimeout
-
定义服务器在请求范围传输时等待另一服务器的回答的超时周期。如果服务器在这个时间段内没有收到范围,则范围传输请求将发送到其他服务器。默认情况下,值设为
10
秒。 - dnaSharedCfgDN
- 定义在所有供应商服务器上共享的配置条目 DN,该配置条目存储每个供应商的范围信息。
- dnaNextRange
-
定义服务器分配给 manage 属性的特定数字范围。
dnaNextRange
值显示传输的下一个可用范围,由插件自动管理,因为范围由服务器分配或使用。这个范围尚未分配给另一个服务器,并仍可供其本地目录服务器使用。
以下是复制拓扑中供应商上的 DNA 配置条目示例:
有关您可以在 DNA 配置条目中使用的属性的完整列表,请参阅 分布式数字分配插件属性。
如果没有配置 dnaNextRange
属性值,Directory 服务器将使用 dnaMaxValue
值作为下一个范围的上限来自动分配范围。如果您希望 Directory 服务器为其他服务器分配一个独立的特定范围,则必须明确设置 dnaNextRange
属性。
每个供应商都在单独的配置条目中保持其当前范围的跟踪,其中包含有关范围和连接设置的信息。此条目是 dnaSharedCfgDN
中的位置的子级。目录服务器将配置条目复制到所有其他供应商,因此每个供应商都可以检查配置以查找要联系新范围的服务器。例如:
5.3.3. 使用命令行在供应商中创建 DNA 插件配置条目 复制链接链接已复制到粘贴板!
如果您希望供应商为受管属性分配唯一数字,请为您要应用的每个配置创建一个 DNA 插件配置条目。DNA 插件配置条目是 cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config
插件容器条目下的子条目。
在多层次环境中,每个供应商管理自己的值范围。范围在供应商和每个供应商之间复制,了解哪个供应商管理哪个范围。之后,如果第一个供应商没有范围值,供应商会使用此信息来请求来自其他供应商的范围传输。
以下示例使用 dsconf
工具在供应商上创建一个新的 DNA 插件配置条目。
先决条件
-
您有
root
权限。
流程
在供应商中创建 DNA 配置条目:
dsconf <instance_name> plugin dna config "Account UIDs" add --type uidNumber --filter "(objectclass=posixAccount)" --scope ou=People,dc=example,dc=com --next-value 1 --max-value 1300 --shared-config-entry "cn=Account UIDs,ou=Ranges,dc=example,dc=com" --threshold 100 --range-request-timeout 60 --magic-regen 99999
# dsconf <instance_name> plugin dna config "Account UIDs" add --type uidNumber --filter "(objectclass=posixAccount)" --scope ou=People,dc=example,dc=com --next-value 1 --max-value 1300 --shared-config-entry "cn=Account UIDs,ou=Ranges,dc=example,dc=com" --threshold 100 --range-request-timeout 60 --magic-regen 99999 Successfully created the cn=Account UIDs,cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令创建 DNA 插件配置,该配置将唯一值设置为
uidNumber
属性,而不是ou=People,dc=example,dc=com
下新创建的posixAccount
条目中的99999
magic 值。当达到值1200
时,供应商将值设置为1300
,并从第二个供应商请求范围传输。如果第二个供应商没有响应 60 秒,则第一个供应商请求从第三个供应商传输范围。- 注意
如果您为没有复制或一层环境中的供应商创建配置条目,则仅设置
类型
,--filter
,--scope
,--next-value
选项。有关 DNA 插件配置属性的详情,请参阅 DNA 插件部分的分布式数字分配插件 属性 和语法。
可选:创建在所有供应商服务器间共享的配置条目:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 DNA 插件:
dsconf <instance_name> plugin dna enable
# dsconf <instance_name> plugin dna enable Enabled plugin 'Distributed Numeric Assignment Plugin'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
查看配置条目详情:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.4. 使用 Web 控制台在供应商中创建 DNA 插件配置条目 复制链接链接已复制到粘贴板!
如果您希望目录服务器为受管属性分配唯一数字,请为您要应用的每个配置创建一个 DNA 插件配置条目。目录服务器在 cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config
插件容器条目下存储此类插件配置条目。
在多层次环境中,每个供应商管理自己的值范围。范围在供应商和每个供应商之间复制,了解哪个供应商管理哪个范围。之后,如果第一个供应商没有范围值,供应商会使用此信息来请求来自其他供应商的范围传输。
先决条件
- 已登陆到 web 控制台。如需了解更多详细信息 ,请参阅使用 Web 控制台登录到目录服务器。
流程
- 选择 Directory Server 实例。
- 打开 Plugins 菜单,然后从列表中选择 DNA 插件。
- 单击 按钮,以启动新插件配置条目的配置。
在 DNA Configuration 选项卡中,设置字段。
例如,您希望插件将唯一值设置为
uidNumber
属性,而不是ou=People,dc=example,dc=com
下新创建的posixAccount
条目中的99999
magic 值。另外,您希望供应商将值设置为1300
,并在唯一值达到值1200
时从第二个供应商请求范围传输。在这种情况下,设置以下字段:-
配置名称 到
帐户 UID
-
DNA 管理的属性 到
uidNumber
-
过滤 到
" (objectclass=posixAccount) "
-
子树范围 到
ou=People,dc=example,dc=com
-
下一个值 到
1
-
最大值 为
1300
-
ic Regeneration Value 到
99999
-
阈值 为
100
范围请求超时 为
60
- 注意
- 如果您为没有复制或一层环境中的供应商创建配置条目,请只设置 DNA Managed Attributes、Filter、subtreeScope 和 Next Value 字段。
-
配置名称 到
-
前往 Shared Config Settings 选项卡,并将 Shared Config Entry DN 字段设置为,例如
cn=Account UIDs,ou=Ranges,dc=example,dc=com
。此共享配置条目包含要联系范围传输的服务器的信息(如果当前服务器没有唯一的值)。 - 单击 Save Config 按钮,以保存插件设置。
- 将开关切换到 插件启用 位置以启用插件。