ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

浏览器直达服务器串口:百敖基于 openUBMC 的 Web SOL 技术实践

浏览器直达服务器串口:百敖基于 openUBMC 的 Web SOL 技术实践 作者汪涛南京百敖软件有限公司技术总监openUBMC技术委员会委员在BMC、BIOS等固件领域从事研发14年多次承担国家科技支撑计划拥有丰富的服务器固件领域研发经验。引言在服务器运维中当系统宕机、无法启动或网络中断时串口控制台往往是诊断和恢复的核心途径。传统方式依赖专用客户端软件部署复杂、跨平台不便尤其在紧急场景下效率低下。为此南京百敖团队基于 openUBMC架构实现了 Serial Over LANSOL功能的 Web 化迁移用户无需安装任何软件直接在浏览器中访问服务器串口控制台。如下图在浏览器访问BMC串行接口及系统串行接口本文分享这一功能的完整技术实践包括架构设计、关键挑战及解决方案以及在百敖 openUBMC 商业版中的集成经验。架构设计分层构建可靠的 Web SOL 系统在实现浏览器化串口管理的过程中我们面临多项嵌入式 Web 系统常见的难题。这些挑战直接指导了架构选型最终形成清晰的三层设计前端界面层、网关层与后端服务层。这种分层不仅实现了功能还确保了兼容性、安全性和性能。1. 前端界面层利用Vue框架集成xterm.js初期尝试直接将串口原始数据输出到 HTML 时遇到了严重渲染异常——字符错乱、ANSI/VT 控制序列如光标定位、清屏无法解析导致显示与物理终端完全不一致。这直接暴露了普通 Web 元素处理复杂终端序列的局限性。因此我们选用 Vue.js 构建单页应用并集成 xterm.js 作为终端仿真核心。xterm.js 能准确解析并渲染控制序列支持色彩、滚动等完整特性。同时通过 WebSocket 实现实时双向通信并添加自动重连机制确保连接稳定性。2. 网关层安全与协议兼容的必然选择Web SOL 需要在浏览器与后端间建立持久双向通道同时必须应对嵌入式环境的资源限制和安全需求。我们早期在 WebSocket 处理上遇到兼容性问题因此需要更好的解决方案。openUBMC中集成了Nginx因此它成为理想选择它高效处理 TLS 1.2/1.3 加密传输、WebSocket 协议升级与代理转发。同时集成 JWT 身份验证、IP 访问控制及严格 CSP 策略提供统一的安全入口和流量分发能力避免直接暴露后端服务。3. 后端服务层高并发与底层操作的权衡后端的核心难点在于高效管理多个 WebSocket 会话同时精准操作底层 TTY 设备。 Lua WebSocket库在Skynet协程环境下会出现阻塞异常而串口配置中还遇到回声干扰如“阶梯式换行”和硬件端口识别问题。为此我们优化了WebSocket的实现并兼容了Skynet的协程框架重构事件处理逻辑最大化地复用了Skynet高并发能力来管理多个WebSocket对话。串口通信模块则通过 C 扩展实现使用 cfmakeraw() 将 TTY 设为 raw 模式禁用内核级处理如回车转换采用读写分离架构避免数据回显干扰。同时通过对接openUBMC的SerialManagement 服务支持了BMC与服务器OS的串口切换能力让Web SOL的能力进一步增强。通过层层攻克上述挑战这套三层架构最终在 openUBMC 上完美落地了 Web SOL 系统实现了高效、可靠且安全的浏览器化串口管理。产品化集成落地百敖 openUBMC 商业版功能开发完成后我们将其模块化封装前端资源、Nginx 配置、后端服务通过openUBMC的Conan体系构建和管理。最终结合百敖自研的其他能力实时监控界面、灵活的传感器告警策略等基于openUBMC 25.06 社区发行版推出了百敖的openUBMC商业发行版。总结与展望本次 Web SOL 的成功实践充分验证了 openUBMC 架构的灵活性和扩展性其基于 Skynet、D-Bus、Lua/C 混合开发以及模块化构建体系能够高效支持各类新型运维特性的快速集成与落地为服务器远程管理提供了广阔的创新空间。同时这次从底层 TTY 操作到 Web 前端的完整开发过程也标志着百敖团队已具备深厚的 openUBMC 技术积累能够为客户提供从功能定制、性能优化到安全加固的全栈开发服务满足多样化的国产化服务器管理需求。未来我们将继续基于 openUBMC 平台迭代更多实用特性。我们相信通过持续的技术迭代与生态建设百敖openUBMC将为服务器远程管理提供更加强大、便捷且安全的解决方案助力企业数据中心实现更高水平的运维自动化与智能化。欢迎关注openUBMC社区官网https://www.openubmc.cn代码仓地址https://gitcode.com/openUBMC
返回列表