利用 OpenNJet HA Copilot 实现高可用部署 (二)

NGINX 向云原生演进,All in OpenNJet 


配置同步

上一篇文章介绍了OpenNJet如何实现高可用配置,这一篇文章介绍下高可用模式下实现集群配置同步的功能。OpenNJet有很多动态配置的模块,这些动态的配置可以利用我们HA模块实现在主备节点之间进行同步。

主节点通过动态配置接口(声明式api或者命令式api)动态更新配置,然后backup节点能够及时同步这些配置。主节点宕机,backup节点动态更新配置,再主节点重新起来后,也能够及时同步更新的配置。最终保证主备节点都能够保证彼此配置的最新同步。

测试

 配置说明

下面的测试场景,均以一台主节点,一台backup节点进行测试

主节点: 192.168.40.136

broker进程配置如下

C++
#配置主节点监听端口和ip
listener 1883 192.168.40.136

#配置本地socket地址,用于本地worker进程通信
listener 0 /root/bug/njet1.0/data/mosquitto.sock

log_dest file logs/mosquitto.log
log_type debug
log_type information
log_type error
log_type warning
log_type notice

allow_anonymous true
persistence true
autosave_on_changes true
autosave_interval 1
persistence_location /root/bug/njet1.0/data/

 backup节点:192.168.40.91

broker进程配置如下:

C++
#配置backup节点监听端口和ip
listener 1883 192.168.40.91

#配置本地socket地址,用于本地worker进程通信
listener 0 /root/bug/njet1.0/data/mosquitto.sock

#配置需要连接的主节点地址信息
connection bridge-backup
address 192.168.40.136:1883

#topic主题过滤掉get相关接口请求
topic /dyn/# both 0
topic /ins/# both 0

log_dest file logs/mosquitto.log
log_type debug
log_type information
log_type error
log_type warning
log_type notice
allow_anonymous true
persistence true
autosave_on_changes true
autosave_interval 1
persistence_location /root/bug/njet1.0/data/

命令式API 消息同步

主节点更新消息,backup节点同步消息

往主节点新增一个location /clb,观察backup节点是否同步新增

往主节点通过动态location接口add一个location

通过其他模块get接口查询,可发现主节点刚才的location已经存在

backup节点查看,发现也存在该location,同步成功

 backup节点更新消息,主节点同步消息

backup节点新增一个location /clb2,观察主节点是否同步新增

backup节点通过动态location接口add一个location

通过其他模块get接口查询,可发现backup节点刚才的location已经存在

从主节点查看,发现也存在该location,同步成功

声明式API消息同步

主节点更新消息,backup节点同步消息

 

通过修改location /clb limit conn个数进行验证

主节点修改前:conn数量为100

修改主节点该值为200

观察backup节点的值,发现已经为200,同步成功

backup节点更新消息,主节点同步消息

通过修改location /clb limit conn个数进行验证

backup点修改为300

观察主机点,也为300,同步成功

主节点退出, backup节点配置reload后不会消失

stop掉主节点,观察backup节点配置

观察backup节点,仍然是300

backup节点的值修改为400,然后将backup节点reload,重新get发现值还为400

主节点重新加入,会同步backup节点消息

start主节点,观察主节点配置是否会同步backup节点的动态配置

重新启动主节点、

观察主节点的值,已经为400,说明同步成功

已知问题

      在有命令式api 比如location动态删除的消息时,会同步失败

OpenNJet 最早是基于 NGINX1.19 基础 fork 并独立演进,具有高性能、稳定、易扩展的特点,同时也解决了 NGINX 长期存在的难于动态配置、管理功能影响业务等问题。 邮件组 官网

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/u/6606114/blog/10315642

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。