在HPC(高性能计算)环境中,有效的许可证管理是确保软件资源合理分配的关键环节。Arm Licence Server作为Arm官方提供的专业许可证管理解决方案,特别针对Arm Forge等HPC工具链设计了高效的浮动许可证管理机制。本文将基于22.1.3版本,详细介绍从安装部署到日常管理的全流程实践。
Arm Licence Server主要支持三种许可证模式:
其中浮动许可证模式是HPC场景的核心需求,它允许:
重要提示:只有超级计算许可证需要部署Licence Server,试用版和工作站版只需将许可证文件放在产品安装目录即可。
当前版本仅支持Linux平台运行,建议满足:
从Arm官网下载对应版本的安装包,命名格式通常为:
code复制arm-licence-server-22.1.3-linux-<架构>.tar
其中架构可以是x86_64、aarch64或ppc64le。
bash复制tar xf arm-licence-server-22.1.3-linux-x86_64.tar
bash复制cd arm-licence-server-22.1.3-linux-x86_64
./textinstall.sh
也可使用一键安装命令:
bash复制./textinstall.sh --accept-licence /opt/arm/licenceserver
安装完成后需要配置systemd服务:
bash复制useradd --system --user-group --no-create-home \
--home-dir /opt/arm/licenceserver/22.1.3 allinea
mkdir /var/log/arm
chown allinea: /var/log/arm
ini复制# /opt/arm/licenceserver/22.1.3/lib/systemd/system/allinea-licenceserver.service
[Service]
Environment=ARM_LICENSE_DIR=/opt/arm/licenceserver/22.1.3/licences
ExecStart=/opt/arm/licenceserver/22.1.3/bin/allinea-licenceserver
User=allinea
bash复制ln -s /opt/arm/licenceserver/22.1.3/lib/systemd/system/allinea-licenceserver.service \
/etc/systemd/system/
systemctl enable allinea-licenceserver
systemctl start allinea-licenceserver
浮动许可证包含两个关键文件:
典型命名约定:
code复制Licence.server.<标识> # 服务端
Licence.client.<标识> # 客户端
bash复制cp Licence.server.physics /opt/arm/licenceserver/22.1.3/licences/
bash复制cp Licence.client.physics /opt/arm/forge/22.1.3/licences/Licence
ini复制type=2
serial_number=1014
hostname=license-server.cluster.domain # 修改为实际服务器地址
serverport=4252
bash复制systemctl restart allinea-licenceserver
对于混合架构集群,建议按架构分离许可证:
bash复制mkdir -p /opt/arm/licenses/licenses_{x86_64,aarch64}
bash复制# For x86_64节点
export ALLINEA_LICENSE_DIR=/opt/arm/licenses/licenses_x86_64
# For AArch64节点
export ALLINEA_LICENSE_DIR=/opt/arm/licenses/licenses_aarch64
通过环境变量控制日志级别:
bash复制# 在服务配置文件中添加
Environment=ALLINEA_LICENCE_LOGFILE=/var/log/arm/allinea.log
Environment=ALLINEA_LICENCE_LOGLEVEL=3
日志级别说明:
服务启动后可通过Web页面监控状态:
code复制http://<server-ip>:4252/status.html
典型输出示例:
html复制[Licences start]
[Licence Serial Number: 1014]
[2 licences available]
[Client 1]
[mac=00:04:23:99:79:65; uname=user1; pid=14007]
[Latest heartbeat: 2023-07-20 14:30:15]
[Licences end]
安全提示:如需限制访问,可设置ALLINEA_SILENT_LICENCESERVER=1禁用状态页面
当计算节点与许可证服务器之间存在防火墙时,可通过SSH隧道解决:
ini复制hostname=localhost
bash复制ssh -L 4252:license-server.cluster.domain:4252 jump-host
bash复制telnet localhost 4252
bash复制# 测试端口连通性
nc -zv license-server 4252
# 检查服务状态
systemctl status allinea-licenceserver
journalctl -u allinea-licenceserver -n 50
code复制超时 = beat参数 × (retry_limit + 1)
例如beat=60,retry_limit=4时,超时为300秒
某超算中心采用x86_64和AArch64混合架构,配置方案如下:
code复制/opt/arm/licenses/
├── licenses_aarch64/
│ └── Licence.cluster_aarch64
├── licenses_x86_64/
│ └── Licence.cluster_x86
└── server/
├── Licence.server_aarch64
└── Licence.server_x86
bash复制# 在作业提交脚本中根据架构设置
case $(uname -m) in
x86_64) export ALLINEA_LICENSE_DIR=/opt/arm/licenses/licenses_x86_64 ;;
aarch64) export ALLINEA_LICENSE_DIR=/opt/arm/licenses/licenses_aarch64 ;;
esac
通过SSH隧道实现远程许可证访问:
bash复制autossh -M 0 -f -N -L 4252:localhost:4252 license-gateway
ini复制hostname=localhost
serverport=4252
bash复制#!/bin/bash
while true; do
if ! nc -z localhost 4252; then
pkill autossh
autossh -M 0 -f -N -L 4252:localhost:4252 license-gateway
fi
sleep 60
done
bash复制# 每日备份许可证配置
tar czf /backup/licenceserver-$(date +%F).tgz \
/opt/arm/licenceserver/22.1.3/licences \
/etc/systemd/system/allinea-licenceserver.service