您现在的位置是:首页 > 文章详情

实录:利用OpenNJet实现动态upstream域名解析

日期:2023-08-08点击:90

场景

在使用NGINX做负载均衡进行反向代理的场景中,使用upstream 管理一组有效的上游服务器地址。 地址可以包含两类:server ip server name

其中server namenginx 启动时,必须统一解析为server ip,在整个运行过程中,upstream 中只包含解析后的server ip,并且数量,以及ip 是不会改变的,即使dns 服务器上相应的server name 对应的ip 地址列表,已经进行了更新,删除,添加。Nginx 也不会进行动态更新,如果要更新,只能重新reload nginx

启动nginx 前:

 upstream backend { server backend1.example.com; server 127.0.0.1:888; }

启动nginx 后:

 upstream backend { server 192.168.40.139; server 127.0.0.1:888; }

问题

  1. 运行过程中,如果域名对应的某个IP的机器或服务出现故障,无法进行动态隔离,必须修改 DNS 服务器上Server Name 对应的 IP 列表,并重新 Reload NGINX,导致业务中断。
  2. 运行过程中,如果在 DNS 服务器上,对server name 对应的 IP 进行,修改,添加,删除,也无法及时的反应到 NGINX 上来,也必须重新 Reload NGINX

OpenNJet 解决方案

 upstream backend { resolver 192.168.40.1 valid=10s; //valid失效时间。 server backend1.example.com resolve;//resolve 指明需动态更新 server 127.0.0.1:888; }

在upstream 里配置resolver 指定 dns 服务器地址,以及域名失效时间valid=10s, 也就是每隔10秒钟,重新请求dns 进行域名解析。域名解析对应的 IP 列表的变化,添加,删除,修改等会及时的同步到upstream 中,这样就可以通过修改dns 服务器上对应server name 的ip 列表,对服务的 IP 进行动态调整。

OpenNJet 最早是基于 NGINX1.19 基础 fork 并独立演进,随着 NGINX 版本迭代,吸收上游 NGINX 的更新,已经同步更新到 NGINX1.23.1 版本,OpenNJet 具有高性能、稳定、易扩展的特点,同时也解决了 NGINX 长期存在的难于动态配置、管理功能影响业务等问题。

作为底层引擎,OpenNJet 利用动态加载机制可以实现不同的产品形态,如 API 网关、消息代理、出入向代理,负载均衡,WAF 等等。在云原生架构中,OpenNJet 除了提供南北向通信网关的功能以外,还提供了服务网格中东西向通信、透明流量劫持、熔断、遥测与故障注入等新功能特性。

传送门:https://gitee.com/njet-rd

原文链接:https://my.oschina.net/u/6606114/blog/10093864
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章