调优身份管理中的性能
优化 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 API | 325 |
| 客户端身份验证 | 身份验证开始失败前可以同时验证的 IdM 客户端的最大数。 | 800 |
| 将成员添加到用户组 | 推荐的您可以在组中添加的成员数,而不超过向组添加新成员的时间。IdM 有一个两秒规则,来作为将成员添加到组中的正常时间段。您可以添加更多成员,但操作的时间将逐渐延长。 | 1500 |
第 4 章 IdM 中的故障转移、负载平衡和高可用性 复制链接链接已复制到粘贴板!
身份管理(IdM)为 IdM 客户端提供了内置的故障转移机制,为 IdM 服务器提供了负载平衡和高可用性功能。
客户端故障转移功能
默认情况下,IdM 客户端中的 SSSD 服务被配置为使用 DNS 服务(SRV)资源记录,以便客户端可以自动决定要连接的最佳 IdM 服务器。
主和备份服务器配置
服务器解析行为由 /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>
...
指定 _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>
...
IdM 服务器和服务的故障转移行为
SSSD 故障转移机制独立对待 IdM 服务器及其服务。如果服务器的主机名解析成功,SSSD 会认为机器在线,并尝试连接到该机器上所需的服务。如果与服务的连接失败,SSSD 只会将该特定服务视为离线,而不会将整个机器或其上的其他服务视为离线。
如果主机名解析失败,SSSD 会将整个机器视为离线,且不会尝试连接到该机器上的任何服务。
当所有主服务器都不可用时,SSSD 会尝试连接到配置的备份服务器。当连接到备份服务器时,SSSD 会定期尝试重新连接到其中一个主服务器,并在主服务器可用时立即连接。这些尝试之间的间隔由 failover_primary_timeout 选项控制,该选项默认为 31 秒。
如果所有 IdM 服务器都无法访问,SSSD 会切换到离线模式。在这个状态中,SSSD 每 30 秒重试一次连接,直到服务器变为可用为止。
服务器端负载平衡和服务可用性
您可以通过安装多个 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 副本的指南 复制链接链接已复制到粘贴板!
- 将每个副本连接到至少两个其他副本
- 这确保信息不仅在安装的初始副本和第一个服务器之间复制,而且还在其他副本之间复制。
- 将副本连接到最多四个其他副本(这并不是硬要求)
每个服务器有大量的复制协议不会带来很大的好处。接收副本一次只能被另外一个副本更新,而其他复制协议则处于闲置状态。每个副本有超过四个复制协议通常意味着资源不足。
注意本建议适用于证书复制协议和域复制协议。
每个副本有四个复制协议的限制有两个例外:
- 如果某些副本没有在线或没有响应时,您需要使用故障切换路径。
- 在大型部署中,您需要特定节点间的其他直接链接。
配置大量复制协议可能会对整体性能造成负面影响:当拓扑中的多个复制协议正在发送更新时,某些副本可能会在进入更新和传出更新之间在更改日志数据库文件出现高竞争。
如果您决定每个副本使用更多复制协议,请确保您没有遇到复制问题和延迟。但请注意,但距离大及存在大量中间节点时也可能造成延迟问题。
- 相互连接数据中心中的副本
- 这样可保证数据中心中的域复制。
- 将每个数据中心连接到至少两个其他数据中心
- 这样可确保数据中心间的域复制。
- 至少使用一对复制协议连接数据中心
- 如果数据中心 A 和 B 有从 A1 到 B1 的复制协议,当存在从 A2 到 B2 的复制协议时,可确保其中一个服务器停止工作时复制可在两个数据中心之间继续。
5.3. 副本拓扑示例 复制链接链接已复制到粘贴板!
您可以使用以下示例之一创建一个可靠的副本拓扑。
图 5.1. 具有四个数据中心的副本拓扑,每个数据中心具有与复制协议连接的四个服务器
图 5.2. 具有三个数据中心的副本拓扑,每个数据中心都有不同数量的服务器,它们通过复制协议互连
5.4. 从 IdM 服务器卸载 IdM CA 服务 复制链接链接已复制到粘贴板!
如果您的拓扑中有超过四个身份管理(IdM)副本,并且由于冗余证书复制而遇到性能问题,请从 IdM 副本中删除冗余 CA 服务实例。要做到这一点,您必须首先完全弃用受影响的 IdM 副本,然后在它们上重新安装 IdM,而无需 CA 服务。
虽然您可以将 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 Search time limit: 2 Search size limit: 100要为所有查询调整 全局 限制,请使用
ipa config-mod命令,并添加--searchrecordslimit和--searchtimelimit选项。例如:$ ipa config-mod --searchrecordslimit=500 --searchtimelimit=5要仅为特定查询 暂时 调整限制,请在命令中添加
--sizelimit或--timelimit选项。例如:$ ipa user-find --sizelimit=200 --timelimit=120
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.
红帽建议在内存中适合条目缓存和数据库索引条目缓存。
| 默认值 |
|
| 有效范围 |
|
| 条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
禁用自动缓存调整。
[root@server ~]# 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 suffix list cn=changelog (changelog) dc=example,dc=com (userroot) o=ipaca (ipaca)这个命令显示每个后缀旁的后端数据库名称。在下一步中使用后缀的数据库名称。
为数据库设置条目缓存大小。这个示例将 userroot 数据库的条目缓存设置为 2GB。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix set --cache-memsize=2147483648 userroot重启 Directory 服务器。
[root@server ~]# systemctl restart dirsrv.target-
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
cache-memsize调整为不同的值,或者重新启用缓存自动大小。
验证
显示
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
7.2. 调整 IdM 目录服务器中的数据库索引缓存大小 复制链接链接已复制到粘贴板!
不要更改此设置,除非您有强烈需要应用自定义值。IdM 目录服务器使用内置缓存自动大小功能来优化性能。
nsslapd-dbcachesize 属性控制数据库索引使用的内存量。这个缓存大小对 Directory 服务器性能的影响比条目缓存大小的影响要小,但如果设置条目缓存大小后有可用的 RAM,红帽建议增加分配给数据库缓存的内存量。
数据库缓存限制为 1.5 GB RAM,因为更高的值并不会提高性能。
| 默认值 |
|
| 有效范围 |
|
| 条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
禁用自动缓存调整,并设置数据库缓存大小。这个示例将数据库缓存设置为 256MB。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend config set --cache-autosize=0 --dbcachesize=268435456重启 Directory 服务器。
[root@server ~]# systemctl restart dirsrv.target-
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
dbcachesize调整为不同的值,或者重新启用缓存自动大小。
验证
显示
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
7.3. 在 IdM 目录服务器中重新启用数据库和条目缓存自动大小 复制链接链接已复制到粘贴板!
使用内置缓存自动调整大小功能来优化性能。不要手动设置缓存大小。
默认情况下,IdM Directory 服务器会自动决定数据库缓存和条目缓存的最佳大小。自动的设置会忽略一部分可用 RAM,并在实例启动时根据服务器的硬件资源优化这两个缓存的大小。
使用这个流程取消自定义数据库缓存和条目缓存值,并将缓存自动大小功能恢复到默认值。
|
|
这个设置控制为自动分配数据库和条目缓存而分配的可用 RAM 量。 |
| 默认值 |
|
| 有效范围 |
|
| 条目 DN 位置 |
|
|
|
这个值设定由 |
| 默认值 |
|
| 有效范围 |
|
| 条目 DN 位置 |
|
先决条件
- 之前您已经禁用了数据库和条目缓存自动扩展。
流程
停止 Directory 服务器。
[root@server ~]# systemctl stop dirsrv.target在进行任何进一步修改前,备份
/etc/dirsrv/slapd-<instance_name> /dse.ldif文件。[root@server ~]# cp /etc/dirsrv/slapd-<instance_name>/dse.ldif \ /etc/dirsrv/slapd-<instance_name>/dse.ldif.bak.$(date "+%F_%H-%M-%S")编辑
/etc/dirsrv/slapd-<instance_name> /dse.ldif文件:设置用于数据库的可用系统 RAM 百分比,恢复默认的 10% 可用 RAM。
nsslapd-cache-autosize: 10将可用系统 RAM 中数据库缓存使用的百分比设置为默认的 25%:
nsslapd-cache-autosize-split: 25
-
将更改保存到
/etc/dirsrv/slapd-<instance_name>/dse.ldif文件。 启动 Directory 服务器。
[root@server ~]# systemctl start dirsrv.target
验证
显示
nsslapd-cache-autosize和nsslapd-cache-autosize-split属性的值,并验证它们已设置为您所需的值。[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
7.4. 调整 IdM 目录服务器中的 DN 缓存大小 复制链接链接已复制到粘贴板!
不要更改此设置,除非您有强烈需要应用自定义值。IdM 目录服务器使用内置缓存自动大小功能来优化性能。
nsslapd-dncachememsize 属性指定可辨识名称(DN)缓存的可用内存空间大小(以字节为单位)。DN 缓存与数据库的条目缓存类似,但其表只存储条目 ID 和条目 DN,这样可加快查找 rename 和 moddn 操作。
| 默认值 |
|
| 有效范围 |
|
| 条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
可选:显示数据库后缀,及其相应的数据库名称。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix list dc=example,dc=com (userroot)这个命令显示每个后缀旁的后端数据库名称。在下一步中使用后缀的数据库名称。
为数据库设置 DN 缓存大小。这个示例将 DN 缓存设置为 20MB。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix set --dncache-memsize=20971520 userroot重启 Directory 服务器。
[root@server ~]# systemctl restart dirsrv.target-
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
dncache-memsize调整为不同的值,或者重新调整默认值 10 MB。
验证
显示
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
7.5. 调整 IdM 目录服务器中的规范化 DN 缓存大小 复制链接链接已复制到粘贴板!
不要更改此设置,除非您有强烈需要应用自定义值。IdM 目录服务器使用内置缓存自动大小功能来优化性能。
nsslapd-ndn-cache-max-size 属性控制存储规范化可分辨名称(NDN)的缓存的大小(以字节为单位)。增加这个值将在内存中保留更频繁使用的 DN。
| 默认值 |
|
| 有效范围 |
|
| 条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
确保启用了 NDN 缓存。
[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如果缓存
关闭,使用以下命令启用它。[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"检索
nsslapd-ndn-cache-max-size参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。[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修改
nsslapd-ndn-cache-max-size属性的值。这个示例将值增加到41943040(40 MB)。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-ndn-cache-max-size=41943040-
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
nsslapd-ndn-cache-max-size调整为不同的值,或者重新启用缓存自动大小。
验证
显示
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
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.
限制适用于 LDAP 请求的总大小。例如,如果请求要添加条目,并且请求中的条目大于配置的值或默认值,则拒绝添加请求。但是,这个限制不适用于复制进程。在更改此属性前请小心。
| 默认值 |
|
| 有效范围 |
|
| 条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-maxbersize参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。[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修改
nsslapd-maxbersize属性的值。这个示例将值增加到4194304,4MB。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-maxbersize=4194304身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-maxbersize"-
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
nsslapd-maxbersize调整为不同的值,或者重新使用默认的2097152。
验证
显示
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
7.7. 调整 IdM 目录服务器中文件描述符的最大数量 复制链接链接已复制到粘贴板!
可以为 /etc/systemd/system.conf 文件中的 DefaultLimitNOFILE 参数定义一个值。具有 root 特权的管理员可使用 setrlimit 命令将 ns-slapd 进程的 DefaultLimitNOFILE 参数设置为较低的值。然后,这个值优先于 /etc/systemd/system.conf 中的值,并作为 nsslapd-maxdescriptors 属性的值被身份管理(IdM)目录服务器(DS)所接受。
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 密码。[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修改
nsslapd-maxdescriptors属性的值。这个示例将值增加到8192。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-maxdescriptors=8192身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-maxdescriptors"-
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤并将
nsslapd-maxdescriptors调整为不同的值,或者重新使用默认的4096。
验证
显示
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
7.8. 调整 IdM 目录服务器中的连接积压大小 复制链接链接已复制到粘贴板!
侦听服务设定可用于接收进入的连接的套接字的数量。nsslapd-listen-backlog-size 值代表,在拒绝连接前 sockfd socket 队列的最大长度。
如果您的 IdM 环境处理大量连接,请考虑增加 nsslapd-listen-backlog-size 的值。
| 默认值 |
|
| 有效范围 |
|
| 条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-listen-backlog-size参数的当前值,并在进行任何调整前记录它,以备需要恢复时使用。提示时输入 Directory Manager 密码。[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修改
nsslapd-listen-backlog-size属性的值。这个示例将值增加到192。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-listen-backlog-size=192身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-listen-backlog-size"
验证
显示
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
7.9. 调整 IdM 目录服务器中数据库锁定的最大数量 复制链接链接已复制到粘贴板!
锁定机制控制目录服务器进程可以同时运行多少个副本,nsslapd-db-locks 参数设置最大锁定数。
如果您在 /var/log/dirsrv/slapd- <instance_name> /errors 日志文件中看到以下出错信息,请增加 最大锁定数:
libdb: Lock table is out of available locks
| 默认值 |
|
| 有效范围 |
|
| 条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
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修改
locks属性的值。这个示例将值加倍到100000个锁定。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend config set --locks=100000身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully updated database configuration重启 Directory 服务器。
[root@server ~]# systemctl restart dirsrv.target
验证
显示
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
7.10. 在 IdM 目录服务器中禁用 Transparent Huge Pages 功能 复制链接链接已复制到粘贴板!
默认在 RHEL 上启用了透明巨页(THP) Linux 内存管理功能。THP 功能会降低 IdM 目录服务器(DS)性能,因为 DS 有稀疏内存访问模式。
如何禁用此功能,请参阅 Red Hat Directory Server 文档中的 禁用透明巨页功能。
7.11. 调整 IdM 目录服务器中的输入/输出块超时 复制链接链接已复制到粘贴板!
nsslapd-ioblocktimeout 属性代表一个时间(以毫秒为单位),在经过这个时间后到停滞的 LDAP 客户端的连接将关闭。当 LDAP 客户端没有为读或写操作进行任何 I/O 处理时,它被视为已停止工作。
降低 nsslapd-ioblocktimeout 属性的值可以更早地释放连接。
| 默认值 |
|
| 有效范围 |
|
| 条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-ioblocktimeout参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。[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修改
nsslapd-ioblocktimeout属性的值。这个示例将值降低为8000。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-ioblocktimeout=8000身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-ioblocktimeout"-
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
nsslapd-ioblocktimeout调整为不同的值,或者重新使用默认的10000。
验证
显示
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
7.12. 在 IdM 目录服务器中调整闲置连接超时 复制链接链接已复制到粘贴板!
nsslapd-idletimeout 属性以秒为单位设置闲置 LDAP 客户端连接被 IdM 服务器关闭的时间长度(以秒为单位)。0 表示服务器永远不会关闭闲置连接。
红帽建议调整这个值,以便过时的连接关闭,但活跃的连接不会永久关闭。
| 默认值 |
|
| 有效范围 |
|
| 条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-idletimeout参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。[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修改
nsslapd-idletimeout属性的值。这个示例将值降低为1800(30 分钟)。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> config replace nsslapd-idletimeout=1800身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-idletimeout"-
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
nsslapd-idletimeout调整为不同的值,或者重新使用默认的3600。
验证
显示
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
7.13. 调整复制发行超时 复制链接链接已复制到粘贴板!
IdM 副本在带有另一个副本的复制会话中被锁定。在一些环境中,因为大型更新或网络拥塞导致副本长时间锁定,这会增加复制延迟。
您可以通过调整 repl-release-timeout 参数在固定时间后发布副本。红帽建议将此值设置为 30 到 120 之间:
- 如果值设置过低,则副本会持续重新分配另一个,并且副本无法发送较大的更新。
-
较长的超时可以改进高流量的情况。在高流量的情况中,一个服务器可以在较长的时间内独家访问一个副本是最佳的,但如果高于
120秒则会减慢复制速度。
| 默认值 |
|
| 有效范围 |
|
| 推荐的范围 |
|
先决条件
- LDAP Directory Manager 密码
流程
显示数据库后缀及其对应的后端。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://<server_fqdn> backend suffix list cn=changelog (changelog) dc=example,dc=com (userroot) o=ipaca (ipaca)这个命令会在后缀旁的显示后端数据库名称。在下一步中使用后缀名称。
修改主 userroot 数据库的
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身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "repl-release-timeout"可选:如果您的 IdM 环境使用 IdM 证书颁发机构(CA),您可以修改 CA 数据库的
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"重启 Directory 服务器。
[root@server ~]# systemctl restart dirsrv.target-
监控 IdM 目录服务器的性能。如果没有改进,请重复此步骤,并将
repl-release-timeout调整为不同的值,或者返回默认值60秒。
验证
显示
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
本例中后缀的可辨识名称为 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-
保存并关闭
/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 }-
保存并关闭
/etc/krb5.conf文件。 - 重启 KDC 来加载新设置。
8.4. 调整 krb5kdc 进程的数量 复制链接链接已复制到粘贴板!
您可以手动调整密钥分发中心(KDC)开始处理进入的连接的进程数。
默认情况下,IdM 安装程序会检测 CPU 内核数,并在 /etc/sysconfig/krb5kdc 文件中定义值。例如,该文件可能包含以下条目:
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' [...]-
保存并关闭
/etc/sysconfig/krb5kdc文件。 重新载入 systemd 配置:
# systemctl daemon-reload重启
krb5kdc服务:# systemctl restart krb5kdc.service
您可以使用 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 ...注意subdomain_inherit选项中列出的设置适用于主(IdM)域和可信 AD 域。-
保存并关闭服务器上的
/etc/sssd/sssd.conf文件。 重启 SSSD 服务以载入配置更改。
[root@client ~]# systemctl restart sssd
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 dn: cn=ipa_extdom_extop,cn=plugins,cn=config changetype: modify replace: ipaExtdomMaxNssTimeout ipaExtdomMaxNssTimeout: 20000
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 dn: cn=ipa_extdom_extop,cn=plugins,cn=config changetype: modify replace: ipaExtdomMaxNssBufSize ipaExtdomMaxNssBufSize: 268435456
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.
您可以通过为 ipaExtdomMaxInstances 选项设置值来调整 ipa-extdom 实例的最大数量,它必须是大于 0 的整数,并小于 worker 线程的总数。
先决条件
- LDAP Directory Manager 密码
流程
检索 worker 线程的总数:
# ldapsearch -xLLLD cn=Directory\ Manager -W -b cn=config -s base nsslapd-threadnumber Enter LDAP Password: dn: cn=config nsslapd-threadnumber: 16这意味着
ipaExtdomMaxInstances的当前值是 13。调整实例的最大数量。本例将值改为 14:
# ldapmodify -D "cn=Directory Manager" -W dn: cn=ipa_extdom_extop,cn=plugins,cn=config changetype: modify replace: ipaExtdomMaxInstances ipaExtdomMaxInstances: 14检索
ipaExtdomMaxInstances的当前值:# ldapsearch -xLLLD "cn=Directory Manager" -W -b "cn=ipa_extdom_extop,cn=plugins,cn=config" |grep ipaextdommaxinstances Enter LDAP Password: ipaextdommaxinstances: 14-
监控 IdM 目录服务器的性能,如果不改进,请重复这个过程并调整
ipaExtdomMaxInstances变量的值。
9.5. 为大型 IdM-AD 信任部署在 IdM 客户端中调整 SSSD 复制链接链接已复制到粘贴板!
在 IdM 客户端中对 SSSD 服务配置应用调整选项,以便在从大型 AD 环境检索信息时改进其响应时间。
先决条件
-
您需要
root权限来编辑/etc/sssd/sssd.conf配置文件。
流程
确定单个未缓存登录所需的秒数。
清除 IdM 客户端上的 SSSD 缓存。
[root@client_hostname ~]# sss_cache -E使用
time命令测量 AD 用户的登录时间。在 IdM 客户端中,通过登录到同一主机以 AD 用户进行身份验证。[root@client_hostname ~]# time ssh <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 ~]$尽快注销以显示已经过的时间。在本例中,单个未缓存的登录大约需要
9秒。[ad_username@ad_domain@client_fqdn /]$ exit logout Connection to client.example.com closed. real 0m8.755s user 0m0.017s sys 0m0.013s
-
在文本编辑器中打开
/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 ...在
[pam]部分添加以下选项:[pam] pam_id_timeout = 9-
保存并关闭服务器上的
/etc/sssd/sssd.conf文件。 重启 SSSD 服务以载入配置更改。
[root@client_hostname ~]# systemctl restart sssd
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 -rw-------. 1 sssd sssd 1286144 Jun 8 16:41 /var/lib/sss/db/config.ldb将以下条目作为一行添加到
/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这个示例创建了一个 300MB 缓存。根据您的 IdM 和 AD 目录大小调整
size参数,每个 10,000 LDAP 条目大约为 100 MBs。
挂载新的 SSSD 缓存目录。
[root@host ~]# mount /var/lib/sss/db/重启 SSSD 以反应这个配置更改。
[root@host ~]# systemctl restart sssd
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 将大约 100 到 110MB 驻留内存用于每个 WSGI 进程的 API 。将此调优到 16 个进程(这是推荐的限制)后,内存量大约为 1.3GB。
流程
修改
/etc/httpd/conf.d/ipa.conf文件中的进程值:WSGIDaemonProcess ipa processes=<4> threads=1 maximum-requests=500 \
任何长时间运行的 API 端点都可以从调优中受益。这个调优决定是由用户来做的。
例如,OpenStack 安装由几个包含多个服务的控制器组成。每个服务都请求一个证书,以便所有内部通信都通过Transport Layer Security(TLS)发生。安装或刷新控制器或计算节点时,可以请求或刷新这些证书。在涉及多个控制器或计算节点的场景,证书请求的数量可能变得相当大。这些请求是自动的,因此它们几乎在同时发生。增加 WSGI 线程的数量允许安装完成。
10.1. 优化 CPU 使用率,以提高 IPA 服务器性能 复制链接链接已复制到粘贴板!
在大量证书颁发任务过程中遇到性能限制时,调优 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 进程一起扩展,以防止瓶颈并优化服务器性能。