您的位置:  首页 > 技术杂谈 > 正文

【开发者指南末篇】如何开发一个 Copilot?

2024-03-27 15:00 https://my.oschina.net/u/6606114/blog/11049274 OpenNJet 次阅读 条评论

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 应用引擎的三倍。

展开阅读全文
  • 0
    感动
  • 0
    路过
  • 0
    高兴
  • 0
    难过
  • 0
    搞笑
  • 0
    无聊
  • 0
    愤怒
  • 0
    同情
热度排行
友情链接