LSF 细观
了解在 LSF 主机上运行的各种守护进程,LSF 集群通信路径,以及 LSF 如何容许集群中的主机故障。
1、LSF 守护程序和进程
集群中的每个主机上都运行多个 LSF 进程。 正在运行的进程的类型和数量,取决于主机是主节点还是计算节点。
主节点守护程序进程
LSF 主机根据它们在集群中的角色,运行各种守护进程。
守护程序 | 角色 |
mbatchd | 作业请求与分配 |
mbschd | 作业调度 |
sbatchd | 作业执行 |
res | 作业执行 |
lim | 节点信息 |
pim | 作业进程信息 |
elim | 动态负荷指标 |
mbatchd
在主节点上运行的主批处理守护程序。 负责系统中作业的总体状态。
接收作业提交和信息学查询请求。管理队列中保留的作业。由 mbschd 确定将作业分配给主机。
mbschd
在主节点上运行的主批处理调度守护程序。 与 mbatchd 一起使用。
根据作业要求,策略和资源可用性制定调度决策。 将调度决策发送到 mbatchd
sbatchd
在每个服务器主机(包括主主机)上运行的从属批处理守护程序。 从 mbatchd 接收运行作业的请求,并管理作业的本地执行。 负责执行本地策略并维护主机上的作业状态。
sbatchd 会为每个作业分出一个子sbatchd。 子 sbatchd 运行一个 res 实例,以创建作业在其中运行的执行环境。 作业完成后,子sbatchd 退出。
res
在每个服务器主机上运行的远程执行服务器(RES)。 接受远程执行请求,以提供清晰,安全的作业和任务的远程执行。
lim
在每个服务器主机上运行的负载信息管理器(LIM)。 收集主机负载和配置信息,并将其转发到在主节点上运行的主LIM。报告由 lsload 和 lshosts 显示的信息。
当 LIM 启动或 CPU(ncpus)数量更改时,将报告静态索引。
Master LIM
在主节点上运行的 LIM。从集群中的节点上运行的 LIM,接收负载信息。
将负载信息转发到 mbatchd,后者将信息转发到 mbschd 以支持调度决策。如果主 LIM 不可用,则候选主节点上的 LIM 将自动接管。
PIM
在每个服务器主机上运行的进程信息管理器(PIM)。 由 LIM 启动,它会定期检查 PIM 并在 PIM 挂掉后重新启动。
收集有关主机上运行的作业进程的信息,例如作业使用的 CPU 和内存,并将该信息报告给 sbatchd。
ELIM
外部LIM(ELIM)是一个可在站点定义的可执行文件,用于收集和跟踪自定义动态负载索引。 ELIM 可以是 Shell 脚本或编译的二进制程序,它们返回您定义的动态资源的值。 ELIM 可执行文件必须命名为 elim.anything,并且位于 LSF_SERVERDIR 中。
2、LSF 集群通信路径
了解集群中 LSF daemon 之间的通信路径。
3、容错和自动主控主机故障转移
LSF 的强大体系结构在设计时考虑了容错能力。 系统中的每个组件,都有一个恢复操作。关键组件由另一个组件监视,并且可以自动从故障中恢复。
即使集群中的某些主机不可用,LSF 也可以继续运行。 集群中的一个主机充当主节点,但是如果该主节点不可用,则由另一台主机候选节点接管。当集群中有一个主节点候选时,LSF 可用。
LSF 可以容许集群中,任何主机或主机组的故障。当某主机不可用时,在该主机上运行的所有作业,将会重新排队运行或丢失,具体取决于该作业是否被标记为可重新运行。其他挂起或正在运行的作业,则不会受到影响。
故障转移的工作原理
容错能力取决于事件日志文件 lsb.events,该文件保存在主文件服务器上。系统中的每个事件都记录在该文件中,包括所有作业提交以及作业和主机状态更改。如果主节点不可用,则从主节点候选列表中选择一个新的主节点,新的主节点上的 sbatchd 守护程序,将启动一个新的 mbatchd 守护程序。 新的 mbatchd 守护程序,会读取lsb.events 文件以恢复系统状态。
重复事件记录
对于不希望仅依靠中央文件服务器获取恢复信息的站点,可以将 LSF 配置为通过保留 lsb.events 文件的副本来维护重复的事件日志。 副本存储在文件服务器上,并且在主副本不可用时使用。 启用重复事件日志记录后,主事件日志将本地存储在第一个主主机上,并在主机恢复时与复制的副本重新同步。
主机故障转移
LSF 主节点是动态选择的。如果当前的主节点不可用,则另一台主机将自动接管。故障转移主机,是从 lsf.conf 文件(在安装时在 install.config 文件中指定)的 LSF_MASTER_LIST 参数中定义的列表中选择的。列表中的第一个可用节点充当主机。
正在运行的作业由每个服务器主机上的 sbatchd 守护程序管理。 当新的 mbatchd 守护程序启动时,它将轮询每个主机上的 sbatchd 守护程序,并找到其作业状态。如果 sbatchd 守护程序失效,但主机仍在运行,则主机上正在运行的作业不会丢失。 重新启动 sbatchd 守护程序后,它将重新获得对主机上正在运行的所有作业的控制。
作业故障转移
作业可以通过可重新运行的方式来提交,如此一来,它们可以从头开始自动运行,也可以通过可检查点的形式提交,如此一来,如果由于主机故障而挂掉,则可以从另一个主机上的检查点重新开始。
如果集群中的所有主机都关闭,则所有正在运行的作业都将丢失。 当主节点的候选节点,恢复并接管为主节点时,它将读取 lsb.events 文件,以获取所有批处理作业的状态。 除非系统将其标记为可重新运行,否则系统关闭时,正在运行的作业将被认为已退出,并且电子邮件将发送给提交用户。等待的作业则保留在队列中,并在主机可用时,进行调度。
分区集群
如果集群因网络故障而分区,则 master LIM 会接管分区的每一侧,而候选主节点则在分区的每一侧都可用。 当每个主机仍然可以访问 LSF 可执行文件时,交互式负载共享仍然可用。.
分区网络
如果对网络进行了分区,则只有一个分区可以访问 lsb.events 文件,因此 LSF 服务仅在分区的一侧可用。一个锁定文件,用于确保集群中仅运行一个 mbatchd 守护程序。
作业异常处理
您可以配置主机和队列,以便 LSF 在作业运行时检测到异常情况,并自动采取适当的措施。 您可以自定义检测到哪些异常以及相应的操作。 例如,您可以将 LSF 设置为在作业退出并显示特定错误代码时,自动重新启动。
4、安全性
了解 LSF 安全模型,身份验证和用户角色。
默认情况下,LSF 安全模型在内部跟踪用户帐户。 LSF 中定义的用户帐户,包括用于提供身份验证的密码和用于提供授权的已分配角色,例如管理员。
LSF 用户角色
没有启用EGO的 LSF 支持以下用户角色:
-
LSF 用户
有权将作业提交到 LSF 集群,并查看作业和群集的状态。
-
LSF 主要管理员
有权执行集群范围的操作,更改配置文件,重新配置集群以及控制所有用户提交的作业。lsb.params 和lsb.hosts 等配置文件,可配置 LSF 的各个方面。
-
LSF 管理员
有权执行影响其他LSF用户的操作。集群管理员可以对集群中的所有作业和队列,执行管理操作。可能没有更改 LSF 配置文件的权限。
队列管理员的管理权限仅限于指定的队列。
主机组的管理员管理权限仅限于指定的主机组。
用户组的管理员管理权限仅限于指定的用户组。
启用 EGO 的 LSF 用户角色
启用 EGO 的 LSF,支持以下角色:
-
集群管理员
可以管理集群中的任何对象和工作负载。
-
消费者管理员
可以管理他们有权访问的使用者中的任何对象和工作负载。
-
消费者用户
可以在他们有权访问的使用者中运行工作负载。
用户帐户是在 EGO 中创建和管理的。 EGO 从其用户数据库授权用户。
LSF 用户组
在可以指定 LSF 用户组的任何位置上,指定 UNIX 或 Linux 用户组,以此来直接使用任何现有的 UNIX 和 Linux 用户组。
外部认证
LSF 为倾向于使用外部或第三方安全机制(例如 Kerberos,LDAP 或 ActiveDirectory)的站点,提供了一个安全插件。
您可以创建自定义的 eauth 可执行文件,以提供用户,主机和守护程序的外部身份验证。 凭证是从外部安全系统传递的。还可以通过自定义的 eauth 可执行文件,来从操作系统或从诸如 Kerberos 的身份验证协议获取凭据。