身份管理性能调优
优化 IdM 服务,如目录服务器、KDC 和 SSSD,以提高性能
摘要
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 在顶部导航栏中点 Create
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 调优 IdM 时的重要注意事项 复制链接链接已复制到粘贴板!
对身份管理组件服务进行微调,以适用于大多数部署的最佳方式。作为系统管理员,您可能想要调整 IdM 服务的性能,以适应特定环境的需求。
重要注意事项
- 每个 IdM 部署可能有不同的硬件、软件、联网、数据、工作负载和其他因素,因此每个部署都可能有其唯一性。适合一个环境的调整可能并不适合于另一个环境。
- 性能升级是一个迭代的实验过程。一次只调整一个变量,并监控其对您的环境的影响。在通过一个变量达到预期的结果后,调整下一个变量,同时继续监控之前调整的性能。
第 2 章 硬件建议 复制链接链接已复制到粘贴板!
对于性能调整,RAM 是最重要的硬件。请确定您的系统有足够可用 RAM。典型的 RAM 要求是:
- 对于 10,000 个用户和 100 个组:至少 4 GB RAM 和 4 GB 交换(swap)空间
- 对于 100,000 个用户和 50,000 个组:至少 16 GB RAM 和 4 GB swap 空间
对于较大的部署,增加 RAM 比增加磁盘空间效率更高,因为大部分数据都存储在缓存中。通常,对于大型部署,添加更多 RAM 会因为有更多的缓存使系统具有更好的性能。在虚拟环境中,必须禁用内存膨胀,或者必须为客户机 IdM 服务器保留完整的 RAM。
基本用户条目或带有证书的简单主机条目大约是 5-10 kB 大小。
第 3 章 IdM 服务器性能建议 复制链接链接已复制到粘贴板!
为确保稳定的性能,身份管理(IdM)对可同时添加或注册到 IdM 服务器的用户和客户端的最大数量强制实施限制。
操作 | 描述 | Number |
---|---|---|
客户端注册 | 在注册开始失败前,您可以同时注册到 IdM 服务器的最大 IdM 客户端数。 | 130 |
添加用户 |
在无法添加用户前,您可以使用来自不同 IdM 客户端的
您可以使用 IdM API | 325 |
客户端身份验证 | 身份验证开始失败前可以同时验证的 IdM 客户端的最大数。 | 800 |
将成员添加到用户组 | 推荐的您可以在组中添加的成员数,而不超过向组添加新成员的时间。IdM 有一个两秒规则,来作为将成员添加到组中的正常时间段。您可以添加更多成员,但操作的时间将逐渐延长。 | 1500 |
第 4 章 IdM 中的故障转移、负载平衡和高可用性 复制链接链接已复制到粘贴板!
身份管理(IdM)为 IdM 客户端提供了内置的故障转移机制,为 IdM 服务器提供了负载平衡和高可用性功能。
4.1. 客户端故障转移功能 复制链接链接已复制到粘贴板!
默认情况下,IdM 客户端中的 SSSD 服务被配置为使用 DNS 服务(SRV)资源记录,以便客户端可以自动决定要连接的最佳 IdM 服务器。
4.1.1. 主和备份服务器配置 复制链接链接已复制到粘贴板!
服务器解析行为由 /etc/sssd/sssd.conf
文件的 ipa_server
参数中的 _srv_
选项控制:
/etc/sssd/sssd.conf 示例
[domain/<idm_domain_name>] id_provider = ipa ipa_server = _srv_, <primary_idm_server1>, <primary_idm_server2> ipa_backup_server = <backup_idm_server1>, <backup_idm_server2> ...
[domain/<idm_domain_name>]
id_provider = ipa
ipa_server = _srv_, <primary_idm_server1>, <primary_idm_server2>
ipa_backup_server = <backup_idm_server1>, <backup_idm_server2>
...
指定 _srv_
选项后,SSSD 检索按首选顺序排序的 IdM 服务器的列表。如果主服务器离线,IdM 客户端上的 SSSD 服务会自动连接到另一个可用的 IdM 服务器。
主服务器在 ipa_server
参数中指定。SSSD 尝试首先连接到主服务器,只有在没有主服务器可用时才切换到备份服务器。
备份服务器不支持 _srv_
选项。
SSSD 从 DNS 服务器查询 SRV 记录。默认情况下,在尝试查询另一个 DNS 服务器前,SSSD 会等待 6
秒,以得到 DNS 解析器的回复。如果所有 DNS 服务器都不可访问,域将继续在离线模式下运行。您可以使用 dns_resolver_timeout
选项增加客户端等待 DNS 解析器回复的时间。
如果您希望因为性能原因绕过 DNS 查找,请从 ipa_server
参数中删除 _srv_
条目,并指定客户端应该连接的 IdM 服务器,按首选顺序排列:
/etc/sssd/sssd.conf 示例
[domain/<idm_domain_name>] id_provider = ipa ipa_server = <primary_idm_server1>, <primary_idm_server2> ipa_backup_server = <backup_idm_server1>, <backup_idm_server2> ...
[domain/<idm_domain_name>]
id_provider = ipa
ipa_server = <primary_idm_server1>, <primary_idm_server2>
ipa_backup_server = <backup_idm_server1>, <backup_idm_server2>
...
4.2. IdM 服务器和服务的故障转移行为 复制链接链接已复制到粘贴板!
SSSD 故障转移机制独立对待 IdM 服务器及其服务。如果服务器的主机名解析成功,SSSD 视机器为在线,并尝试连接到该机器上需要的服务。如果与服务的连接失败,SSSD 会只将该特定服务视为离线,而不是整个机器或其上的其他服务。
如果主机名解析失败,SSSD 会将整个机器视为离线,且不会尝试连接到该机器上的任何服务。
当所有主服务器都不可用时,SSSD 会尝试连接到配置的备份服务器。当连接到备份服务器时,SSSD 会定期尝试重新连接到其中一个主服务器,并在主服务器可用时立即连接。这些尝试之间的间隔由 failover_primary_timeout
选项控制,其默认为 31 秒。
如果所有 IdM 服务器都无法访问,SSSD 会切换到离线模式。在此状态中,SSSD 每 30 秒重试一次连接,直到服务器可用为止。
4.2.1. 服务器端负载平衡和服务可用性 复制链接链接已复制到粘贴板!
您可以通过安装多个 IdM 副本在 IdM 中实现负载平衡和高可用性:
- 如果您的网络分布在不同的地理位置,可以通过为每个数据中心配置多个 IdM 副本来缩短 IdM 客户端和最快的服务器间的路径。
- 红帽支持最多有 60 个副本的环境。
- IdM 复制机制提供主动/主动服务可用性:所有 IdM 副本的服务都同时可用。
红帽建议不要将 IdM 和其他负载均衡或高可用性(HA)软件结合使用。
许多第三方高可用性解决方案假定使用主动/被动模式,并可能导致 IdM 服务出现不必要的中断。其他解决方案使用虚拟 IP 或每个集群服务使用一个主机名。所有这些方法通常不适用于 IdM 所提供的服务。另外,它们与 Kerberos 的集成效果也不好,从而降低了部署的整体安全性和稳定性。
第 5 章 优化副本拓扑 复制链接链接已复制到粘贴板!
一个良好的副本拓扑可以对工作负载进行分散,并减少复制延迟。按照以下步骤优化副本拓扑布局:
5.1. 决定拓扑中合适数量的 IdM 副本的指南 复制链接链接已复制到粘贴板!
规划 IdM 拓扑,以使匹配机构的要求,并确保最佳性能和服务可用性。
- 在每个数据中心中设置至少两个副本
- 在每个数据中心中至少部署两个副本,以确保一个服务器出现故障,副本可以接管并处理请求。
- 为您的客户端设置足够数量的服务器
- 一个 IdM 服务器可为 2000 - 3000 个客户端提供服务。这假设客户端每天会多次查询服务器,但不会每分钟都查询一次。如果您期望频繁查询,请计划更多服务器。
- 设置足够数量的证书颁发机构(CA)副本
- 只有安装了 CA 角色的副本才能复制证书数据。如果使用 IdM CA,请确保您的环境至少有两个带有证书复制协议的 CA 副本。
- 在单个 IdM 域中设置最多 60 个副本
- 红帽支持最多有 60 个副本的环境。
5.2. 从 IdM 服务器卸载 IdM CA 服务 复制链接链接已复制到粘贴板!
如果您的拓扑中有超过四个身份管理(IdM)副本,并且由于冗余证书复制而遇到性能问题,请从 IdM 副本中删除冗余 CA 服务实例。要做到这一点,您必须首先完全停用受影响的 IdM 副本,然后在其上重新安装没有 CA 服务的 IdM 。
虽然您可以将 CA 角色 添加 到 IdM 副本中,但 IdM 没有提供一种从 IdM 副本中只 删除 CA 角色的方法:ipa-ca-install
命令没有 --uninstall
选项。
先决条件
- 您已在拓扑中超过四个 IdM 服务器上安装了 IdM CA 服务。
流程
- 识别冗余 CA 服务,并按照在托管此服务的 IdM 副本上 卸载 IdM 服务器 中的流程操作。
- 在同一台主机上,请按照 安装 IdM 服务器:带有集成 DNS,没有 CA 中的流程操作。
第 6 章 调整搜索大小和时间限制 复制链接链接已复制到粘贴板!
有些查询(比如请求 IdM 用户列表)可能会返回大量条目。通过调优这些搜索操作,您可以在运行 ipa *-find
命令时提高服务器的总体性能,例如 ipa user-find
,并在 Web UI 中显示相应的列表。
- 搜索大小限制
定义从客户端 CLI 发送发送到服务器的请求或从访问 IdM Web UI 的浏览器返回的最大条目数。
默认: 100 条目。
- 搜索时间限制
定义服务器等待搜索运行的最长时间(以秒为单位)。搜索达到这个限制后,服务器将停止搜索并返回该时间里发现的条目。
默认: 2 秒。
如果您将值设为 -1
,IdM 在搜索时不会应用任何限制。
如果设置的搜索大小或时间限制太大,则可能会对服务器性能造成负面影响。
6.1. 在命令行中调整搜索大小和时间限制 复制链接链接已复制到粘贴板!
您可以在全局范围内或为特定条目调整搜索大小和时间限制,以优化搜索性能和响应速度。
流程
要在 CLI 中显示当前搜索时间和大小限制,请使用
ipa config-show
命令:ipa config-show
$ ipa config-show Search time limit: 2 Search size limit: 100
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在全局范围内调整对所有查询的限制,运行
ipa config-mod
命令并使用--searchrecordslimit
和--searchtimelimit
选项。例如:ipa config-mod --searchrecordslimit=500 --searchtimelimit=5
$ ipa config-mod --searchrecordslimit=500 --searchtimelimit=5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要为一个特定查询临时调整限制,请在命令中添加
--sizelimit
或--timelimit
选项。例如:ipa user-find --sizelimit=200 --timelimit=120
$ ipa user-find --sizelimit=200 --timelimit=120
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2. 在 Web UI 中调整搜索大小和时间限制 复制链接链接已复制到粘贴板!
您可以使用 IdM Web UI 调整全局搜索大小和时间限制,以优化搜索性能和响应速度。
流程
- 登录到 IdM Web UI。
- 点 IPA Server。
- 在 IPA Server 选项卡中点 Configuration。
在搜索选项区域中设置所需的值。
默认值为:
- 搜索大小限制: 100 个条目
- 搜索时间限值: 2 秒
- 点页面顶部的 Save。
第 7 章 调整 IdM 目录服务器性能 复制链接链接已复制到粘贴板!
您可以通过调整 LDAP 属性来控制目录服务器的资源和行为来调整身份管理数据库的性能。
您可以微调以下内容:
- 调整目录服务器 缓存数据 的方式。
- 调整目录服务器 的资源限值。
- 调整对性能有最大影响的 超时。
- 使用 LDIF 文件中的自定义目录服务器设置安装 IdM 服务器或副本。
7.1. 调整 IdM 目录服务器中的条目缓存大小 复制链接链接已复制到粘贴板!
不要更改此设置,除非您有强烈需要应用自定义值。IdM 目录服务器使用内置缓存自动大小功能来优化性能。
nsslapd-cachememsize
属性指定条目缓存的可用内存空间大小(以字节为单位)。此属性是控制目录服务器使用的物理 RAM 最重要的值之一。
如果条目缓存大小太小,您可能在 Directory Server 错误日志中看到以下错误: /var/log/dirsrv/slapd- <instance_name>/errors
日志文件:
REASON: entry too large (83886080 bytes) for the import buffer size (67108864 bytes). Try increasing nsslapd-cachememsize.
REASON: entry too large (83886080 bytes) for the import buffer size (67108864 bytes). Try increasing nsslapd-cachememsize.
红帽建议在内存中适合条目缓存和数据库索引条目缓存。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
禁用自动缓存调整。
dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend config set --cache-autosize=0
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend config set --cache-autosize=0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示数据库后缀及其对应的后端。
dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix list
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix list cn=changelog (changelog) dc=example,dc=com (userroot) o=ipaca (ipaca)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令显示每个后缀旁的后端数据库名称。在下一步中使用后缀的数据库名称。
为数据库设置条目缓存大小。这个示例将 userroot 数据库的条目缓存设置为 2GB。
dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix set --cache-memsize=2147483648 userroot
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix set --cache-memsize=2147483648 userroot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 Directory 服务器。
systemctl restart dirsrv.target
[root@server ~]# systemctl restart dirsrv.target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
cache-memsize
调整为不同的值,或者重新启用缓存自动大小。
验证
显示
nsslapd-cachememsize
属性的值,并将其设置为您所需的值。ldapsearch -D "cn=Directory Manager" -w <directory_manager_password> -b "cn=userroot,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-cachememsize
[root@server ~]# ldapsearch -D "cn=Directory Manager" -w <directory_manager_password> -b "cn=userroot,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-cachememsize nsslapd-cachememsize: 2147483648
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2. 调整 IdM 目录服务器中的数据库索引缓存大小 复制链接链接已复制到粘贴板!
不要更改此设置,除非您有强烈需要应用自定义值。IdM 目录服务器使用内置缓存自动大小功能来优化性能。
nsslapd-dbcachesize
属性控制数据库索引使用的内存量。这个缓存大小对 Directory 服务器性能的影响比条目缓存大小的影响要小,但如果设置条目缓存大小后有可用的 RAM,红帽建议增加分配给数据库缓存的内存量。
数据库缓存限制为 1.5 GB RAM,因为更高的值并不会提高性能。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
禁用自动缓存调整,并设置数据库缓存大小。这个示例将数据库缓存设置为 256MB。
dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend config set --cache-autosize=0 --dbcachesize=268435456
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend config set --cache-autosize=0 --dbcachesize=268435456
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 Directory 服务器。
systemctl restart dirsrv.target
[root@server ~]# systemctl restart dirsrv.target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
dbcachesize
调整为不同的值,或者重新启用缓存自动大小。
验证
显示
nsslapd-dbcachesize
属性的值,并将其设置为您所需的值。ldapsearch -D "cn=Directory Manager" -w <directory_manager_password> -b "cn=config,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-dbcachesize
[root@server ~]# ldapsearch -D "cn=Directory Manager" -w <directory_manager_password> -b "cn=config,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-dbcachesize nsslapd-dbcachesize: 2147483648
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3. 在 IdM 目录服务器中重新启用数据库和条目缓存自动大小 复制链接链接已复制到粘贴板!
对优化的性能使用内置缓存自动调整大小功能。不要手动设置缓存大小。
默认情况下,IdM Directory 服务器会自动决定数据库缓存和条目缓存的最佳大小。自动的设置会忽略一部分可用 RAM,并在实例启动时根据服务器的硬件资源优化这两个缓存的大小。
使用这个流程取消自定义数据库缓存和条目缓存值,并将缓存自动大小功能恢复到默认值。
|
这个设置控制为自动分配数据库和条目缓存而分配的可用 RAM 量。 |
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
|
这个值设定由 |
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- 之前您已经禁用了数据库和条目缓存自动扩展。
流程
停止 Directory 服务器实例。
systemctl stop dirsrv.target
[root@server ~]# systemctl stop dirsrv.target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在进行任何进一步修改前,备份
/etc/dirsrv/slapd-<instance_name> /dse.ldif
文件。cp /etc/dirsrv/slapd-<instance_name>/dse.ldif \ /etc/dirsrv/slapd-<instance_name>/dse.ldif.bak.$(date "+%F_%H-%M-%S")
[root@server ~]# cp /etc/dirsrv/slapd-<instance_name>/dse.ldif \ /etc/dirsrv/slapd-<instance_name>/dse.ldif.bak.$(date "+%F_%H-%M-%S")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/etc/dirsrv/slapd-<instance_name> /dse.ldif
文件:设置用于数据库的可用系统 RAM 百分比,恢复默认的 10% 可用 RAM。
nsslapd-cache-autosize: 10
nsslapd-cache-autosize: 10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将可用系统 RAM 中数据库缓存使用的百分比设置为默认的 25%:
nsslapd-cache-autosize-split: 25
nsslapd-cache-autosize-split: 25
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将更改保存到
/etc/dirsrv/slapd-<instance_name>/dse.ldif
文件。 启动 Directory 服务器。
systemctl start dirsrv.target
[root@server ~]# systemctl start dirsrv.target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示
nsslapd-cache-autosize
和nsslapd-cache-autosize-split
属性的值,并验证它们已设置为您所需的值。ldapsearch -D "cn=Directory Manager" -w <directory_manager_password> -b "cn=config,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-cache-autosize nsslapd-cache-autosize: *10
[root@server ~]# ldapsearch -D "cn=Directory Manager" -w <directory_manager_password> -b "cn=config,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-cache-autosize nsslapd-cache-autosize: *10 nsslapd-cache-autosize-split: 25
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4. 调整 IdM 目录服务器中的 DN 缓存大小 复制链接链接已复制到粘贴板!
不要更改此设置,除非您有强烈需要应用自定义值。IdM 目录服务器使用内置缓存自动大小功能来优化性能。
nsslapd-dncachememsize
属性指定可辨识名称(DN)缓存的可用内存空间大小(以字节为单位)。DN 缓存与数据库的条目缓存类似,但其表只存储条目 ID 和条目 DN,这样可加快查找 rename
和 moddn
操作。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
可选:显示数据库后缀及其相应的数据库名称。
dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix list
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix list dc=example,dc=com (userroot)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令显示每个后缀旁的后端数据库名称。在下一步中使用后缀的数据库名称。
为数据库设置 DN 缓存大小。这个示例将 DN 缓存设置为 20MB。
dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix set --dncache-memsize=20971520 userroot
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix set --dncache-memsize=20971520 userroot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 Directory 服务器。
systemctl restart dirsrv.target
[root@server ~]# systemctl restart dirsrv.target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
dncache-memsize
调整为不同的值,或者重新调整默认值 10 MB。
验证
显示
nsslapd-dncachememsize
属性的新值,并将其设置为您所需的值。ldapsearch -D "cn=Directory Manager" -w <directory_manager_password> -b "cn=userroot,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-dncachememsize
[root@server ~]# ldapsearch -D "cn=Directory Manager" -w <directory_manager_password> -b "cn=userroot,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-dncachememsize nsslapd-dncachememsize: 20971520
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5. 调整 IdM 目录服务器中的规范化 DN 缓存大小 复制链接链接已复制到粘贴板!
不要更改此设置,除非您有强烈需要应用自定义值。IdM 目录服务器使用内置缓存自动大小功能来优化性能。
nsslapd-ndn-cache-max-size
属性控制存储规范化可分辨名称(NDN)的缓存的大小(以字节为单位)。增加这个值将在内存中保留更频繁使用的 DN。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
确保启用了 NDN 缓存。
dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-ndn-cache-enabled
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-ndn-cache-enabled Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-ndn-cache-enabled: on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果缓存
关闭
,使用以下命令启用它。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-ndn-cache-enabled=on
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-ndn-cache-enabled=on Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-ndn-cache-enabled"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索
nsslapd-ndn-cache-max-size
参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-ndn-cache-max-size
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-ndn-cache-max-size Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-ndn-cache-max-size: 20971520
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改
nsslapd-ndn-cache-max-size
属性的值。这个示例将值增加到41943040
(40 MB)。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-ndn-cache-max-size=41943040
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-ndn-cache-max-size=41943040
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
nsslapd-ndn-cache-max-size
调整为不同的值,或者重新启用缓存自动大小。
验证
显示
nsslapd-ndn-cache-max-size
属性的新值,并将其设置为您所需的值。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-ndn-cache-max-size
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-ndn-cache-max-size Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-ndn-cache-max-size: 41943040
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.6. 调整 IdM 目录服务器中的最大消息大小 复制链接链接已复制到粘贴板!
nsslapd-maxbersize
属性以字节为单位设定传入消息或 LDAP 请求的最大值。限制请求大小可防止某种形式拒绝服务攻击。
如果最大消息大小太小,您可能在 Directory Server 错误日志中看到以下错误: /var/log/dirsrv/slapd- <instance_name> /errors
:
Incoming BER Element was too long, max allowable is 2097152 bytes. Change the nsslapd-maxbersize attribute in cn=config to increase.
Incoming BER Element was too long, max allowable is 2097152 bytes. Change the nsslapd-maxbersize attribute in cn=config to increase.
限制适用于 LDAP 请求的总大小。例如,如果请求要添加条目,并且请求中的条目大于配置的值或默认值,则拒绝添加请求。但是,这个限制不适用于复制进程。在更改此属性前请小心。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-maxbersize
参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-maxbersize
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-maxbersize Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-maxbersize: 2097152
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改
nsslapd-maxbersize
属性的值。这个示例将值增加到4194304
,4 MB。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-maxbersize=4194304
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-maxbersize=4194304
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-maxbersize"
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-maxbersize"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
nsslapd-maxbersize
调整为不同的值,或者重新使用默认的2097152
。
验证
显示
nsslapd-maxbersize
属性的值,并将其设置为您所需的值。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-maxbersize
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-maxbersize Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-maxbersize: 4194304
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7. 调整 IdM 目录服务器中文件描述符的最大数量 复制链接链接已复制到粘贴板!
可以为 /etc/systemd/system.conf
文件中的 DefaultLimitNOFILE
参数定义一个值。具有 root
特权的管理员可使用 setrlimit
命令为 ns-slapd
进程的 DefaultLimitNOFILE
参数设置一个较低的值。然后,这个值优先于 /etc/systemd/system.conf
中的值,并被身份管理(IdM)目录服务器(DS)作为 nsslapd-maxdescriptors
属性的值所接受。
nsslapd-maxdescriptors
属性设置 IdM LDAP 使用的最大的、独立于平台的文件描述符数。文件描述符用于客户端连接、日志文件、套接字和其他资源。
如果没有在 /etc/systemd/system.conf
中或通过 setrlimit
定义任何值,则 IdM DS 会将 nsslapd-maxdescriptors
属性设置为 1048576。
如果 IdM DS 管理员稍后决定为 nsslapd-maxdescriptors
手动设置一个新值,则 IdM DS 会将新值与 setrlimit
或 /etc/systemd/system.conf
中本地定义的值进行比较,结果如下:
-
如果
nsslapd-maxdescriptors
的新值大于本地定义的值,则服务器会拒绝新值设置,并继续将本地限制值强制为高水位值。 - 如果新值低于本地定义的值,则将使用新值。
此流程描述了如何为 nsslapd-maxdescriptors
设置新值。
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-maxdescriptors
参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-maxdescriptors
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-maxdescriptors Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-maxdescriptors: 4096
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改
nsslapd-maxdescriptors
属性的值。这个示例将值增加到8192
。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-maxdescriptors=8192
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-maxdescriptors=8192
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-maxdescriptors"
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-maxdescriptors"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤并将
nsslapd-maxdescriptors
调整为不同的值,或者重新使用默认的4096
。
验证
显示
nsslapd-maxdescriptors
属性的值,并验证它已设置为您所需的值。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-maxdescriptors
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-maxdescriptors Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-maxdescriptors: 8192
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.8. 调整 IdM 目录服务器中的连接积压大小 复制链接链接已复制到粘贴板!
侦听服务设定可用于接收进入的连接的套接字的数量。nsslapd-listen-backlog-size
值代表,在拒绝连接前 sockfd
socket 队列的最大长度。
如果您的 IdM 环境处理大量连接,请考虑增加 nsslapd-listen-backlog-size
的值。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-listen-backlog-size
参数的当前值,并在进行任何调整前记录它,以备需要恢复时使用。提示时输入 Directory Manager 密码。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-listen-backlog-size
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-listen-backlog-size Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-listen-backlog-size: 128
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改
nsslapd-listen-backlog-size
属性的值。这个示例将值增加到192
。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-listen-backlog-size=192
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-listen-backlog-size=192
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-listen-backlog-size"
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-listen-backlog-size"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示
nsslapd-listen-backlog-size
属性的值,并验证它已设置为您所需的值。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-listen-backlog-size
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-listen-backlog-size Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-listen-backlog-size: 192
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.9. 调整 IdM 目录服务器中数据库锁定的最大数量 复制链接链接已复制到粘贴板!
锁定机制控制目录服务器进程可以同时运行多少个副本,nsslapd-db-locks
参数设置最大锁定数。
如果您在 /var/log/dirsrv/slapd- <instance_name> /errors 日志文件中看到以下出错信息,请增加
最大锁定数:
libdb: Lock table is out of available locks
libdb: Lock table is out of available locks
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-db-locks
参数的当前值,并在需要恢复任何调整前记录它。ldapsearch -D "cn=Directory Manager" -w <directory_manager_password> -b "cn=bdb,cn=config,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-db-locks
[root@server ~]# ldapsearch -D "cn=Directory Manager" -w <directory_manager_password> -b "cn=bdb,cn=config,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-db-locks nsslapd-db-locks: 50000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改
locks
属性的值。这个示例将值加倍到100000
个锁定。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend config set --locks=100000
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend config set --locks=100000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully updated database configuration
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully updated database configuration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 Directory 服务器。
systemctl restart dirsrv.target
[root@server ~]# systemctl restart dirsrv.target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示
nsslapd-db-locks
属性的值,并将其设置为您所需的值。ldapsearch -D "cn=directory manager" -w <directory_manager_password> -b "cn=bdb,cn=config,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-db-locks
[root@server ~]# ldapsearch -D "cn=directory manager" -w <directory_manager_password> -b "cn=bdb,cn=config,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-db-locks nsslapd-db-locks: 100000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.10. 在 IdM 目录服务器中禁用 Transparent Huge Pages 功能 复制链接链接已复制到粘贴板!
默认在 RHEL 上启用透明巨页(THP) Linux 内存管理功能。THP 功能可能会降低 IdM 目录服务器(DS)性能,因为 DS 具有稀疏的内存访问模式。
如何禁用该功能,请参阅 Red Hat Directory Server 13 文档中的 禁用 Transparent Huge Pages 功能。
7.11. 调整 IdM 目录服务器中的输入/输出块超时 复制链接链接已复制到粘贴板!
nsslapd-ioblocktimeout
属性代表一个时间(以毫秒为单位),在经过这个时间后到停滞的 LDAP 客户端的连接将关闭。当 LDAP 客户端没有为读或写操作进行任何 I/O 处理时,它被视为已停止工作。
降低 nsslapd-ioblocktimeout
属性的值可以更早地释放连接。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-ioblocktimeout
参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-ioblocktimeout
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-ioblocktimeout Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-ioblocktimeout: 10000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改
nsslapd-ioblocktimeout
属性的值。这个示例将值降低为8000
。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-ioblocktimeout=8000
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-ioblocktimeout=8000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on _ldap://server.example.com_: Successfully replaced "nsslapd-ioblocktimeout"
Enter password for cn=Directory Manager on _ldap://server.example.com_: Successfully replaced "nsslapd-ioblocktimeout"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
nsslapd-ioblocktimeout
调整为不同的值,或者重新使用默认的10000
。
验证
显示
nsslapd-ioblocktimeout
属性的值,并将其设置为您所需的值。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-ioblocktimeout
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-ioblocktimeout Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-idletimeout: 8000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.12. 在 IdM 目录服务器中调整闲置连接超时 复制链接链接已复制到粘贴板!
nsslapd-idletimeout
属性以秒为单位设置闲置 LDAP 客户端连接被 IdM 服务器关闭的时间长度(以秒为单位)。0
表示服务器永远不会关闭闲置连接。
红帽建议调整这个值,以便过时的连接关闭,但活跃的连接不会永久关闭。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-idletimeout
参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-idletimeout
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-idletimeout Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-idletimeout: 3600
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改
nsslapd-idletimeout
属性的值。这个示例将值降低为1800
(30 分钟)。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-idletimeout=1800
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-idletimeout=1800
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-idletimeout"
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-idletimeout"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
nsslapd-idletimeout
调整为不同的值,或者重新使用默认的3600
。
验证
显示
nsslapd-idletimeout
属性的值,并将其设置为您所需的值。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-idletimeout
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config get nsslapd-idletimeout Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-idletimeout: 3600
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.13. 调整复制发行超时 复制链接链接已复制到粘贴板!
IdM 副本在带有另一个副本的复制会话中被锁定。在一些环境中,因为大型更新或网络拥塞导致副本长时间锁定,这会增加复制延迟。
您可以通过调整 repl-release-timeout
参数在固定时间后发布副本。红帽建议将此值设置为 30
到 120
之间:
- 如果值设置过低,则副本会持续重新分配另一个,并且副本无法发送较大的更新。
-
较长的超时可以改进高流量的情况。在高流量的情况中,一个服务器可以在较长的时间内独家访问一个副本是最佳的,但如果高于
120
秒则会减慢复制速度。
默认值 |
|
有效范围 |
|
推荐的范围 |
|
先决条件
- LDAP Directory Manager 密码
流程
显示数据库后缀及其对应的后端。
dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix list
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix list cn=changelog (changelog) dc=example,dc=com (userroot) o=ipaca (ipaca)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令会在后缀旁的显示后端数据库名称。在下一步中使用后缀名称。
修改主 userroot 数据库的
repl-release-timeout
属性的值。这个示例将值增加到90
秒。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> replication set --suffix="dc=example,dc=com" --repl-release-timeout=90
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> replication set --suffix="dc=example,dc=com" --repl-release-timeout=90
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "repl-release-timeout"
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "repl-release-timeout"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果您的 IdM 环境使用 IdM 证书颁发机构(CA),则您可以修改 CA 数据库的
repl-release-timeout
属性的值。这个示例将值增加到90
秒。dsconf -D "cn=Directory Manager" ldap://<server_fqdn> replication set *--suffix="o=ipaca" --repl-release-timeout=90*
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> replication set *--suffix="o=ipaca" --repl-release-timeout=90* Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "repl-release-timeout"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 Directory 服务器。
systemctl restart dirsrv.target
[root@server ~]# systemctl restart dirsrv.target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
repl-release-timeout
调整为不同的值,或者返回默认值60
秒。
验证
显示
nsds5ReplicaReleaseTimeout
属性的值,并验证它已设置为您的所需值。ldapsearch -D "cn=Directory Manager" -w <directory_manager_password> -b "cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config" | grep nsds5ReplicaReleaseTimeout
[root@server ~]# ldapsearch -D "cn=Directory Manager" -w <directory_manager_password> -b "cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config" | grep nsds5ReplicaReleaseTimeout nsds5ReplicaReleaseTimeout: 90
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
本例中后缀的可辨识名称为 dc=example,dc=com
,但等号(=
)和逗号(,
)必须在 ldapsearch
命令中进行转义。
使用以下转义字符将后缀 DN 转换为 cn=dc\3Dexample\2Cdc\3Dcom
:
-
\3D
替换=
-
\2C
替换,
第 8 章 调整 KDC 的性能 复制链接链接已复制到粘贴板!
要优化 Kerberos 密钥分发中心(KDC)的性能,它负责验证用户、主机和服务,根据您的部署的流量模式调整密钥参数。
8.1. 调整 KDC 侦听队列的长度 复制链接链接已复制到粘贴板!
您可以通过在 /var/kerberos/krb5kdc/kdc.conf
文件的 [kdcdefaults]
部分中设置 kdc_tcp_listen_backlog
选项来调整 KDC 守护进程的监听队列长度的大小。对于某些有大量 Kerberos 流量的 IdM 部署,默认值 5
可能太低,但如果设置的值太高会降低性能。
默认值 |
|
有效范围 |
|
流程
-
在文本编辑器中打开
/var/kerberos/krb5kdc/kdc.conf
文件。 将 TCP 侦听功能设置为所需值,如
7
。[kdcdefaults] ... kdc_tcp_listen_backlog = 7
[kdcdefaults] ... kdc_tcp_listen_backlog = 7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存并关闭
/var/kerberos/krb5kdc/kdc.conf
文件。 - 重启 KDC 来加载新设置。
8.2. 每个域控制 KDC 行为的选项 复制链接链接已复制到粘贴板!
为了跟踪每个 Kerberos 域的锁定和解锁用户帐户,KDC 会在每个成功和身份验证失败后写入其数据库。通过调整 /etc/krb5.conf
文件的 [dbmodules]
部分中的以下选项,您可以最大程度减少 KDC 写入信息的频率来提高性能。
- disable_last_success
如果设置为
true
,这个选项会阻止 KDC 更新到需要预身份验证的主条目的Last successful authentication
字段。Expand 默认值
false
有效范围
true
或false
- disable_lockout
如果设置为
true
,这个选项会阻止 KDC 更新到需要预身份验证的主条目的Last failed authentication
和Failed password attempts
字段。设置此标志可能会提高性能,但禁用帐户锁定可能会被视为安全风险。Expand 默认值
false
有效范围
true
或false
8.3. 根据每个域(realm)调整 KDC 设置 复制链接链接已复制到粘贴板!
通过修改 /etc/krb5.conf
文件来调整特定 Kerberos 域的 KDC 设置。
流程
-
在文本编辑器中打开
/etc/krb5.conf
文件。 在
[dbmodules]
部分中指定任意选项及其所需值,并在相应的 Kerberos 域中指定。在本例中,您要为 <kerberos_realm> 设置
变量,如 EXAMPLE.COM。disable_last_
success[dbmodules] <kerberos_realm> = { disable_last_success = true }
[dbmodules] <kerberos_realm> = { disable_last_success = true }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存并关闭
/etc/krb5.conf
文件。 - 重启 KDC 来加载新设置。
8.4. 调整 krb5kdc 进程的数量 复制链接链接已复制到粘贴板!
您可以手动调整密钥分发中心(KDC)开始处理进入的连接的进程数。
默认情况下,IdM 安装程序检测到 CPU 内核数,并在 /etc/sysconfig/krb5kdc
文件中输入值。例如,该文件可能包含以下条目:
KRB5KDC_ARGS='-w 2' [...]
KRB5KDC_ARGS='-w 2'
[...]
在这个示例中,KRB5KDC_ARGS
参数设为 -w 2
,KDC 会启动两个独立的进程来处理来自主进程的进入连接。您可能想要调整这个值,特别是在虚拟环境中,您可以根据您的要求轻松添加或删除虚拟 CPU 的数量。为了防止性能问题,甚至 IdM 服务器因为端口 88 上的不断增加 TCP/IP 队列而变得没有响应,请通过手动将 KRB5KDC_ARGS
参数设置为更高值来模拟更多进程。
流程
-
在文本编辑器中打开
/etc/sysconfig/krb5kdc
文件。 指定
KRB5KDC_ARGS
参数的值。在本例中,您要将进程数设置为 10:KRB5KDC_ARGS='-w 10' [...]
KRB5KDC_ARGS='-w 10' [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存并关闭
/etc/sysconfig/krb5kdc
文件。 重新载入 systemd 配置:
systemctl daemon-reload
# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启
krb5kdc
服务:systemctl restart krb5kdc.service
# systemctl restart krb5kdc.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以使用 IdM Healthcheck 工具来验证 KDC 是否已被配置为使用最佳数量的 worker 进程。请参阅使用 IdM Healthcheck 验证 KDC worker 进程的最佳数量。
第 9 章 为大型 IdM-AD 信任部署调整 SSSD 性能 复制链接链接已复制到粘贴板!
对于系统安全服务守护进程 (SSSD),检索用户和组群信息会涉及大量数据操作,特别是在带有信任到大型 Active Directory (AD) 域的 IdM 部署中。提高此性能的方法是,调整 SSSD 从身份提供程序检索哪些信息,以及进行多久。
9.1. 为大型 IdM-AD 信任部署在 IdM 服务器中调整 SSSD 复制链接链接已复制到粘贴板!
将调优选项应用到 IdM 服务器中 SSSD 服务的配置,以便在从大型 AD 环境检索信息时改进其响应时间。
先决条件
-
您需要
root
权限来编辑/etc/sssd/sssd.conf
配置文件。
流程
-
在文本编辑器中打开
/etc/sssd/sssd.conf
配置文件。 将以下选项添加到您身份管理(IdM)域的
[domain]
部分:[domain/<idm_domain_name>] ignore_group_members = true subdomain_inherit = ignore_group_members ...
[domain/<idm_domain_name>] ignore_group_members = true subdomain_inherit = ignore_group_members ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意subdomain_inherit
选项中列出的设置适用于主(IdM)域和可信 AD 域。-
保存并关闭服务器上的
/etc/sssd/sssd.conf
文件。 重启 SSSD 服务以载入配置更改。
systemctl restart sssd
[root@client ~]# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2. 在 IdM 服务器中调整 ipa-extdom 插件的配置超时 复制链接链接已复制到粘贴板!
IdM 客户端无法直接从 Active Directory(AD)接收用户和组的信息,因此 IdM 服务器使用 ipa-extdom
插件接收 AD 用户和组的信息,并将这些信息转发到请求的客户端。
ipa-extdom
插件向 SSSD 发送有关 AD 用户的数据的请求。如果信息不在 SSSD 缓存中,SSSD 会从 AD 域控制器(DC)请求数据。您可以调整 config 超时值,它定义 ipa-extdom
插件在插件取消连接前等待 SSSD 的回复,并将超时错误返回给调用者。默认值为 10000 毫秒(10 秒)。
以下示例将配置超时调整为 20 秒(20000 毫秒)。
调整配置超时时要非常谨慎:
- 如果您设置了太小的值(如 500 毫秒),SSSD 可能没有足够的时间来回复,请求始终会返回超时。
- 如果您设置了太大的值,如 30000 毫秒(30 秒),则单个请求可能会阻止到 SSSD 的连接。因为一个线程一次只能连接到 SSSD,所以来自插件的所有其他请求都必须等待。
- 如果 IdM 客户端发送了多个请求,它们可以阻止为 IdM 服务器上的 Directory 服务器配置的所有可用 worker。因此,服务器可能无法在一段时间内回复任何类型的请求。
只在以下情况下更改配置超时:
- 在请求 AD 用户和组的信息时,如果 IdM 客户端会在达到自己的搜索超时前频繁收到超时错误,这代表配置超时值太小。
-
如果 IdM 服务器上的 Directory Server 经常会锁定,
pstack
程序报告有很多或所有 worker 线程在处理ipa-extdom
请求,这代表这个值 太大。
先决条件
- LDAP Directory Manager 密码
流程
使用以下命令将配置超时调整为 20000 毫秒:
ldapmodify -D "cn=Directory Manager" -W
# ldapmodify -D "cn=Directory Manager" -W dn: cn=ipa_extdom_extop,cn=plugins,cn=config changetype: modify replace: ipaExtdomMaxNssTimeout ipaExtdomMaxNssTimeout: 20000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3. 在 IdM 服务器中调整 ipa-extdom 插件的最大缓冲区大小 复制链接链接已复制到粘贴板!
IdM 客户端无法直接从 Active Directory(AD)接收用户和组的信息,因此 IdM 服务器使用 ipa-extdom
插件接收 AD 用户和组的信息,并将这些信息转发到请求的客户端。
您可以调整 ipa-extdom
插件的最大缓冲区大小,它调整 SSSD 可以存储它接收数据的缓冲区的大小。如果缓冲区太小,SSSD 会返回 ERANGE
错误,并且插件会以更大的缓冲区重试请求。默认缓冲区大小为 134217728 字节(128 MB)。
以下示例将最大缓冲区大小调整为 256 MB(268435456 字节)。
先决条件
- LDAP Directory Manager 密码
流程
使用以下命令将最大缓冲区大小设置为 268435456 字节:
ldapmodify -D "cn=Directory Manager" -W
# ldapmodify -D "cn=Directory Manager" -W dn: cn=ipa_extdom_extop,cn=plugins,cn=config changetype: modify replace: ipaExtdomMaxNssBufSize ipaExtdomMaxNssBufSize: 268435456
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4. 在 IdM 服务器上调整 ipa-extdom 插件的最大实例数 复制链接链接已复制到粘贴板!
因为 IdM 客户端无法直接从活动目录(AD)接收用户和组的信息,所以 IdM 服务器使用 ipa-extdom
插件接收 AD 用户和组的信息,然后将此信息转发到请求的客户端。
默认情况下,ipa-extdom
插件被配置为使用最多 80% 的 LDAP worker 线程来处理 IdM 客户端的请求。如果 IdM 客户端上的 SSSD 服务请求了大量有关 AD 信任用户和组的信息,如果其使用大多数 LDAP 线程,则此操作可以停止 LDAP 服务。如果您遇到这些问题,您可能会在 AD 域的 SSSD 日志文件中看到类似的错误: /var/log/sssd/sssd__<your-ad-domain-name.com>_.log
:
(2022-05-22 5:00:13): [be[ad.example.com]] [ipa_s2n_get_user_done] (0x0040): s2n exop request failed. (2022-05-22 5:00:13): [be[ad.example.com]] [ipa_s2n_get_user_done] (0x0040): s2n exop request failed. (2022-05-22 5:00:13): [be[ad.example.com]] [ipa_s2n_exop_done] (0x0040): ldap_extended_operation result: Server is busy(51), Too many extdom instances running.
(2022-05-22 5:00:13): [be[ad.example.com]] [ipa_s2n_get_user_done] (0x0040): s2n exop request failed.
(2022-05-22 5:00:13): [be[ad.example.com]] [ipa_s2n_get_user_done] (0x0040): s2n exop request failed.
(2022-05-22 5:00:13): [be[ad.example.com]] [ipa_s2n_exop_done] (0x0040): ldap_extended_operation result: Server is busy(51), Too many extdom instances running.
您可以通过为 ipaExtdomMaxInstances
选项设置值来调整 ipa-extdom
实例的最大数,它必须是大于 0 的整数,且小于 worker 线程总数。
先决条件
- LDAP Directory Manager 密码
流程
检索总 worker 线程数:
ldapsearch -xLLLD cn=Directory\ Manager -W -b cn=config -s base nsslapd-threadnumber
# ldapsearch -xLLLD cn=Directory\ Manager -W -b cn=config -s base nsslapd-threadnumber Enter LDAP Password: dn: cn=config nsslapd-threadnumber: 16
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这意味着
ipaExtdomMaxInstances
的当前值是 13。调整实例的最大数。这个示例将值改为 14:
ldapmodify -D "cn=Directory Manager" -W
# ldapmodify -D "cn=Directory Manager" -W dn: cn=ipa_extdom_extop,cn=plugins,cn=config changetype: modify replace: ipaExtdomMaxInstances ipaExtdomMaxInstances: 14
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索
ipaExtdomMaxInstances
的当前值:ldapsearch -xLLLD "cn=Directory Manager" -W -b "cn=ipa_extdom_extop,cn=plugins,cn=config" |grep ipaextdommaxinstances
# ldapsearch -xLLLD "cn=Directory Manager" -W -b "cn=ipa_extdom_extop,cn=plugins,cn=config" |grep ipaextdommaxinstances Enter LDAP Password: ipaextdommaxinstances: 14
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
监控 IdM 目录服务器的性能,如果不改进,请重复这个过程并调整
ipaExtdomMaxInstances
变量的值。
9.5. 为大型 IdM-AD 信任部署在 IdM 客户端中调整 SSSD 复制链接链接已复制到粘贴板!
在 IdM 客户端中对 SSSD 服务配置应用调整选项,以便在从大型 AD 环境检索信息时改进其响应时间。
先决条件
-
您需要
root
权限来编辑/etc/sssd/sssd.conf
配置文件。
流程
确定单个未缓存登录所需的秒数。
清除 IdM 客户端上的 SSSD 缓存。
sss_cache -E
[root@client_hostname ~]# sss_cache -E
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
time
命令测量 AD 用户的登录时间。在 IdM 客户端中,通过登录到同一主机以 AD 用户进行身份验证。time ssh <ad_username>@<ad_domain>@<client_fqdn>
[root@client_hostname ~]# time ssh <ad_username>@<ad_domain>@<client_fqdn>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 尽快输入密码。
Password: Last login: Sat Jan 23 06:29:54 2021 from 10.0.2.15 [ad_username@ad_domain@client_fqdn ~]$
Password: Last login: Sat Jan 23 06:29:54 2021 from 10.0.2.15 [ad_username@ad_domain@client_fqdn ~]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 尽快注销以显示已经过的时间。在本例中,单个未缓存的登录大约需要
9
秒。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在文本编辑器中打开
/etc/sssd/sssd.conf
配置文件。 在您的 Active Directory 域的
[domain]
部分添加以下选项。将pam_id_timeout
和krb5_auth_timeout
选项设置为未缓存登录所需的秒数。如果您还没有 AD 域的 domain 部分,请创建一个。[domain/<idm_domain>/<ad_domain>] krb5_auth_timeout = 9 ldap_deref_threshold = 0 ...
[domain/<idm_domain>/<ad_domain>] krb5_auth_timeout = 9 ldap_deref_threshold = 0 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
[pam]
部分添加以下选项:[pam] pam_id_timeout = 9
[pam] pam_id_timeout = 9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存并关闭服务器上的
/etc/sssd/sssd.conf
文件。 重启 SSSD 服务以载入配置更改。
systemctl restart sssd
[root@client_hostname ~]# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.6. 在 tmpfs 中挂载 SSSD 缓存 复制链接链接已复制到粘贴板!
系统安全服务守护进程(SSSD)持续将 LDAP 对象写入其缓存中。这些内部 SSSD 事务将数据写入磁盘,它的速度比从 Random-Access Memory(RAM)进行读取和写入要慢。
要提高此性能,请在 RAM 中挂载 SSSD 缓存。
开始前,请考虑以下事项:
- 如果 SSSD 缓存位于 RAM,则缓存的信息不会在重启后保留。
- 在 IdM 服务器上执行此更改是安全的,因为 IdM 服务器中的 SSSD 实例不会丢失与同一主机上 Directory 服务器的连接。
- 如果您在 IdM 客户端中执行此调整,且丢失了与 IdM 服务器的连接,则用户重启后将无法进行身份验证,直到重新建立连接为止。
先决条件
-
您需要
root
权限来编辑/etc/fstab
配置文件。
流程
创建
tmpfs
临时文件系统:确认 SSSD 用户拥有
config.ldb
文件:ls -al /var/lib/sss/db/config.ldb
# ls -al /var/lib/sss/db/config.ldb -rw-------. 1 *sssd sssd* 1286144 Jun 8 16:41 /var/lib/sss/db/config.ldb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下条目添加到
/etc/fstab
文件中作为一行:tmpfs /var/lib/sss/db/ tmpfs size=300M,mode=0700,uid=sssd,gid=sssd,rootcontext=system_u:object_r:sssd_var_lib_t:s0 0 0
tmpfs /var/lib/sss/db/ tmpfs size=300M,mode=0700,uid=sssd,gid=sssd,rootcontext=system_u:object_r:sssd_var_lib_t:s0 0 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
这个示例创建了一个 300MB 缓存。根据您的 IdM 和 AD 目录大小调整
size
参数,每个 10,000 LDAP 条目大约为 100 MBs。挂载新的 SSSD 缓存目录。
mount /var/lib/sss/db/
[root@host ~]# mount /var/lib/sss/db/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 SSSD 以反应这个配置更改。
systemctl restart sssd
[root@host ~]# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.7. sssd.conf 中用于为大型 IdM-AD 信任部署调整 IdM 服务器和客户端中的选项 复制链接链接已复制到粘贴板!
当您有大型 IdM-AD 信任部署时,您可以使用 /etc/sssd/sssd.conf
配置文件中的 SSSD 的性能调整 IdM 服务器和客户端中的性能。
9.7.1. IdM 服务器的调整选项 复制链接链接已复制到粘贴板!
- ignore_group_members
在验证和授权用户时,了解用户所属的组而不是属于组的所有用户是非常重要地。当将
ignore_group_members
设为true
时,SSSD 只检索关于组对象本身而不是其成员的信息,从而显著提高性能。注意id user@ad-domain.com
命令仍然会返回正确的组列表,但getent group ad-group@ad-domain.com
会返回一个空列表。Expand 默认值
false
推荐的值
true
注意当部署涉及带有 compat 树的 IdM 服务器时,您不应该将这个选项设置为
true
。- subdomain_inherit
使用
subdomain_inherit
选项,您可以将ignore_group_members
设置应用到可信 AD 域的配置。subdomain_inherit
选项中列出的设置适用于主(IdM)域以及 AD 子域。Expand 默认值
none
推荐的值
subdomain_inherit = ignore_group_members
9.7.2. IdM 客户端的调优选项 复制链接链接已复制到粘贴板!
- pam_id_timeout
此参数控制 PAM 会话的结果被缓存多长时间,以避免在身份查找期间到身份提供程序的过多往返。在 IdM 服务器和 IdM 客户端中填充复杂组成员资格的环境中,默认值
5
秒可能不足。红帽建议将pam_id_timeout
设置为一个未缓存的单个登录所需的秒数。Expand 默认值
5
推荐的值
单个未缓存登录所需的秒数
- krb5_auth_timeout
对于存在用户是大量组的成员的环境,增加
krb5_auth_timeout
可以允许更多的时间来处理复杂的组信息。红帽建议把这个值设置为一个未缓存的登录所花的秒数。Expand 默认值
6
推荐的值
单个未缓存登录所需的秒数
- ldap_deref_threshold
解引用查找是在单个 LDAP 调用中获取所有组成员的方法。
ldap_deref_threshold
值指定内部缓存中必须缺少的组成员数,以触发无引用查找。如果缺少的成员较少,则会单独查找。在大型环境中,解引用查找可能需要很长时间,并降低性能。要禁用解引用查找,将此选项设置为0
。Expand 默认值
10
推荐的值
0
第 10 章 调优 WSGI 进程 复制链接链接已复制到粘贴板!
如果您因为长时间运行的 API 进程而看到请求失败,则这些 API 进程可以从调优中受益。
默认情况下,IPA 为 64 位系统上的 API 服务分配 4 个 Web 服务器网关接口(WSGI)进程。出于内存保留目的,实施 4 个进程的默认限制。增加 WSGI 进程数允许接受更多请求,代价是更高的 CPU 使用和内存消耗。默认情况下,IPA 对每个 WSGI 进程的 IPA 使用大约 100 到 110MB 的驻留内存。在将此调优到 16 个进程(这是推荐的限制)后,驻留内存大约为 1.3GB。
10.1. 流程 复制链接链接已复制到粘贴板!
修改
/etc/httpd/conf.d/ipa.conf
文件中的进程值:WSGIDaemonProcess ipa processes=<4> threads=1 maximum-requests=500 \
WSGIDaemonProcess ipa processes=<4> threads=1 maximum-requests=500 \
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
任何长时间运行的 API 端点都可以从调优中受益。这个调优决定由用户做出。
例如,OpenStack 安装由包含多个服务的多个控制器组成。每个服务都请求一个证书,以便所有内部通信都通过传输层安全(TLS)发生。安装或刷新控制器或计算节点时,可以请求或刷新这些证书。在涉及多个控制器或计算节点的场景中,请求证书的量可能会变得非常大。这些请求是自动的,因此它们几乎同时发生。增加 WSGI 线程数允许安装完成。
10.2. 为改进的 IPA 服务器性能优化 CPU 使用率 复制链接链接已复制到粘贴板!
在大量证书颁发任务过程中遇到性能限制时,调优 CPU 和 Web 服务器网关接口(WSGI)进程数可以显著增强 IPA 服务器处理同时请求的能力。
如果服务器配置了 4 个 CPU 和 70 个客户端,每个客户端请求 7 个证书(总共 490 个证书),会发生服务器超时,因为请求数量超过服务器的处理量。
将 CPU 数增加到 8 个,并将 WSGI 进程数匹配到 8 个,会将证书处理量增加到 630 个证书,比 4 个 CPU 配置增加了 28%,尽管 CPU 数增加了 100%。将 CPU 数量进一步增加到 16 个,显示仅使用 8 个 WSGI 进程没有增加额外的性能。但是,通过将 WSGI 进程数增加到 16 个,服务器处理了 110 个客户端的 770 证书,与 8 个 CPU 设置相比,反映了 22% 的提升。
平均而言,CPU 数增加一倍会导致证书颁发量增加 25% ,只要相应地调优 WSGI 进程。这强调了在一起扩展 CPU 和 WSGI 进程的需要,以防止瓶颈并优化服务器性能。