基于 Portal 的 NJet 模拟环境
背景介绍
作为开发人员,经常碰到的问题是代码开发、测试都是好的,但在客户现场/生产环境,总是出各种各样的问题。这种问题,有可能是实现的逻辑,但更多的情况是现场人员的配置问题导致。因此开发人员需要一个和现场完全一致的环境,进行现场的故障复现,配置验证。
NJet 作为应用引擎,应用场景复杂,配置灵活,当然也面临此类问题。为了快速模拟 NJet 配置,验证整条业务链路是否通畅,同时检验系统在高压、大配置数据场景下的承载能力,并确认证书、限流等关键机制是否生效,NJet 的模拟环境应运而生。我们期望通过该环境:
自动构建、完全模拟客户的网络环境拓扑
可视化验证客户的配置有效性
可进行批量/单独的功能测试
能够进行域名解析,证书校验,客户端地址等模拟,辅助功能验证
同时,出于简化 GUI 管理的目的,该模拟应用利用 NJet 存在的 Portal 能力,避免了相关的认证授权的开发工作。
NJet 模拟应用的安装
随 NJet4.0 发布,NJet 发布了模拟应用的安装包,因此需首先安装 Portal 安装包,在 Portal 部署完成后,通过 GUI 安装模拟应用
参考 https://njet.org.cn/cases/njet_portal/ 安装 NJet Portal
在 portal 上添加 “Portal 版 NJet 模拟环境应用, 目前发布的模拟应用包为 simulate-app_1.0.2.npk,请从 NJet 的 release 站点下载
模拟应用授权
如上图所显示,模拟应用部署后,请参考 https://njet.org.cn/cases/njet_portal/ 对模拟应用完成授权,用户关联。
模拟应用配置
为支持网络拓扑模拟,以及调用可示化,模拟应用需要特定的配置,如下。请维持如下
登录 portal 应用后,就可以看到模拟应用了
功能展示
配置导入
功能模拟依赖于导入配置文件,目前配置文件需要使用 json 格式,目前需要手工把 nginx 格式的配置文件转换为 json,paste 或上传,在下个版本中,将直接支持 nginx.conf 格式的配置
除导入外,模拟应用中也提供了多种示例配置,供参考
除配置文件外,还可以配置模拟访问的特定的 client ip,供特定的业务模拟使用
如下图所显示,可以看到页面中有很多实例配置,可自由切换,也可以导入 JSON 文件的配置
拓扑展示
如点击 示例配置 1 (无证书)可直接进进入模拟页面,该页面直接生成了包括客户端->proxy->应用服务的网络拓扑,并详细描述 proxy 层面的业务配置,需着重说明的是,模拟环境中显示的 IP 地址,完全模拟了实际客户环境的地址。如下图所显示,展示了一个具备两个 server 的 proxy 层配置(test.backenda.com 和 test.backendb.com)
业务流程验证
在模拟环境中,下侧为 web terminal,可以输入特定的命令,单条或批量发送 HTTP 请求,验证配置的正确性。目前内置了 curl 和 wrk 命令,前者进行单条的功能测试,后者进行批量的测试
单条测试
如下图所显示,单条测试中,在 GUI 界面可以看到完整的执行路径(图上的虚线涉及的点),比如通过 curl 发了一条到 testbackenda.com 的请求,可以从图上直观的看到,请求直接由 proxy 层的 path “/”处理了,没有转发到后端的应用服务
批量测试
为了验证配置中某些特定的功能,如限流等,可以在 web terminal 输入 wrk 命令进行压测(批量命令的执行路径不会更新到 GUI 中)
其他功能
模拟应用除上述展示的能力外,还实现了如下功能,详情参考 NJet docs 站点,具体有
通过导入证书,可以完整的模拟 HTTPS proxy 能力
完整的模拟历史,供配置分析
Web terminal 的实现帮助
客户端 ip 地址的任意更换,支持特定的算法
超大规模的模拟配置支持(可支持多大 512 个 server,1000 个 location,512 个后端服务)
参考说明
目前只支持 json 格式的配置导入,json 格式请参考,json配置文件支持
依赖 NJet 4.0.0
出于安全考虑,NJet 安装后,需要修改 agw_admin 密码才能进行 portal 应用的安装
在下一版本中,将直接支持 nginx.conf 格式的导入,从而服务于 nginx 向 NJet 的迁移
版权声明: 本文为 InfoQ 作者【通明湖】的原创文章。
原文链接:【http://xie.infoq.cn/article/33ff75781be98d4ebab47b966】。文章转载请联系作者。







评论