Ha
该模块通过vrrp协议提供多个njet实例的高可用功能。
VRRP 的相关介绍可以参见网页:
配置说明:
- 要开启该功能需要在njet.conf 的 main block 中添加如下指令:
njet配置文件增加:
helper ha /usr/lib/njet/modules/njt_helper_ha_module.so vrrp.conf;
- 基于从流水线上下载的压缩包:该模块需要依赖外部的so动态库,将 libha_emb.* 拷贝到 /usr/local/lib 目录下,执行下面命令,确认/usr/local/lib 目录已经配置到/etc/ld.so.conf(注意: 如果从源码编译 ,make install 阶段是会将 这个 libha_emb.* 自动拷贝到 /ullsr/local/lib ,无需执行下面命令 )
cp -a work/usr/local/lib/libha_emb.* /usr/local/lib
- 由于设置网卡vip , 需要一定的权限,njet 在非root 用户启动情况下,需要预先设置对应的权限
sudo setcap cap_net_bind_service,cap_net_admin,cap_net_raw+eip njet
- 生效配置
sudo ldconfig
增加vrrp.conf 配置文件说明:
配置项 | 必须修改 | 配置说明 |
---|---|---|
vrrp_instance | 是 | 设置的VRRP的实例名,string类型 |
state | 是 | 设置当前节点的初始化状态,状态为MASTER或者BACKUP。 |
interface | 是 | 可以绑定vip的接口名称,比如eth0,bond0,br0。 |
virtual_router_id | 是 | 设置虚拟路由器惟一标识,范围:0-255,同属一个集群的多个njet节点该id相同, 不同的njet集群该值必须不同,务必要确认在同一网络中此值必须唯一。 |
priority | 是 | 设置当前njet节点的优先级,范围:1-254,值越大优先级越高 |
virtual_ipaddress | 是 | 设置虚拟IP对应的子网掩码。 |
配置样例:
vrrp_instance m{
state MASTER
interface eth0
virtual_router_id 32
priority 100
virtual_ipaddress {
10.1.0.22/24
}
}
HA copilot 模块的对应日志是 $PREFIX/logs/njet_vrrp.log, 日志中将显示 ha 模块设置vip时的一些相关信息, 配置文件中有错误的配置项,日志中将显示对应的错误位置及加载后的默认值。
Thu Jun 01 17:18:11.192916235 2023: (/usr/local/njet/conf/vrrp.conf: Line 2) (m) unknown state 'Back', defaulting to BACKUP
Thu Jun 01 17:18:11.193003054 2023: (/usr/local/njet/conf/vrrp.conf: Line 5) number '1000' outside range [1, 255]
Thu Jun 01 17:18:11.193027778 2023: (/usr/local/njet/conf/vrrp.conf: Line 5) (m) Priority not valid! must be between 1 & 255. Using default 100
Thu Jun 01 17:18:11.193230339 2023: gratuitous_arp_init end
Thu Jun 01 17:18:11.193271876 2023: start up end
Thu Jun 01 17:18:11.193536733 2023: (m) Entering BACKUP STATE (init)
Thu Jun 01 17:18:14.803010859 2023: (m) Entering MASTER STATE
配置的动态加载
Copilot 配置的动态设置在后续的版本中,将进行统一的考虑及设计。
目前 HA Copilot 已经屏蔽Njet 的 Reload 信号, vrrp 相关的配置,如果进行了手工编辑, 需要给 HA Copilot 进程发送 HUP 信号。 (kill -HUP $PID, 其中 $PID 为 HA Copilot 的进程id)