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

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

2023-12-01 15:01 https://my.oschina.net/u/6606114/blog/10315642 OpenNJet 次阅读 条评论

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 长期存在的难于动态配置、管理功能影响业务等问题。 邮件组 官网

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