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

NGINX 向云原生演进,All in OpenNJet


1. HA简介

在部署服务端应用时,为了实现服务的高可用,常见的一种方案是额外安装Keepalived, 通过Keepalived 来监控服务端应用的运行状态,并设置虚拟IP (VIP), 客户端通过VIP 访问服务端实例。以开源Nginx 为例,示意图如下:
 
Keepalived 是以 VRRP 协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master 和多个 backup,master 上面有一个对外提供服务的 VIP(Virtual IP Address)(该路由器所在局域网内其他机器的默认路由为该 vip),master 会发组播,当 backup 收不到 根据 VRRP包时就认为 master 宕掉了,这时就需要根据 VRRP 的优先级来选举一个 backup 当 master。这样的话就可以保证路由器的高可用了。
为了简化部署及配置,NJet 通过Copilot 扩展机制实现了VRRP协议的HA模块,只要加载HA Copilot 并提供相应的配置文件,即可实现高可用功能,示意图如下:

2. 配置说明

开启HA功能需在njet.conf的 main block 中添加如下指令
helper ha modules/njt_helper_ha_module.so conf/vrrp.conf;
并在conf目录下提供vrrp配置文件,配置项的说明如下。
 
配置项
必填
配置说明
vrrp_instance
vrrp_instance的string为设置的VRRP的实例名。
state
设置当前节点的初始化状态,状态为MASTER或者BACKUP
interface
可以绑定vip的接口名称,比如eth0,bond0,br0。
通过IP -a查看自己的网卡信息
nopreempt
设置是否抢占虚拟IP,添加即为不抢占
virtual_router_id
设置虚拟路由器惟一标识,范围:0-255,同属一个集群的多个njet节点该id相同,不同的njet集群该值必须不同,务必要确认在同一网络中此值必须唯一。
priority
设置当前njet节点的优先级,范围:[1-254],值越大优先级越高
virtual_ipaddress
设置虚拟IP对应的子网掩码
配置样例文件参见下文中的测试验证章节。

3. 测试验证

  • 配置三台服务器测试机,IP分别是:
  1. 192.168.40.157
  2. 192.168.40.158
  3. 192.168.40.149
  • 使用虚拟IP:
  1. 192.168.40.50
192.168.40.157服务器vrrp.conf配置如下:
vrrp_instance m{
    state MASTER
    interface eth192
    virtual_router_id 32 
    priority 200 
    virtual_ipaddress {
         192.168.40.50/24 
    }
}
 
192.168.40.158服务器vrrp.conf配置如下:
vrrp_instance m{
    state BACKUP
    interface eth192
    virtual_router_id 32 
    priority 100 
    virtual_ipaddress {
          192.168.40.50/24 
    }
}
192.168.40.149服务器vrrp.conf配置如下:
vrrp_instance m{
    state BACKUP
    interface eth192
    virtual_router_id 32 
    priority 10 
    virtual_ipaddress {
        192.168.40.50/24 
    }
}

三台服务器上的NJet都启动时,由于40.157MASTER,该主机将获取到VIP

 
 
 
停止40.157主机上的NJet实例后,由于40.158主机的优先级priority 较高,40.158将获得VIP:
 
 
 
重新启动40.157主机上的NJet实例后,40.157将重新获得VIP。

OpenNJet 最早是基于 NGINX1.19 基础 fork 并独立演进,具有高性能、稳定、易扩展的特点,同时也解决了 NGINX 长期存在的难于动态配置、管理功能影响业务等问题。
优秀的个人博客,低调大师

微信关注我们

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

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

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

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

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

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

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