本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
登录节点
从版本 3.7.0 开始, AWS ParallelCluster 集群管理员可以配置登录节点,这些节点可用于向用户提供运行作业的访问权限,而不是直接访问集群头节点。 具有适当权限的集群用户可以使用 Active Directory 或其 ssh 凭证登录、提交和管理其作业。因此,可以改善群集管理,并将耗尽管理群集所需的头节点资源的机会降Slurm至最低。已登录用户还可以访问登录节点上挂载的集群的所有共享存储。如果需要停止登录节点,则已登录用户将会通过正在使用的活动 Shell 会话提前收到通知。
登录节点被指定为池,池定义了一组具有相同资源配置的登录节点。池中的所有登录节点都配置为网络负载均衡器的一部分,后者会以循环方式在各个登录节点之间分配会话。本实现允许指定一个包含多个登录节点的登录节点池。
安全性
登录节点继承头节点的 AllowedIPs
设置 AllowedIps。通过这种方式,集群管理员可以通过指定允许 SSH 连接的源 CIDR 或前缀列表来限制集群的安全状况。
在本实现中,启用登录节点时,不会自动限制对头节点的访问。如果需要,集群管理员可以通过使用标准 Linux 命令来更新头节点 ssh 配置,从而限制此访问权限。这也可以通过在头节点上指定自定义安全组来实现,方法是使用 ParallelCluster YAML 文件头节点部分中的AdditionalSecurityGroups
设置来拒绝来自未经授权的用户的连接。
联网
登录节点使用为登录节点池配置的网络负载均衡器的单个连接地址进行预置。该地址的连接设置基于登录节点池配置中指定的子网类型。
-
如果子网是私有子网,则该地址将是私有地址,为了向登录节点授予访问权限,集群管理员必须预置堡垒主机。
-
如果子网是公有子网,则该地址将是公有地址
所有连接请求均由网络负载均衡器使用循环路由进行管理。
存储
在集群上配置的所有共享存储( ParallelCluster 包括托管存储)都将安装在所有登录节点上。
检索登录节点信息
要检索为访问登录节点而预置的单个连接的地址,集群管理员可以运行 describe-cluster 命令。该命令还将提供有关登录节点状态的更多信息。
登录节点是一种支持的新节点类型 ParallelCluster ,在查询特定节点类型的状态时,可以使用describe-cluster-instances命令指定登录节点。
登录节点池的单个连接地址的可用性并不能阻止对特定登录节点的直接访问。但为了避免 ssh 客户端发出警告,不建议使用直接连接。ssh 客户端在本地存储每个目标地址的主机标识符。由于每个池的主机标识符是特定的,因此使用不同的 IP 和/或单个连接地址可能会将相同的主机标识符与不同的目标地址相关联:由于相同的主机标识符与多个目标相关联,这可能会导致 ssh 客户端发出警告。
Imds 属性
登录节点的 IMDS(以及实例配置文件凭证)的访问权限仅限于根用户、集群管理用户(默认)和操作系统特定的pc-cluster-admin
默认用户(ec2-user
在 Amazon Linux 2 上,在 Ubuntu 18.04 ubuntu
上 RedHat,在 centos
CentOS 7 上)。
要限制 IMDS 的访问权限,请 AWS ParallelCluster 管理一连串的。iptables
注意
对 iptables
或 ip6tables
规则进行任何自定义都可能干扰登录节点上用于限制 IMDS 访问权限的机制。另请参阅 Imds property setting。
登录节点生命周期
目前没有用于停止和启动池中登录节点的专用命令。为了停止池中的登录节点,集群管理员必须更新集群配置,将登录节点数指定为零 (Count: 0
),然后运行 pcluster.update-cluster-v3 命令。
注意
已登录用户会收到有关特定实例终止以及相关宽限期的通知。在宽限期内,除了来自集群默认用户的连接外,不允许任何新连接。集群管理员可以从头节点或登录节点上通过编辑 /opt/parallelcluster/shared_login_nodes/loginmgtd_config.json
文件来自定义显示的消息。
为了启动登录节点池,集群管理员必须在集群配置中还原先前的 Count
值,然后运行 update-cluster 命令。
运行登录节点池所需的权限
要管理登录节点池,集群管理员必须具有以下额外权限:
- Action: - autoscaling:DeleteAutoScalingGroup - autoscaling:DeleteLifecycleHook - autoscaling:Describe* - autoscaling:PutLifecycleHook - autoscaling:UpdateAutoScalingGroup - elasticloadbalancing:CreateListener - elasticloadbalancing:CreateTargetGroup - elasticloadbalancing:DeleteListener - elasticloadbalancing:DeleteLoadBalancer - elasticloadbalancing:DeleteTargetGroup - elasticloadbalancing:Describe* - elasticloadbalancing:ModifyLoadBalancerAttributes Resource: '*' Condition: ForAllValues:StringEquals: aws:TagKeys: [ "parallelcluster:cluster-name" ] - Action: - autoscaling:CreateAutoScalingGroup - elasticloadbalancing:AddTags - elasticloadbalancing:CreateLoadBalancer Resource: '*' Effect: Allow