CodeMeter TMR 服务器
软件授权的核心目的在于保护独立软件开发商 (ISV) 的数字知识产权,而非增加软件的使用门槛,更不应在授权服务器宕机时导致软件彻底瘫痪。在汽车制造等关键领域,授权访问中断可能直接导致核心生产线停工停产,因此,具备高可用性的冗余机制成为了必须的系统要求。
CodeMeter TMR 服务器专为此类严苛场景设计。TMR 即三重冗余 ,该架构将“三取二” (2-out-of-3) 授权机制与高可靠的数据中心技术深度结合。其核心运行机制为:由三台授权服务器构成一个联合集群,只要其中任意两台服务器保持在线,整个系统即可维持不间断运行。
许可证结构
每份 TMR 授权在创建时均会生成一式三份,并被自动赋予专属标识——TMR-ID。该标识属于“授权数量” (License Quantity) 的特定属性,用于确保系统始终能够精准识别并关联这三份授权。因此,每生成一份全新的 TMR 授权,系统都会为其分配连续的 TMR-ID 编号。
只有当三份授权的企业代码 (Firm Code)、产品代码 (Product Code) 以及 TMR-ID 完全一致,且产品项目 (Product Items) 的所有其他属性均保持相同时,才能组合构成一个有效的 TMR 联合授权。这种严格的匹配校验机制,在确保授权数据完整性的同时,也构建了具备高度防篡改能力的安全运行环境。
孪生 CmContainer
三份底层授权被分别置于三个独立的 CmContainer 中,并共享相同的 CmActID。TMR 系统在前端将其合成为一个单一的虚拟 CmContainer,以便于统一调用与管理,而三个实际的底层容器则在后台完全静默运行。
通过掩码字节 (Mask Byte),系统能够精准区分该虚拟 CmContainer 与其他授权容器:
| CmContainer | Mask Byte |
| CmDongle | 1-, 2-, 3- |
| CmActLicense | 128-, 129- |
| CmActLicense Universal Firm Code | 130- |
| 虚拟 CmContainer TMR 服务器 | 131- |
| CmCloudContainer | 140- |
“三取二”运行机制
必须确保至少两份底层授权处于可用状态,TMR 联合授权方可生效。若三份底层授权中仅剩一份在线,虚拟 CmContainer 将自动隐藏并停止供应该 TMR 授权。
即使恶意攻击者获取了包含其中一份底层授权的单一 CmContainer,也无法调用完整的 TMR 授权。CodeMeter 服务器会从底层拦截任何带有 TMR-ID 专属标识的单点授权请求,确保授权仅能在符合规范的 TMR 集群系统中合法运行。
系统部署架构
完整的 TMR 系统由五台服务器组成,通常以虚拟机形式进行部署。系统前端配置两台 TMR 孪生服务器作为下游接口,通过统一的虚拟 IP 地址处理客户端的接入请求。下游服务器通过镜像映射后方三台上游 CodeMeter 服务器中的实体 CmContainer,从而动态生成虚拟 CmContainer 及相应的 TMR 授权。
系统环境与安全隔离机制如下:
-
运行环境: TMR 下游服务器目前以 Linux 服务的形式运行;而上游 CodeMeter 服务器则同时兼容 Linux 与 Windows 部署环境。
-
访问隔离: 通过严密的访问规则配置,底层的 CodeMeter 授权资源仅对下游 TMR 服务器开放,从网络架构层面彻底阻断任何来自客户端的直接访问请求。
主备无缝切换机制
在企业网络环境中,TMR 系统通过单一的虚拟 IP 地址统一对外提供服务,并将所有访问请求路由至当前的主服务器(Active Server)。系统的主备切换完全依赖成熟的数据中心底层技术实现:
当主服务器发生故障或宕机时,其备用孪生服务器(Passive Server)将立即通知网络基础架构,全面接管发往该虚拟 IP 地址的所有数据包,从而无缝切换并承担起主 TMR 服务器的角色。而当原主服务器恢复上线后,系统会将其自动降级并配置为新的备用节点,随时待命以应对未来的切换需求。