刚帮上海的老同行远程把许可服务器迁移完,俩人连麦折腾了一晚上,他说下次来荆州请我吃本地菜。
他那边情况是真离谱。老服务器跑了八年,系统还是Win Server 2012,UG/NX的许可管理器版本停在了9.5,厂商早就不维护了。最要命的是当年的许可文件是手工改过机器码的,绑定了一堆自定义环境变量,导出工具直接报错说"格式不识别"。他试了三种方式想把配置扒下来,要么乱码要么缺字段,连注册表里的键值都是当年某个离职工程师手动加的,文档里根本查不到。新服务器是Win Server 2022,许可管理器要求最低11.0,中间跨了三个大版本,官方迁移指南压根没写这种跨代场景。他说"我感觉不是在迁移,是在考古"。
第一段讲先说最蠢的办法:直接拷贝许可文件。他一开始就想把lmgrd和ugslmd那两个核心文件连同.lic一起复制到新机器上,改个路径就完事。结果启动服务那一瞬间,新服务器网卡识别到的MAC地址跟许可文件里写死的对不上,许可守护进程直接拒绝加载。更惊险的是,他老服务器还没停,两台机器同时向同一个广播地址发心跳,全公司32个终端同时弹出"许可冲突"的红色警告,设计师们以为系统崩了,群里瞬间炸锅。他手都在抖,赶紧把老服务器网线拔了才稳住。教训就是:许可文件里的硬件指纹不处理干净,新旧两台同时在线就是灾难。
第二段讲厂商官方迁移工具。他后来从西门子支持门户下了个License Transfer Utility,版本倒是匹配11.0了,但运行到60%的时候卡住不动,日志里反复刷"legacy node ID mismatch"。我们连麦看了半天,发现是老许可文件里有一个十六进制的节点标识符,当年被手动从物理网卡MAC改成了虚拟网卡的地址,官方工具校验时两边对不上就死循环。差点出大事的是,这工具在卡住之前已经把老服务器上的许可状态标记为"已迁出",等于说如果我们这时候强制中断,老许可作废、新许可又没生成,全公司明天上班就是一台都打不开。最后我们手动用十六进制编辑器把那个字段改回物理MAC,工具才跑通。他当时说"我后背全湿了"。
第三段讲真正做到"无感"的那个方案:新服务器先装好11.0许可管理器,把所有环境变量、服务依赖、防火墙规则全部预配完毕,然后用离线模式导入重新签发的许可文件,最后只切DNS。对,就是让客户端认的不是IP而是域名,切换的时候改一下DNS解析指向,终端那边连弹窗都没有,下一个心跳周期自动就找到新服务器了。我们提前在测试机上验证了三轮,确认心跳超时阈值设的是120秒,DNS切换在这窗口内完成用户完全无感。但这里也差点翻车——他公司路由器有DNS缓存,TTL设的3600秒,切换后前几分钟有几台机器还在往老地址发请求,眼看就要触发许可失联告警。幸好我们提前把路由器缓存手动清了,不然那几分钟够他心脏骤停一次。

五款方案横评下来,直接拷贝最省事但最危险,官方工具最正统但容错为零,注册表导入中间方案依赖太多,第三方管理软件纯属多余,只有"预配环境+离线导入+DNS切换"这套组合拳真正做到了用户端零感知。其他四种或多或少都会让终端弹一次报错、断一次连接,哪怕只有几秒钟,对正在跑渲染任务的设计师来说就是心态爆炸。
最后说两个迁移前绝对不能省的校验步骤。第一,拿文本编辑器打开许可文件,逐行核对HOST ID、端口号、到期日期这三个字段,跟新服务器实际环境一项一项比对,别信任何自动检测工具,眼睛看最靠谱。第二,迁移当天提前给所有客户端发一条通知,让他们保存好文件退出软件,别想着"无感"就偷偷切。万一DNS生效慢了哪怕三十秒,没保存的图纸就没了,那可不是请顿荆州菜能赔得起的。
弄完已经快凌晨两点了,他在那头长出一口气,你先把老服务器硬盘拆下来锁柜子里,别到时候又出幺蛾子。