27 Star 146 Fork 24

GVPOpenNJet / OpenNJet

2024-05-07 10:25
chenluboTM

Bug fix


  • njet-helper-dynconf-update-module 默认不编译,该模块会导致privilege进程重启
  • 静态文件中已配置access_by_lua_block, 加载动态Lua模块后,location 无法访问问题修复
  • debug版本,加载Lua模块 reload 问题修复

rpm包安装


下面是centos系统使用步骤(其他系统需要从下载链接选择对应合适的安装包)

  1. 下载 njet-2.1.1-1.el7.x86_64.rpm安装包
  2. 上传文件到待安装主机
  3. sudo yum localinstall ./njet-2.1.1-1.el7.x86_64.rpm
  4. systemctl start njet

otel安装包为opentelemetry模块的安装包(如果需要该功能,从下载连接选择对应的安装包安装即可)
OpenNJet ubuntu deb安装包基于18.04版本编译,可在ubuntu20、ubuntu22上安装使用

已安装 njet 的 ubuntu , 升级njet 包:
sudo systemctl stop njet
sudo apt-get update
sudo apt install --only-upgrade njet

docker方式运行


可使用如下命令启动运行:
docker run -d --rm --privileged tmlake/njet:latest
详细运行方法参考: https://njet.org.cn/cases/njet-docker/

最后提交信息为: fix: lua module reload core dump
2024-03-28 14:38
chenluboTM

新功能


  • 升级Nginx core到1.25.3,主要更新有:修复已知bug,支持http3功能,TLSv1.3默认支持,优化mp4与gzip功能等
  • 升级Openresty core到Version 1.25.3.1 ,主要更新有
    • 支持pcre2
    • 支持lua_ssl_certificate和 lua_ssl_certificate_key(不支持国密证书)
    • lua_http模块升级到0.10.26,修复已知bug,增加TLSv1.3默认支持,性能优化
    • lua_stream模块升级到0.0.14,修复已知bug,优化性能
    • lua-core升级到 v0.1.28
  • 控制面api统一入口: 所有控制面的配置接口都统一使用/api作为配置入口
  • udp流量劫持(支持ipv4/ipv6)
  • auth_basic_kv功能:支持通过api接口操作kv 数据库动态设置auth 验证密码
  • Stream 指标采集,支持HTML, JSON及Prometheus 格式输出
  • Stream 指标采集动态配置, 支持开关及Filter key 设置
  • 动态Lua 脚本配置, 支持content_by_lua 及 access_by_lua 脚本内容动态修改
  • 动态location,支持使用if 、limit_except 指令
  • 动态http map 功能,添加,删除,修改 动态map。

Bug fix


  • 解决了增加dyn_loc,返回json 数据不合法的问题
  • 解决了vts 配置stream ,connect.active 指标不正确的问题
  • 解决了kv store 的 get 多次调用时,返回的长度不对的问题
  • 解决了删除嵌套location时,如果子location正在处理请求,删除该location会导致core的问题
  • 解决了添加ssl的VS时会产生异常的问题
  • 解决了正在处理请求时,添加删除VS会导致内存泄漏的问题
  • 解决了API的回显会被截断的问题
  • 解决了在VS中配置的ssl证书地址使用变量时,再进行查询修改时会导致异常的问题
  • 解决了在location中添加\n会导致core的问题

遗留已知问题


  • tcp流量劫持基于iptables nat表prerouting添加规则,只针对外部访问(非本机ip)的数据做流量劫持
  • HA/MA 配置同步关于命令式api 动态删除location消息同步存在问题
  • 应用加速功能,删除location后本地缓存文件没有立马同步清理
  • 配置沙箱进程,在NJet 可执行文件热升级时,无法在旧的沙箱进程退出后,再启动新的配置沙箱
  • 动态VS,只能在存在的listen 上添加VS ,该功能不能创建listen
  • 动态VS,不支持zone、 location、ssl_ocsp、ssl_stapling、quic 指令
  • 动态VS,不支持动态创建 新的error_log、access_log 文件
  • 动态location,不支持zone 指令
  • 动态SSL证书添加时必须有初始证书,通过动态VS添加的ssl server,如果未配置初始证书,通过动态ssl接口添加证书会添加失败

rpm包安装


下面是centos系统使用步骤(其他系统需要从下载链接选择对应合适的安装包)

  1. 下载 njet-2.1.0-1.el7.x86_64.rpm安装包
  2. 上传文件到待安装主机
  3. sudo yum localinstall ./njet-2.1.0-1.el7.x86_64.rpm
  4. systemctl start njet

otel安装包为opentelemetry模块的安装包(如果需要该功能,从下载连接选择对应的安装包安装即可)
OpenNJet ubuntu deb安装包基于18.04版本编译,可在ubuntu20、ubuntu22上安装使用

已安装 njet 的 ubuntu , 升级njet 包:
sudo systemctl stop njet
sudo apt-get update
sudo apt install --only-upgrade njet

docker方式运行


可使用如下命令启动运行:
docker run -d --rm --privileged tmlake/njet:latest
详细运行方法参考: https://njet.org.cn/cases/njet-docker/

2024-01-15 14:56
chenluboTM

Bug fix


  • 解决reuseport 引起的access log api 显示listen ip 端口重复的bug
  • 解决njet启动后,直接访问prometheus 格式的metrics 地址出错的问题
  • 解决配置了stream map,多次reload 出现core 的问题
  • 解决了vts 配置stream ,connect.active 指标不正确
  • 解决了https_cache 模块put 接口add 一个cache 立马del ,产生core 的问题
  • telemetry 模块配置 telemetry webserver ,njet -t 报段错误的问题
  • telemetry 模块 查询和修改 telemetry 配置core 的问题

遗留已知问题


  • tcp流量劫持基于iptables nat表prerouting添加规则,只针对外部访问(非本机ip)的数据做流量劫持
  • HA/MA 配置同步关于命令式api 动态删除location消息同步存在问题
  • HA/MA 配置同步存在延迟,不能在对应节点启动后立即同步
  • 应用加速功能,删除location后本地缓存文件没有立马同步清理
  • 配置沙箱进程,在NJet 可执行文件热升级时,无法在旧的沙箱进程退出后,再启动新的配置沙箱
  • 动态VS,只能在存在的listen 上添加VS ,该功能不能创建listen
  • 动态VS,不支持zone、 location、if、ssl_ocsp、ssl_stapling、quic 指令
  • 动态VS,不支持动态创建 新的error_log、access_log 文件
  • 动态location,不支持zone、if 、limit_except 指令
  • 因为lua模块目前不支持pcre2,NJet目前不能用pcre2编译
  • 动态SSL证书添加时必须有初始证书,通过动态VS添加的ssl server,如果未配置初始证书,通过动态ssl接口添加证书会添加失败

rpm包安装


下面是centos系统使用步骤(其他系统需要从下载链接选择对应合适的安装包)

  1. 下载 njet-2.0.1-1.el7.x86_64.rpm安装包
  2. 上传文件到待安装主机
  3. sudo yum localinstall ./njet-2.0.1-1.el7.x86_64.rpm
  4. systemctl start njet

otel安装包为opentelemetry模块的安装包(如果需要该功能,从下载连接选择对应的安装包安装即可)
OpenNJet ubuntu deb安装包基于18.04版本编译,可在ubuntu20、ubuntu22上安装使用

已安装 njet 的 ubuntu , 升级njet 包:
sudo systemctl stop njet
sudo apt-get update
sudo apt install --only-upgrade njet

docker方式运行


可使用如下命令启动运行:
docker run -d --rm --privileged tmlake/njet:latest
详细运行方法参考: https://njet.org.cn/cases/njet-docker/

最后提交信息为: fix sonor
2023-12-29 10:15
chenluboTM

新功能:


  • ftp 反向代理(被动模式)支持
  • 通过SNMP接口输出指标
  • tcp流量劫持
  • 动态API配置流量劫持
  • 应用加速
  • ADC设备注册功能
  • HA/MA集群配置同步功能
  • Stream动态Map设置
  • 实现配置沙箱功能
  • 集成ModSecurityV3,支持location 动态开启及关闭modsecurity
  • 动态添加VS 功能
  • proxy_ssl_alpn 设置alpn 值
  • NJet KIC(详细参考KIC release 说明)

功能增强:


  • KV模块实现删除接口
  • 命令式API在应用变更后持久化全量配置
  • proxy_pass 指令支持:域名,ip,unix socket
  • TCP劫持获取实际目标地址优化,支持通过set 赋值给其他变量。
  • 动态location 删除时,有业务时延迟删除。
  • 动态location 的变量优化。
  • 声明式/命令式API先发给配置沙箱进行校验后再应用到worker中
  • CoPilot中可以接收、处理消息
  • 配置沙箱在reload时,先停止旧进程再启动新的沙箱
  • http3/quic协议中支持RFC8998(TLS1_3_CK_SM4_GCM_SM3算法)
  • 支持CloudOS操作系统x86_64架构下的编译

Bug fix


  • CoPilot:ctrl实现的异步api重复处理请求
  • sidecar:在一个后端服务失败后,无法选择后续的server
  • vts: 配置dump指令导致reload时core
  • 动态location:删除动态location时,子location中的变量删除不掉,会导致内存泄漏
  • 配置慢启动后,上游服务器恢复重启,慢启动未生效
  • 多次重复更新动态黑白名单出错
  • 动态locaiton中,location body和proxy pass均为空,添加不成功
  • ubuntu环境,添加动态location时json不正确后,进行reload,存在内存泄漏
  • 在动态VS中,添加动态location时,如果servername需要转义,添加时不成功,提示no find server

遗留已知问题


  • tcp流量劫持基于iptables nat表prerouting添加规则,只针对外部访问(非本机ip)的数据做流量劫持
  • HA/MA 配置同步关于命令式api 动态删除location消息同步存在问题
  • HA/MA 配置同步存在延迟,不能在对应节点启动后立即同步
  • 应用加速功能,删除location后本地缓存文件没有立马同步清理
  • 配置沙箱进程,在NJet 可执行文件热升级时,无法在旧的沙箱进程退出后,再启动新的配置沙箱
  • 动态VS,只能在存在的listen 上添加VS ,该功能不能创建listen
  • 动态VS,不支持zone、 location、if、ssl_ocsp、ssl_stapling、quic 指令
  • 动态VS,不支持动态创建 新的error_log、access_log 文件
  • 动态location,不支持zone、if 、limit_except 指令
  • 因为lua模块目前不支持pcre2,NJet目前不能用pcre2编译
  • 动态SSL证书添加时必须有初始证书,通过动态VS添加的ssl server,如果未配置初始证书,通过动态ssl接口添加证书会添加失败

rpm包安装


下面是centos系统使用步骤(其他系统需要从下载链接选择对应合适的安装包)

  1. 下载 njet-2.0.0-1.el7.x86_64.rpm安装包
  2. 上传文件到待安装主机
  3. sudo yum localinstall ./njet-2.0.0-1.el7.x86_64.rpm
  4. systemctl start njet

otel安装包为opentelemetry模块的安装包(如果需要该功能,从下载连接选择对应的安装包安装即可)
OpenNJet ubuntu deb安装包基于18.04版本编译,可在ubuntu20、ubuntu22上安装使用

最后提交信息为: Merge branch 'dynconf' into main
2023-11-02 16:02
chenluboTM

Bug fix


  • 修复stream流量劫持功能bug,关于配置njtmesh_dest指令,可能导致stream代理不能正常通信的问题

rpm包安装


  1. 下载 njet-1.2.3-1.el7.x86_64.rpm, njet-otel-1.2.3-1.el7.x86_64.rpm 安装包
  2. 上传文件到待安装主机
  3. sudo yum localinstall ./njet-1.2.3-1.el7.x86_64.rpm
  4. sudo yum localinstall ./njet-otel-1.2.3-1.el7.x86_64.rpm
  5. systemctl start njet

其他rpm包说明


opennjet-1.2.3-1.ocs9.0.x86_64.rpm 对应OpenCloud9
opennjet-1.2.3-1.tl2.x86_64.rpm 对应Tencent Linux Sever 2,
opennjet-1.2.3-1.tl3.x86_64.rpm 对应Tencent Linux Server 3

2023-10-16 17:20
chenluboTM

新功能:


  • 基于cpu使用率动态调整worker数量(sysguard_cpu)
  • Proxy protocol V2协议,支持设置TLV 字段值

Bug fix


  • 修复配置主动健康检查后,reload会导致进程core的问题
  • 动态Map配置,在worker数大于1及重加载时导致进程core的问题
  • Location 多表达式,等号后面无空格解析bug。例如:location ($uri =/reviews/0)
  • sticky_learn 超时删除,core 的bug
  • upstream 轮询算法bug修改
  • debug日志级别下,app_sticky、cluster_limit_conn、cluster_limit_req三个模块存在core的bug
  • debug日志级别下,动态location 模块存在core的bug
  • vts 动态api接口关于动态修改vhost_traffic_status_filter_by_set_key指令不生效的问题
  • 动态log模块get接口关于escape字段解析有误的问题

rpm包安装


  1. 下载 njet-1.2.2-1.x86_64.rpm, njet-otel-1.2.2-1.x86_64.rpm 安装包
  2. 上传文件到待安装主机
  3. sudo yum localinstall ./njet-1.2.2-1.x86_64.rpm
  4. sudo yum localinstall ./njet-otel-1.2.2-1.x86_64.rpm
  5. systemctl start njet
最后提交信息为: update src/core/njet.h.
2023-09-14 10:03
chenluboTM

新功能:


  • 动态ssl证书支持rsa、ecc、ntls(国密)三种证书
  • 动态http map 键值映射关系配置

增强:


  • 健康检查去重,对同一个upstream下重复的server只检查一次
  • 动态ssl证书功能方案更新,先发送worker0验证,成功后再由其他worker进行更新
  • Upstream api schema 改造。
  • slow_start 慢启动功能改造。

Bug fix


  • 修复json schema分配未初始化问题
  • Vts 权重显示bug
  • Sticky Learn 会话保持,超时删除bug

rpm包安装


  1. 下载 njet-1.2.1-1.x86_64.rpm, njet-otel-1.2.1-1.x86_64.rpm 安装包
  2. 上传文件到待安装主机
  3. sudo yum localinstall ./njet-1.2.1-1.x86_64.rpm
  4. sudo yum localinstall ./njet-otel-1.2.1-1.x86_64.rpm
  5. systemctl start njet
2023-08-28 10:37
chenluboTM

新功能:


  • 故障注入
    支持延迟故障注入、状态码故障注入、延迟和状态码故障注入同时设置
  • api动态故障注入
    能够通过api接口动态的设置故障注入
  • 支持http3/quic协议
  • 提供http3测试工具,可在Gitee(https://gitee.com/njet-rd/http3-tools)下载

增强:


  • Json与结构体转换采用 Json schema,能够增强代码健壮性
  • 动态ssl证书幂等性支持,多次动态添加相同的ssl证书,会提示证书重复错误
  • 控制面API接口ACL控制
  • 声明式API全量配置持久化
  • 支持OpenEuler操作系统aarch64及x86_64架构下的编译

Bug fix


  • 解决upstream server 异常,选择下一个server时,转发消息丢失body 的bug。
  • 解决了server中同时配置127.0.0.1和0.0.0.0时,不能对127.0.0.1和0.0.0.0中任意添加动态location的问题。
  • 解决了动态模块部分添加成功时,打印多余日志的问题。
  • copilot reload 造成的,channel 报recvmsg returned invalid ancillary 的问题。
  • split_clients_2后端比例填写100和0时, sample 函数的处理逻辑问题。

遗留已知问题:


  • 动态ssl证书功能动态添加多个证书,reload后重新动态加载顺序不一致问题
  • 动态ssl证书功能只支持配置文件中非变量证书(证书路径存在变量)的情况
  • split clients 模块边界条件(后端server配置比例小于100%, 中间配置*,不配置后端server比例)时, 进行动态更新时,提示的错误信息有问题

rpm包安装


  1. 下载 njet-1.2.0-1.x86_64.rpm, njet-otel-1.2.0-1.x86_64.rpm 安装包
  2. 上传文件到待安装主机
  3. sudo yum localinstall ./njet-1.2.0-1.x86_64.rpm
  4. sudo yum localinstall ./njet-otel-1.2.0-1.x86_64.rpm
  5. systemctl start njet
最后提交信息为: update README.md.
2023-07-24 15:11
chenluboTM

增强:


  • 增加VTS新指标,包括1)上游服务器timeout次数统计;2)反向代理转发请求前延迟时间统计,按50%,99%,99.9%,99.99%,99.999%这5个百分位进行统计;
  • helper api 调用动态接口默认采用短连接。

Bug fix


  • 修复重启时持久化消息的接收顺序问题,动态location 将先于其它动态模块接收到消息。
  • 修复sendmsg模块造成的内存泄漏问题。
  • 修复通过动态location新增 limit_rate,再通过动态limit修改limit_rate。产生的core问题
  • 修复location变量条件判断时多出一个右括号")",无法对多出的右括号进行处理的问题
  • 修复doc模块swagger页面多次执行会导致卡死的问题。
  • 使用相同的 prefix, 同时启 会出现 double free 问题
  • 修复编译脚本丢失 -lpcre

rpm包安装


  1. 下载 njet-1.1.2-1.x86_64.rpm, njet-otel-1.1.2-1.x86_64.rpm 安装包
  2. 上传文件到待安装主机
  3. sudo yum localinstall ./njet-1.1.2-1.x86_64.rpm
  4. sudo yum localinstall ./njet-otel-1.1.2-1.x86_64.rpm
  5. systemctl start njet
最后提交信息为: update README.md.
2023-07-10 17:27
chenluboTM

新功能


  • 动态ssl证书功能由声明式api改为命令式api
  • 配额(limit conn、limit rps、limit rate)功能声明式api动态化配置
  • 组播gossip构建集群功能;
  • 基于组播实现app_stickey 会话同步功能
  • 基于组播实现limit connection集群连接数限制功能
  • 基于组播实现limit rps集群请求数限制功能
  • 动态调整worker进程数量
  • 提供HA Copilot模块,Njet多个实例间支持VIP的配置
  • copilot框架支持helper进程在reload时可以不重启,同时强制要求相关的helper指令在配置文件中要保留
  • 国密支持stream

增强:


  • 健康检查模块添加检查项时添加对proxy_pass直接路由的upstream过滤.
  • vts性能优化

Bug fix


  • 动态accesslog模块,解决了多次配置动态accesslog会导致内存溢出的问题。
  • 动态accesslog模块,解决了修改accesslogOn开关导致的coredump问题。
  • 修改了配置主动健康检查时,缺少stream模块会导致core的问题。
  • 修改了使用错误的方法配置健康检查会导致core的问题。
  • 修改了在配置文件中配置错误的健康检查参数后,日志无报错的问题。
  • upstream_api模块,解决了state持久化功能stream模块njet重启前state持久化文件中有server,server无法修改的bug
  • upstream_api模块,解决了新增server时weight默认值为100的bug
  • dyn_location模块,解决了文件下载时删除对应的location会导致core的问题
  • dyn_location模块,解决了表达式方式下location删除功能无法正常使用的问题
  • dyn_location模块,解决了表达式方式下location_name完全一致时,启动会导致core的问题
  • dyn_location模块,解决了表达式方式无法使用ssl相关功能的问题
  • 修复集群模式下,在njet运行中,zone空间达到上限后,产生core问题
  • 修复集群模式下,zone name相同的情况下,njet启动成功产生core问题
  • 修复集群模式下,njet接收大批量请求,连接不释放,产生core问题
  • 修复集群模式下,node 已配置gossip,更新一个节点配置,其他节点配置未全一致时,产生core问题
  • 修复集群模式下,配置多zone,产生core问题
  • 修复njet某些模块,proxy_pass 配置为ip,解析失败,产生core问题
  • 修复动态ssl,入参为空数组时,产生core问题
  • 修复动态ssl,错误的入参,每请求一次,crl进程重启一次
  • 修复动态telemetry,入参为空数组时,产生core问题
  • 修复动态lmit_conn、limit_req, 限制指令配置在http,location继承后,能通过动态API修改了http区域的限制指令

rpm包安装


  1. 下载 njet-1.1.1-1.x86_64.rpm, njet-otel-1.1.1-1.x86_64.rpm 安装包
  2. 上传文件到待安装主机
  3. sudo yum localinstall ./njet-1.1.1-1.x86_64.rpm
  4. sudo yum localinstall ./njet-otel-1.1.1-1.x86_64.rpm
  5. systemctl start njet
最后提交信息为: update README.md.
2023-05-24 11:16
chenluboTM

新功能


  • 主动健康检查模块:支持健康检查状态持久化;

  • 主动健康检查模块:支持上线前的强制检查;

  • 轮询负载均衡算法优化:支持慢启动,把流量逐渐发送给新上线的server;

  • hash, random算法优化,支持成员的动态添加、删除、update;

  • 动态配置 web server模块的telemetry开关。

  • location 多表达式支持,支持与,或,非,以及混合组合

增强:


定义新的V2 版本动态配置API ,动态配置在应用变更失败时有详细的错误返回,对不支持的动态配置项返回说明:

  • 动态日志配置应用config V2接口;
  • 动态ssl证书支持congfig V2接口;
  • telemetry proxy & webserver 支持config V2接口;
  • 按比例分流模块支持新的config V2接口;
  • 动态黑白名单支持新的config V2接口;
  • doc/swagger接口统一升级为V2;
  • swagger页面增加 telemetry webserver模块的api yaml;
  • 基础SSL向铜锁迁移,以满足国密认证需要及后续的HTTP3支持;
  • HTTP协议国密支持;
  • 动态ssl证书支持铜锁;
  • 主动健康检查支持铜锁;
  • 增强了RSA/EC双证书支持;
  • 动态日志模块: 动态配置最多可添加16种format;
  • 基础框架配置简化,无需复杂的broker/message配置文件;
  • 按比例分流模块(splitclient2)增加动态配置时的业务校验: upstream比例和必须为100%,比例不能为非数值;
  • 动态location优化:添加,删除location 时,返回成功,或失败以及错误原因;
  • 动态location优化:添加location 时,先由一个worker进行校验,成功后其它worker再执行;
  • 动态location接口优化:对接口json属性进行校验。

Bug fix


  • 动态日志解决了在设置format时导致worker coredump的问题

  • 声明式api 解决了path超过四级导致coredump问题

  • 动态accesslog 模块解决了因escape未初始化的导致内存分配失败的问题

  • doc_api模块解决ctrl启动慢bug

  • 动态SSL模块解决输入空json导致的core dump

  • 动态telemetry proxy & webserver 模块 解决输入空json导致core问题

  • 主动健康检查模块解决配置持久化的问题

  • 动态location fix: reload 会导致动态添加的location内存泄漏

  • vts数据面模块解决了不配置vhost_traffic_status_zone指令时发起API请求返回错误json数据的问题

  • vts动态配置模块解决了时变量后紧跟等号(如:$request_uri=)报错的这一类相关问题。

rpm包安装


  1. 下载 njet-1.0.0-1.x86_64.rpm, njet-otel-1.0.0-1.x86_64.rpm 安装包
  2. 上传文件到待安装主机
  3. sudo yum localinstall ./njet-1.0.0-1.x86_64.rpm
  4. sudo yum localinstall ./njet-otel-1.0.0-1.x86_64.rpm
  5. systemctl start njet
最后提交信息为: feat njet1.1 release
2023-03-29 17:31
chenluboTM

下载release包解压

启动命令: sh start.sh
停止命令: sh stop.sh

最后提交信息为: update:remove memory check
C
1
https://gitee.com/njet-rd/njet.git
git@gitee.com:njet-rd/njet.git
njet-rd
njet
OpenNJet

搜索帮助