NGINX 向云原生演进,All in OpenNJet
![]()
我们接着上回书 “【开发者指南来的】如何开发一个 Copilot?”,最后一节了!
装完之后是默认的配置,把 Lua 先注释掉,动态功能列为必须项。ctrol config API 对外提供 restful 声明是 API 接口的所有处理,主动健康检查、动态 upstream的变更、动态 location 添加。而 doc 模块是内置的 Open API 的界面,可以通过这个界面来发送restful 接口,从而使API 的定义集成到整个 NJet 的可执行文件中,这样 API 的文档就和实际的后台代码保持一致。
vtsd就是 VTS 模块,我们将它拆分,对外提供展示以及Prometheus去采集的时候就去访问控制面,但实际上去做统计是要统计worker。所以另外一个模块是在主配置的 worker 中。底下的基本和 NJet主配置一致,access log 默认是 access log off。Listen 起的是另外一个cycle 和主 master 以及 worker 监听的端口不一样。通过扩展模块配置了一些location。比如对外监听的 8081 端口,提供了config 的API默认是version 二级别。API的设计能够显示当前有多少动态模块加载并注册,然后通过发送get 请求以及 post 的请求就可以动态地修改里面的值。
有动态黑白名单,该配置是获取到主配置的路径以及信息。具体要去修改,可以通过动态模块去修改,其实我们修改的是主配置里面的东西,比如要针对某个 location 进行动态 Modsecurity的开关或者 log access 开关,不需要去改 control 平面的东西,而是去改主配置的东西,所以这边显示出来的 location 的信息是主配置的信息。具体的代码也一样,如果大家要参考,比如实现一个helper,可以参考源码目录。
实现的HA,内部是用 vrrp 协议实现可实例的高可用。高可用的配置指令也是一样的,加载模块提供一个配置文件,类似 keepalive ,语法基本保持一致,指定一个网卡,它的Virtual Router ID,每个实例上的级别,要配的 IP、角色,本次没有详细列举HA相关的方面,是因为目前动态框架更多关注其他两个模块,如果有兴趣的话可以上官网博客查看相关的文章。---> 官网
以上文字实录均来源于手把手讲解课程,二者结合食用更佳!
NJet 应用引擎通过内核重构实现了独特的运行时动态配置加载能力,是新一代高性能 Web 应用引擎。NJet 拥有高性能数据面处理能力,将集群、高可用、主动健康检查、声明式 API 等多种辅助功能,通过 NJet 独特的副驾驶 CoPilot 服务框架调度,从而方便功能扩展,隔离管理 / 控制功能对数据面的影响,NJet 应用引擎性能超过 CNCF 推荐 Envoy 应用引擎的三倍。