1. XCAT集群基础认知与硬件准备第一次接触XCAT时我也被这个能管理上千台服务器的工具震撼到了。简单来说它就像集群界的瑞士军刀从硬件发现到系统部署从日常运维到批量作业全都能搞定。最近帮某电商平台搭建的200节点计算集群从裸机到交付只用了3天靠的就是XCAT的自动化能力。硬件规划是成功的第一步。建议准备两台千兆交换机管理网与业务网分离、至少1台管理节点推荐双电源RAID1配置和若干计算节点。我们上次用的配置是管理节点Dell R740xd64G内存/2TB SSD计算节点HPE DL380128G内存/双万兆网卡网络拓扑管理网(192.168.3.0/24)业务网(10.10.0.0/16)实际操作中遇到过管理网卡驱动不兼容的问题后来发现提前准备带igb驱动的CentOS镜像就能解决。建议先用lspci -nnk确认网卡型号到elrepo.org下载对应驱动。2. 管理节点深度配置指南2.1 系统初始化实战很多人卡在go-xcat安装这步其实有更稳的国内镜像方案curl -o /tmp/go-xcat https://mirrors.aliyun.com/xcat/tools/go-xcat chmod x /tmp/go-xcat /tmp/go-xcat install --mirror aliyun这个命令会自动配置国内软件源速度提升10倍不止。安装完成后一定要执行source /etc/profile.d/xcat.sh echo source /etc/profile.d/xcat.sh ~/.bashrc2.2 网络配置的坑与解法配置网络时最容易出错的是子网掩码转换。比如255.255.254.0要写成192_168_2_0-255_255_254_0格式。我整理了个转换脚本#!/bin/bash mask2cidr() { nbits0 IFS. for dec in $1 ; do case $dec in 255) let nbits8;; 254) let nbits7;; 252) let nbits6;; 248) let nbits5;; 240) let nbits4;; 224) let nbits3;; 192) let nbits2;; 128) let nbits1;; 0);; *) echo Error: $dec is not recognised; exit 1 esac done echo $nbits } NET192.168.2.0 MASK255.255.254.0 echo ${NET//./_}-${MASK//./_}3. 核心服务调优技巧3.1 NTP服务的隐藏机关生产环境强烈建议配置多时间源。修改/etc/ntp.conf时加入server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst server 127.127.1.0 fudge 127.127.1.0 stratum 12关键参数说明iburst启动时快速同步stratum值越大优先级越低restrict控制访问权限测试时用ntpq -p看同步状态reach值达到377才算稳定。曾遇到ntpd崩溃问题后来发现是SELinux导致用audit2allow生成策略模块就解决了。3.2 DNS配置的进阶玩法大型集群推荐分视图(view)配置DNS。在/etc/named.conf中添加view internal { match-clients { 192.168.3.0/24; }; zone cluster.local { type master; file cluster.internal.zone; }; };这样内外网可以用相同域名解析到不同IP。记得用rndc reload加载配置而不是直接重启服务。4. 计算节点批量部署实战4.1 镜像定制的艺术制作黄金镜像时这几个文件必须自定义/etc/sysconfig/network-scripts/ifcfg-ens33禁用NetworkManager/etc/ssh/sshd_config修改UseDNS no/etc/default/grub添加consolettyS0,115200n8推荐使用mkdef -t node生成模板然后genimage centos7.9-x86_64 packimage centos7.9-x86_64 -pkglist/opt/xcat/pkglist/custom.txt遇到过镜像打包失败的情况后来发现是/tmp空间不足加-t /mnt/tmp参数指定临时目录即可。4.2 无人值守安装的秘籍节点定义时这几个参数最关键nodeadd node[01-50] groupscompute,all chtab nodenode[01-50] noderes.installnicens33 noderes.primarynicens33 nodeset compute osimagecentos7.9-x86_64-install-compute批量操作时用-n参数避免交互确认如makehosts -n makedhcp -n5. 生产环境运维经验5.1 故障排查三板斧日志分析tail -f /var/log/xcat/xcatd.log | grep -i error网络测试xdsh compute ping -c 3 master配置检查tabdump site | grep -E ntp|dns5.2 性能优化参数在/etc/xcat/xcatd.conf中添加max_connections 500 worker_threads $(nproc) log_level INFO重启服务前用xcatconfig -t测试配置有效性。6. 安全加固方案6.1 证书认证配置生成CA证书openssl req -newkey rsa:4096 -nodes -keyout xcat.key -x509 -days 3650 -out xcat.crt部署到所有节点xdcp compute xcat.crt /etc/xcat/ chtab keysslcert site.value/etc/xcat/xcat.crt6.2 防火墙策略管理节点需要开放firewall-cmd --permanent --add-port3001/tcp # xcatd firewall-cmd --permanent --add-port69/udp # tftp firewall-cmd --permanent --add-port53/tcp # dns firewall-cmd --reload7. 扩展功能开发7.1 自定义插件示例在/opt/xcat/lib/perl/xCAT_plugin/下创建package xCAT_plugin::mycmd; sub handled_commands { return { mycmd node }; } sub process_request { my $req shift; my $nodes $req-{node}; foreach my $n ($nodes) { xCAT::MsgUtils-message(I, Hello $n); } } 1;测试命令mycmd compute7.2 API集成案例用Python调用xCAT APIimport subprocess def get_node_status(nodes): cmd [xdsh, nodes, uptime] proc subprocess.Popen(cmd, stdoutsubprocess.PIPE) return proc.communicate()[0].decode()最后提醒下大规模部署前务必在测试环境验证所有步骤。曾经有客户直接在生产环境操作因为DHCP配置错误导致整个办公网瘫痪。建议用-t参数先试运行确认无误再正式执行。