找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3441

积分

0

好友

459

主题
发表于 6 小时前 | 查看: 4| 回复: 0

当你想批量改密码、发文件时,通常会怎么干?用 Shell 写个死循环?部署一套庞大的 Ansible?还是配置复杂的 SaltStack?

对于很多掌握高性能计算(HPC)重器 xCAT 的管理员来说,往往容易陷入一个误区:觉得 xCAT 只是用来做 PXE 自动化装机的。为了用它的并行命令功能,还得先去配 DHCP、配 TFTP、建镜像、搞数据库……这简直就是为了喝杯牛奶而养了一头牛。

如果你已经有了现成的操作系统,只想利用 xCAT 强大的并行执行能力(pshpscp),完全可以跳过那些繁琐的装机配置,把它变成一个 轻量级、高性能的 SSH 批量管理神器

1、下载安装 xcat

浏览器访问下载地址 https://xcat.org/files/xcat/,分别在以下两个目录中选择对应的安装包下载:

xcat.org 文件列表页,显示 xcat-core 和 xcat-dep 目录

xcat 软件包压缩文件列表,包含 xcat-core 和 xcat-dep 的 tar.bz2 文件

或者在 Linux 系统中直接执行下载命令:

wget http://xcat.org/files/xcat/xcat-core/2.17.x_Linux/xcat-core/xcat-core-2.17.0-linux.tar.bz2
wget http://xcat.org/files/xcat/xcat-dep/2.x_Linux/xcat-dep-2.17.0-linux.tar.bz2

2、解压 xCAT 包

tar xjvf xcat-core-*.tar.bz2
tar xjvf xcat-dep-*.tar.bz2

解压后产生 xcat-corexcat-dep 两个目录:

解压后的 xcat 目录结构,显示 xcat-core 和 xcat-dep 文件夹

3、创建本地仓库脚本

xCAT 的包里自带了创建本地源的脚本 mklocalrepo.sh。执行成功后,系统会在 /etc/yum.repos.d/ 下生成 xCAT-core.repoxCAT-dep.repo 文件。

# 配置核心库:
cd xcat-core
./mklocalrepo.sh

# 配置依赖库:
cd ../xcat-dep/rh7/x86_64   # 请根据系统版本和实际路径调整
./mklocalrepo.sh

4、配置操作系统本地源

为了让 xCAT 能找到安装系统所需的包,需要挂载 ISO 并配置源:

# 创建挂载点
mkdir -p /media/cdrom

# 挂载 ISO (假设 ISO 在 /root 下)
mount -o loop /root/CentOS-7-x86_64-DVD.iso /media/cdrom

# 创建 repo 文件
cat > /etc/yum.repos.d/local-os.repo <<EOF
[Local-OS]
name=Local OS Repository
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
EOF

5、安装 xCAT

# 清理并安装
yum clean all
yum install -y xCAT

# 加载环境变量,为了让终端能识别 xCAT 命令
source /etc/profile.d/xcat.sh

# 验证安装
lsxcatd -a
tabdump site

6、基础初始化

安装好后,xCAT 还不能直接工作,需要配置基本的网络和 DNS 指向。

(1)配置 hosts 和主机名

确保管理节点的主机名是 FQDN 格式(如 mgt01.cluster.com),并在 /etc/hosts 中配置好管理 IP。

/etc/hosts 文件内容示例,展示了 IP 与主机名的映射

(2)配置 site 表

告诉 xCAT 谁是老大,以及 DNS/DHCP 由谁提供:

# 替换 192.168.3.5 为你的管理节点 IP,替换 ens33 为你的网卡名称
chdef -t site domain=cluster.com \
master=192.168.3.5 \
nameservers=192.168.3.5 \
ntpservers=192.168.3.5 \
dhcpinterfaces="ens33"

(3)配置 networks 表,定义网段信息

如果只是使用 xcat 的批处理命令,不批量安装系统,此步骤可以不做:

# 清除默认配置(可选)
tabprune networks -a

# 添加新网段 (根据实际网段修改 net, mask, gateway)
chtab netname=192_168_3_0 \
networks.net=192.168.3.0 \
networks.mask=255.255.255.0 \
networks.gateway=192.168.3.2 \
networks.dhcpserver=192.168.3.5 \
networks.tftpserver=192.168.3.5 \
networks.nameservers=192.168.3.5

(4)生成 DNS 和 DHCP 配置

makedns -n
makedhcp -n

7、配置 SSH 免密登录

这是并行命令能工作的 唯一前提。你需要让管理节点免密登录到上面列表里的所有节点。

# 生成密钥(如果已经有了可以跳过)
ssh-keygen -t rsa      # 一路回车即可

# 分发密钥,假设你的节点列表在 /etc/xcat/mycluster
for ip in $(cat /etc/xcat/mycluster); do
    echo "正在配置 $ip 的免密..."
    sshpass -p '你的节点root密码' ssh-copy-id -o StrictHostKeyChecking=no root@$ip
done

# 注意:如果没有 sshpass,你需要先安装 yum install sshpass,或者手动输入密码

8、在 xCAT 数据库里“注册”节点

# 注册节点
mkdef -t node -o rocky01 ip=192.168.3.6 groups=all
mkdef -t node -o centos02 ip=192.168.3.7 groups=all
mkdef -t node -o rocky02 ip=192.168.3.8 groups=all

# 查看已注册的节点
lsdef -t node

lsdef -t node 输出结果,显示三个已注册节点

9、批处理命令测试

# 测试 ping rocky01 和 rocky02 的网络
pping rocky01-rocky02

# 在所有节点上执行 uptime 命令
psh all uptime

# 拷贝 hosts 文件到所有节点
pscp /etc/hosts all:/etc/

并行 ping、psh 和 pscp 的命令执行结果

项目地址:https://github.com/xcat2/xcat-core
官网地址:https://xcat.org/
安装包下载地址:https://xcat.org/files/xcat/
文档地址:https://xcat-docs.readthedocs.io/en/stable/

xCAT 是一个强大的集群管理套件,但它不应该被束之高阁。对于很多中小规模的集群运维,或者已经通过其他方式(如手动安装、虚拟机模板)部署好系统的场景,剥离掉 xCAT 复杂的装机功能,只取其 并行执行 的精华,往往能达到“四两拨千斤”的效果。在云栈社区上,你可以找到更多关于集群管理和运维的实用技巧与讨论。

下次当你要对 100 台服务器执行同一个命令时,别再写 for 循环了,试试 xCAT 的极简模式吧!




上一篇:Hermes Agent 开源智能体:自创技能与四层记忆,让 AI 真正学会学习
下一篇:AI Coding Agent 必备技能库实战评测:企业级自动化工作流如何落地
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-24 23:47 , Processed in 0.660269 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表