跳转至

Rocky Linux 9 部署指南

Tip

本教程主要针对 Rocky Linux 9 设计,但应该兼容任何基于 RHEL 的发行版(例如 Rocky Linux 8、AlmaLinux)。

这些说明针对 x86-64 架构量身定制。对于其他架构(如 ARM64),请确保相应修改下载链接和命令。

请在本教程中以 root 用户身份运行所有命令。

1. 环境准备

1.1 添加 EPEL 仓库

dnf install -y yum-utils epel-release
dnf config-manager --set-enabled crb

1.2 启用时间同步

dnf install -y chrony
systemctl restart systemd-timedated
timedatectl set-timezone Asia/Shanghai
timedatectl set-ntp true

1.3 配置防火墙

Tip

如果您有多个节点,请在每个节点上执行此步骤。否则,节点间通信将失败。

有关端口配置详细信息,请参阅配置文件 /etc/crane/config.yaml

systemctl stop firewalld
systemctl disable firewalld

如果您的集群需要保持防火墙处于活动状态,请开放以下端口:

firewall-cmd --add-port=10013/tcp --permanent --zone=public
firewall-cmd --add-port=10012/tcp --permanent --zone=public
firewall-cmd --add-port=10011/tcp --permanent --zone=public
firewall-cmd --add-port=10010/tcp --permanent --zone=public
firewall-cmd --add-port=873/tcp --permanent --zone=public
firewall-cmd --reload

1.4 禁用 SELinux(可选)

# 临时禁用(重启后会恢复)
setenforce 0

# 永久禁用(重启后保持)
sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config

1.5 选择 CGroup 版本(可选)

Rocky 9 默认使用 CGroup v2

鹤思默认支持 CGroup v1CGroup v2。但是,在基于 CGroup v2 的系统上使用 GRES 功能时,需要进行额外配置,具体请参阅 eBPF 指南

1.5.1 配置 CGroup v1

如果您无法构建 eBPF 相关组件,且需要使用 GRES 功能,可切换回 CGroup v1:

# 设置内核启动参数以切换到 CGroup v1
grubby --update-kernel=/boot/vmlinuz-$(uname -r) \
  --args="systemd.unified_cgroup_hierarchy=0 systemd.legacy_systemd_cgroup_controller"

# 重启以应用更改
reboot

# 验证版本
mount | grep cgroup

1.5.2 配置 CGroup v2

# 检查子 cgroup 是否有资源访问权限(预期看到 cpu、io、memory 等)
cat /sys/fs/cgroup/cgroup.subtree_control

# 为子组授予资源权限
echo '+cpuset +cpu +io +memory +pids' > /sys/fs/cgroup/cgroup.subtree_control

如前所述,如果您计划在 CGroup v2 上使用 GRES,需参阅 eBPF 指南 进行额外配置。

2. 安装工具链

工具链必须满足以下版本要求:

  • CMake ≥ 3.24
  • 如果使用 clang++,版本 ≥ 19
  • 如果使用 g++,版本 ≥ 14

使用以下命令安装并启用所需的工具链:

dnf install -y \
    gcc-toolset-14 \
    cmake \
    patch \
    flex \
    bison \
    automake \
    ninja-build

echo 'source /opt/rh/gcc-toolset-14/enable' >> /etc/profile.d/extra.sh
source /etc/profile.d/extra.sh

3. 安装项目依赖

dnf install -y \
    libstdc++-devel \
    libstdc++-static \
    openssl-devel \
    curl-devel \
    pam-devel \
    zlib-devel \
    libaio-devel \
    systemd-devel \
    libcurl-devel \
    elfutils-libelf-devel \
    shadow-utils-subid-devel

4. 安装和配置 MongoDB

MongoDB 仅在控制节点上需要。

请按照数据库配置指南获取详细说明。

5. 安装和配置鹤思

5.1 构建和安装

  1. 配置和构建鹤思:

    git clone https://github.com/PKUHPC/CraneSched.git
    cd CraneSched
    mkdir -p build && cd build
    
    # 对于 CGroup v1
    cmake -G Ninja ..
    cmake --build .
    
    # 对于 CGroup v2
    cmake -G Ninja .. -DCRANE_ENABLE_CGROUP_V2=true
    cmake --build .
    

  2. 安装构建的二进制文件:

Tip

我们建议使用 RPM 软件包部署鹤思。有关安装说明,请参阅打包指南

cmake --install .

对于多节点部署鹤思,请按照多节点部署指南

5.2 配置 PAM 模块

PAM 模块配置是可选的,但建议用于生产集群以控制用户访问。

请按照 PAM 模块配置指南获取详细说明。

5.3 配置集群

有关集群配置详细信息,请参阅集群配置指南

6. 启动鹤思

使用 systemd 启动(推荐)

仅控制节点需要先创建 crane 用户(RPM 包安装时自动创建):

sudo groupadd --system crane 2>/dev/null || true
sudo useradd --system --gid crane --shell /usr/sbin/nologin --create-home crane 2>/dev/null || true

然后启动服务:

systemctl daemon-reload
systemctl enable cranectld --now  # 控制节点
systemctl enable craned --now     # 计算节点

手动运行(前台)

cranectld  # 控制节点
craned     # 计算节点