slurm--网络配置指南

简介: slurm--网络配置指南

概述

在Slurm集群中,有很多组件需要能够相互通信。有些站点有安全要求,不能打开机器之间的所有通信,需要有选择地打开必要的端口。本文件将介绍不同的组件需要怎样才能相互交流。

下面是一个相当典型的集群图,slurmctld和slurmdbd在不同的机器上。在较小的集群中,MySQL可以和slurmdbd运行在同一台机器上,但在大多数情况下,最好是让它运行在一台专门的机器上。 slurmd运行在计算节点上,客户端命令可以在你选择的机器上安装和运行。

network_standard.gif

slurmctld的通讯方式

slurmctld用于监听传入请求的默认端口是6817,这个端口可以通过slurm.conf修改SlurmctldPort参数改变。Slurmctld在该端口监听传入的请求,并在请求者打开的同一连接上作出回应。

运行slurmctld的机器也需要能够建立对外的连接,它需要在默认的6819端口与slurmdbd进行通信。它还需要与计算节点上的slurmd进行通信,默认端口为6818。

默认情况下,slurmctld会监听IPv4流量。通过在slurm.conf的CommunicationParameters中加入EnableIPv6,可以启用IPv6通信。在启用IPv6后,你可以通过在CommunicationParameters中加入DisableIPv4来禁用IPv4。这些设置必须在slurmdbd.conf和slurm.conf中匹配。

slurmdbd的通信

slurmdbd用于监听传入请求的默认端口是6819,这个端口可以通过slurmdbd.conf上的SlurmctldPort参数改变。Slurmdbd在该端口监听传入的请求,并在请求者打开的同一连接上进行响应。

运行slurmdbd的机器需要能够到达MySQL或MariaDB服务器,默认端口为3306。这个端口可以通过slurmdbd.conf上的StoragePort参数来改变。它还需要能够启动与slurmctld的连接,默认端口为6819。

默认情况下,slurmdbd将监听IPv4流量。通过在slurmdbd.conf的CommunicationParameters中加入EnableIPv6,可以启用IPv6通信。在启用IPv6后,你可以通过在CommunicationParameters中加入DisableIPv4来禁用IPv4。这些设置必须在slurmdbd.conf和slurm.conf中匹配。

slurmd的通信

slurmd用于监听来自slurmctld的传入请求的默认端口是6818,这个端口可以通过slurm.conf上的SlurmdPort参数来改变。

运行srun的机器也使用一系列的端口,以便能够与slurmstepd通信。默认情况下,这些端口是从短暂的端口范围中随机选择的,但是你可以使用SrunPortRange来指定一个可以从中选择的端口范围。这对于在防火墙后面的登录节点是必要的。

运行slurmd的机器需要能够在默认的6817端口与slurmctld建立连接。

默认情况下,slurmd通过IPv4进行通信。由于slurm.conf参数也会影响slurmd守护进程,请参见slurmctld部分,以了解如何改变这一点。

客户端命令的通信

大多数客户端命令默认会在6817端口与slurmctld进行通信(关于如何改变这一点,请参见slurmctld部分),以获得它们需要的信息。这包括以下命令。

  • salloc
  • sacctmgr
  • sbatch
  • sbcast
  • scancel
  • scontrol
  • sdiag
  • sinfo
  • sprio
  • squeue
  • sshare
  • sstat
  • strigger
  • sview

还有一些命令与slurmdbd直接通信,默认端口为6819,下面的命令从slurmdbd获取信息:

  • sacct
  • sacctmgr
  • sreport

当用户使用srun启动一个作业时,必须有一个从调用srun的机器到作业分配的节点的通信路径。通信遵循下面的顺序。

  1. srun向slurmctld发送作业分配请求
  2. slurmctld批准分配并返回详细信息
  3. srun向slurmctld发送步骤创建请求
  4. slurmctld用步骤凭证进行响应
  5. srun为I/O打开套接字
  6. srun将带有任务信息的凭证转发给slurmd
  7. slurmd根据需要转发请求(按扇出)。
  8. slurmd forks/execs slurmstepd
  9. slurmstepd连接I/O并启动任务
  10. 在任务终止时,slurmstepd会通知srun
  11. srun通知slurmctld任务终止
  12. slurmctld通过slurmd验证所有进程的终止,并为下一个作业释放资源

network_srun.gif

与多个控制器的通信

你可以配置一个次要的slurmctld和/或slurmdbd,作为主控制器发生故障时的后备。所涉及的端口不会改变,但有额外的通信路径需要考虑到。客户端命令需要能够到达运行slurmctld的两台机器,以及运行slurmdbd的两台机器。slurmctld的两个实例都需要能够到达slurmdbd的两个实例,每个slurmdbd都需要能够到达MySQL服务器。

network_failover.gif

与多个集群的通信

在多个slurmctld实例共享同一个slurmdbd的环境中,你可以将每个集群配置成独立的,并允许用户指定一个集群来提交他们的作业。不同守护进程使用的端口不会改变,但所有slurmctld实例都需要能够与同一个slurmdbd实例通信。你可以在多集群操作文档中阅读更多关于多集群配置的内容。

network_multi_cluster.gif

federation中的通信

Slurm还提供了在多个集群之间以点对点方式安排作业的能力,允许作业首先在有可用资源的集群上运行。这与多集群配置在通信需求上的区别在于,slurmctld的两个实例需要能够相互通信。在文档中有更多关于使用federation的细节。

network_federation.gif

与IPv6的通信

slurmctld、slurmdbd和slurmd守护进程默认使用IPv4通信,但它们可以被配置为使用IPv6。这可以通过在slurm.conf和slurmdbd.conf中设置CommunicationParameters=EnableIPv6,然后重新启动所有的守护进程来处理。在这种模式下,slurmd可以通过IPv4或IPv6运行。可以通过设置CommunicationParameters=EnableIPv6,DisableIPv4来禁用IPv4。在这个模式下,所有的东西都必须有一个有效的IPv6地址,否则连接会失败。

slurmctld希望一个节点能映射到一个IP地址(这将是用getaddrinfo()查找节点的IP时返回的第一个地址)。如果你在一个现有的集群上启用了IPv6,并且节点有IPv6地址,你必须重新启动slurmd守护进程以建立IPv6的通信。

在 /etc/gai.conf 中出现的优先级 ::fff:0:0/96 100 将导致 IPv4 地址在 IPv6 地址之前被返回。这可能会导致这样一种情况:你已经为 Slurm 启用了 IPv6,但仍然看到节点在用 IPv4 通信。如果对哪个地址被使用感到困惑,你可以调用 scontrol setdebugflags +NET 来在 slurmctld.log 中启用网络相关的调试日志。

如果启用了 IPv4 和 IPv6,环回接口可能仍然解析为 127.0.0.1。这不一定说明有问题。

目录
相关文章
|
安全 Linux 网络安全
组网神器WireGuard安装与配置教程(超详细)
组网神器WireGuard安装与配置教程(超详细)
38777 2
conda常用操作和配置镜像源
conda常用操作和配置镜像源
30911 0
|
8月前
|
机器学习/深度学习 分布式计算 Kubernetes
30分钟拉起Ray集群并部署Stable Diffusion模型服务
Ray 是一个支持模型训练、测试以及部署的开源平台,由加州大学伯克利分校的 RISELab 开发。它旨在简化大规模机器学习、强化学习和分布式计算任务的开发与部署。阿里云计算巢实现了Ray Cluster的一键部署,帮助用户能够便捷地使用分布式集群训练和测试自己的模型。
|
11月前
|
人工智能 自然语言处理 安全
Poe AI国内能用吗?回答是:能用!记住这个使用方法就够了!
国内用户如何畅玩 Poe AI?告别网络限制,开启AI创作之旅!
4718 15
|
监控 数据挖掘 Linux
Linux服务器PBS任务队列作业提交脚本的使用方法
【8月更文挑战第21天】在Linux服务器环境中,PBS任务队列能高效管理及调度计算任务。首先需理解基本概念:作业是在服务器上执行的任务;队列则是等待执行任务的列表,具有不同的资源限制与优先级;节点指分配给作业的计算资源。
2128 4
|
JSON Kubernetes 数据格式
crictl 常见的命令大全
crictl(Container Runtime Interface Command Line Interface)是一个命令行工具,用于与符合Kubernetes容器运行时接口(CRI)规范的容器运行时进行交互。它提供了一系列命令来查看和管理容器、镜像、Pod等资源。以下是crictl的一些常见命令及其功能概述: ### 1. 镜像管理 * **查看镜像**: - `crictl images`:列出所有镜像。 - `crictl images | grep <image-name>`:查看特定镜像。 * **拉取镜像**: - `crictl pull <image_na
5290 8
|
监控 安全 Shell
清除阿里云服务器挖矿病毒总结
监控发现`top`命令显示`xmrig`进程占满CPU,确认服务器遭挖矿病毒感染。通过`thistory`追溯到病毒执行步骤,包括下载恶意脚本、设置定时任务等。处理方案包括:清理异常定时任务并修复权限;查找并删除挖矿相关文件;识别并终止可疑`sh`进程;加强SSH安全,如修改端口、清除密钥、限制IP访问等,以彻底清除病毒并加固系统安全。
1871 2
|
Ubuntu 安全 网络协议
|
Kubernetes 异构计算 容器
Kubelet之Topology Manager分析
Topology Manager是kubelet的一个组件,在kubernetes 1.16加入,而kubernetes 1.18中该feature变为beta版。本篇文档将分析Topology Manager的具体工作原理。1.为什么需要Topology Manager现代计算机的CPU架构多采用NUMA(Non-Uniform Memory Access,非统一内存)架构。NUMA就是将cpu
4738 0