使用 IBM® Spectrum LSF 进行 Kerberos 认证
LSF 的 Kerberos 集成允许您对 LSF 集群和作业使用 Kerberos 认证。
LSF 的 Kerberos 集成包含以下功能:
- 用于暂挂作业和正在运行的作业的专用二进制 krbrenewd 更新 TGTs。 增强了此功能以处理多个作业,而不会为 mbatchd 和 KDC 创建过多的开销。
- 使用参数 LSB_KRB_TGT_FWD将用户 TGT 转发与守护程序和用户认证分开,以控制 TGT 转发。
- Kerberos 解决方案软件包预安装在 LSF 安装目录中,使用户无法从源代码进行编译。 krb5 函数调用是动态链接的。
- 对并行作业的初步 TGT 转发支持,包括对并行作业的共享目录支持。 如果客户站点上的所有主机都具有共享目录,那么您可以通过参数 LSB_KRB_TGT_DIR在 lsf.conf 中配置此目录,并在此处存储每个作业的 TGT。
- LSF Kerberos 集成在 NFSv4 环境中工作。
将 LSF 安装在不需要凭证即可访问的位置。
必须提供以下 krb5 库,因为它们不随 LSF一起提供:
- libkrb5.so
- libkrb5support.so
- libk5crypto.so
- libcom_err.so
将 lsf.conf 中的 LSB_KRB_LIB_PATH 设置为包含这四个库的路径。
使用 Kerberos 集成时,请注意以下问题:
- 如果开启 LSF的帐户映射功能,那么必须确保执行用户对包含运行时 TGT 的 LSB_KRB_TGT_DIR 参数定义的目录具有读/写许可权。
- krb5 库是 TGT 操作所必需的。
- 配置 TGT 更新限制,使其足够长的时间使作业完成运行。 持续数小时甚至数日的长作业需要及时更新其 TGTs 以保持作业运行。 确保作业执行时间不超过 TGT 更新限制。
- 使用 blaunch 命令,每个主机仅调用一个任务 res 。
- blaunch krb5 不支持自动调整大小的作业。
- blaunch krb5 不支持运行 LSF,版本 9.1.2或更低版本的远程执行服务器,因此更新脚本无法用于这些版本的 RES。 同样, blaunch krb5 不支持来自 LSF,版本 9.1.2或更低版本的 sbatchd 守护程序。 因此,无法对子 sbatchd 守护程序进行 kerberized ,并且更新脚本无法在 LSF,版本 9.1.2或更低版本的根 sbatchd 守护程序中工作。
- brequeue 命令不会将新的 TGTs 传输到 mbatchd 守护程序。 如果某个作业被 brequeue 命令重新排队,那么所使用的 TGT 作业是由 mbatchd 守护程序高速缓存的作业。
- LSF 不会检查 erenew 脚本的内容或退出代码。 如果 erenew 包含错误的命令,那么无法更新 AFS 令牌,并且 LSF 不会在日志文件中报告任何错误。 因此,用户必须确保 erenew 脚本中的命令可以成功更新 AFS 令牌。
- 某些 bsub 选项 (例如 bsub -Zs 或 bsub -is ) 需要 bsub 命令来执行文件处理。 在这种情况下,如果所涉及的文件位于 AFS 卷中,那么用户必须确保在运行 bsub 命令之前获取正确的 AFS 令牌。
Kerberos 对 NFSv4 和 AFS 的支持
在 NFSv4 或 Andrew 文件系统 (AFS) 上使用 LSF 时,顺序作业或分布式并行作业中的每个进程都需要定期更新其凭证。 为了在安全的用户友好环境中进行此重新认证,将向每个执行主机分发 TGT 文件,并且每个执行主机中的根 sbatchd 守护程序将更新 TGT。
如果使用 AFS 功能部件,那么必须提供 libkopenafs.so 或 libkopenafs.so.1 库,这些库不随 LSF一起提供。 您可以从 openafs-authlibs-* 包中使用它们,也可以直接从 AFS 源中构建它们。
为支持 AFS, LSF 提供了外部更新挂钩机制,此机制在 TGT 更新后调用。 用户可以通过这个更新挂钩来编写自己的更新逻辑。 更具体而言,用户可以使用 $LSF_SERVERDIR 目录中的演示脚本 erenew.krb5 ,并将其重命名为 erenew。 用户还可以在 $LSF_SERVERDIR 目录中创建 erenew 可执行文件。 将在作业启动时立即调用此 erenew 脚本,以确保用户的作业具有有效的 AFS 令牌。 LSF 还会在 TGT 更新后自动调用二进制文件。 例如, AFS 用户可以使用此挂钩来运行 aklog 命令以更新 AFS 令牌。