CN116319274A - 一种能获取当前主节点的分布式系统实现热备的方法 - Google Patents

一种能获取当前主节点的分布式系统实现热备的方法 Download PDF

Info

Publication number
CN116319274A
CN116319274A CN202310145162.3A CN202310145162A CN116319274A CN 116319274 A CN116319274 A CN 116319274A CN 202310145162 A CN202310145162 A CN 202310145162A CN 116319274 A CN116319274 A CN 116319274A
Authority
CN
China
Prior art keywords
node
script
redis
master
current
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310145162.3A
Other languages
English (en)
Inventor
武俊龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Honglingtong Information Technology Co ltd
Original Assignee
Hangzhou Honglingtong Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Honglingtong Information Technology Co ltd filed Critical Hangzhou Honglingtong Information Technology Co ltd
Priority to CN202310145162.3A priority Critical patent/CN116319274A/zh
Publication of CN116319274A publication Critical patent/CN116319274A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0663Performing the actions predefined by failover planning, e.g. switching to standby network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Hardware Redundancy (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种能获取当前主节点的分布式系统实现热备的方法。包括以下步骤:步骤1,在主节点和从节点安装部署Redis;步骤2,在主节点和从节点安装Keepalived;步骤3,在主节点和从节点配置Keepalived基础信息;步骤4,在主节点和从节点配置通知脚本;步骤5:在主节点和从节点分别启动Keepalived。本发明所述方法具有如下的优点:当系统中有用Redis作为缓存中间件,解决了Redis的主备数据同步以及切换问题;在系统运行期间,每个正常运行的节点内的应用能够方便的从Redis中获取当前主节点的身份信息数据,从而为系统内的不可重复任务提供去重复化操作。

Description

一种能获取当前主节点的分布式系统实现热备的方法
技术领域
本发明属于网络通信技术领域,具体涉及一种能获取当前主节点的分布式系统实现热备的方法。
背景技术
软件系统实现高可用系统的方式,主要包括拆分与复制,拆分就是将一个复杂的系统拆分成由单一功能模块服务组成的分布式系统,复制就是单个模块服务或者整个系统进行重复多份提供。而系统的风险主要来自于系统内的单一功能模块出现故障或者某一个节点出现故障而引起的整体业务停顿,而复制和拆分能够降低这种系统整体不可用的风险,即高可用能够提升系统的鲁棒性。
针对多节点(节点是高可用系统中能够完整提供所有业务服务的最小单位,包含一台或者多台服务器以及运行之上的所有资源,多个节点之间的能够处理的业务完全一致,只是身份有主和备的区别)的复制,由于需要确定系统对外提供服务的统一流量入口,目前有一类方案是用Keepalived来提供一个可在多个节点漂移的虚拟IP地址来实现的。
Keepalived是基于VRRP协议的一款高可用软件。Keepailived支持一个节点和多个备节点,在主节点和备节点的流量入口服务机器上面部署相同的服务配置,使用一个虚拟IP地址对外提供服务,当主节点出现故障时,虚拟IP地址会自动漂移到备节点。现有技术中,有关于Keepalived多节点热备的方案记载,现有的用Keepalived实现双节点机热备功能的方案仅能做到利用虚拟IP地址的漂移,从而保证整个分布式热备系统对于外部访问来说是高可用的,但是,却无法做到从系统内部可感知的高可用,也即系统内部的节点无法实时的获取当前系统内部的主节点的身份信息。
发明内容
本发明的目的在于提供一种能够克服上述技术问题的能获取当前主节点的分布式系统实现热备的方法。
本发明所述方法包括以下步骤:
步骤1,采用Redis和Keepalived两个组件,Redis用于存储当前系统的主机信息和提供获取接口,Keepalived用于实现虚拟IP的维持、切换漂移,在主节点和从节点安装部署Redis;
步骤1.1,使用yum安装gcc gcc-c++kernel-devel;
步骤1.2,下载解压Redis源码包,分别执行make install和utils下的install_server.sh脚本,选择配置、日志路径以及端口号;
步骤1.3,修改Redis的配置文件,requirepass、masterauth以及bind(监听IP地址为0.0.0.0);
步骤1.4,修改Redis的启停脚本,加入设置的requirepass,重启Redis服务;
步骤1.5,防火墙上,在对应的网卡所在zone放行redis的端口号;
步骤2,在主节点和从节点安装Keepalived;
步骤3,在主节点和从节点配置Keepalived基础信息;
步骤3.1,在global_defs中,脚本执行用户script_user配置为root;
步骤3.2,在vrrp_script中,脚本可执行路径script为健康检查脚本的路径,脚本执行间隔interval为5,脚本执行超时时间timeout为10,成功次数rise为2,失败次数fall为3,脚本执行用户名user为root;
步骤3.3,编写健康检查脚本内容,对Redis的端口进行探测,当不能探测返回1,当能探测返回0,0被视为集群健康,将脚本增加可执行权限;
步骤3.4,在vrrp_instance中,初始状态(state)配置为BACKUP,非抢占模式nopreempt,VRRP通信网卡(interface)为内网或者VPN网卡名称,脚本配置信息(track_script)为C2中vrrp_script的名称;主节点和从节点之间采用单播通信,单播地址(unicast_peer)为另一个节点的VRRP通信网卡的IP地址,虚拟路由ID(virtual_router_id)主节点和从节点一致;节点认证信息authentication的类型采用密码;虚拟IP地址(virtual_ipaddress)需要配置虚拟入口的IP信息,包括IP地址、广播地址、设备名称以及标签信息;配置通知脚本的执行路径即notify_master和notify_backup;
步骤4,在主节点和从节点配置通知脚本;
步骤4.1,配置notify_master脚本,将当前脚本所在节点Redis设置为主机,将当前集群的MASTER信息设置为当前节点的信息;在Node#0上,设置CURRENT_PRIMARY_INSTANCE为Node#0,在Node#1上,设置CURR_MASTER_INSTANCE为Node#1,将各自节点的Redis设置为SLAVE OF NO ONE;
步骤4.2,配置notify_backup脚本,将当前脚本所在节点Redis设置为备机;
步骤4.3,将notify_master和notify_backup脚本增加可执行权限;
步骤5:在主节点和从节点分别启动Keepalived,先启动主节点的Keepalived,再启动从节点的Keepalived。
本发明所述方法具有如下的优点:
1.在多个节点的系统中通过Keepalived的虚拟IP和VRRP协议实现了去中心化多个节点的统一对外服务入口;
2.主节点对外提供服务且所有备节点从主节点同步数据,当发生切换的时候,其中一个备节点切换成主节点对外提供服务;
3.当系统中有用Redis作为缓存中间件,解决了Redis的主备数据同步以及切换问题;
4.在系统运行期间,每个正常运行的节点内的应用能够方便的从Redis中获取当前主节点的身份信息数据,从而为系统内的不可重复任务,比如节点内部的不可重复运行的定时任务,提供去重复化操作。
附图说明
图1是本发明所述方法的原理架构图;
图2是本发明所述方法的操作流程图;
图3是本发明所述方法节点的运行逻辑流程图;
图4是本发明所述方法实施例的切换流程图。
具体实施方式
下面结合附图对本发明的实施方式进行详细描述。
如图2所示,本发明所述方法包括以下步骤:
步骤1,采用Redis和Keepalived两个组件,Redis用于存储当前系统的主机信息和提供获取接口,Keepalived用于实现虚拟IP的维持、切换漂移,在主节点和从节点安装部署Redis;
步骤1.1,使用yum安装gcc gcc-c++kernel-devel;
步骤1.2,下载解压Redis源码包,分别执行make install和utils下的install_server.sh脚本,选择配置、日志路径以及端口号;
步骤1.3,修改Redis的配置文件,requirepass、masterauth以及bind(监听IP地址为0.0.0.0);
步骤1.4,修改Redis的启停脚本,加入设置的requirepass,重启Redis服务;
步骤1.5,防火墙上,在对应的网卡所在zone放行redis的端口号;
步骤2,在主节点和从节点安装Keepalived;
步骤3,在主节点和从节点配置Keepalived基础信息;
步骤3.1,在global_defs中,脚本执行用户script_user配置为root;
步骤3.2,在vrrp_script中,脚本可执行路径script为健康检查脚本的路径,脚本执行间隔interval为5,脚本执行超时时间timeout为10,成功次数rise为2,失败次数fall为3,脚本执行用户名user为root;
步骤3.3,编写健康检查脚本内容,对Redis的端口进行探测,当不能探测返回1,当能探测返回0,0被视为集群健康,将脚本增加可执行权限;
步骤3.4,在vrrp_instance中,初始状态(state)配置为BACKUP,非抢占模式nopreempt,VRRP通信网卡(interface)为内网或者VPN网卡名称,脚本配置信息(track_script)为C2中vrrp_script的名称;主节点和从节点之间采用单播通信,单播地址(unicast_peer)为另一个节点的VRRP通信网卡的IP地址,虚拟路由ID(virtual_router_id)主节点和从节点一致;节点认证信息authentication的类型采用密码;虚拟IP地址(virtual_ipaddress)需要配置虚拟入口的IP信息,包括IP地址、广播地址、设备名称以及标签信息;配置通知脚本的执行路径即notify_master和notify_backup;
步骤4,在主节点和从节点配置通知脚本;
步骤4.1,配置notify_master脚本,将当前脚本所在节点Redis设置为主机,将当前集群的MASTER信息设置为当前节点的信息;在Node#0上,设置CURRENT_PRIMARY_INSTANCE为Node#0,在Node#1上,设置CURR_MASTER_INSTANCE为Node#1,将各自节点的Redis设置为SLAVE OF NO ONE;
步骤4.2,配置notify_backup脚本,将当前脚本所在节点Redis设置为备机;
步骤4.3,将notify_master和notify_backup脚本增加可执行权限;
步骤5:在主节点和从节点分别启动Keepalived,先启动主节点的Keepalived,再启动从节点的Keepalived。
参考图1,在可获取当前主节点的分布式热备系统中,结合以上关于每个节点的运行流程,每个节点在每次健康检查之后,包括维持原状和改变状态两种情况,当改变状态时,节点内的Redis也会切换成相应的状态,并且Redis中存储的信息都随着切换而变化,在系统正常运行的任一时刻,不仅外部的请求都被得到正确的处理,而且在系统内部的任何一个健康的模块服务都能很方便的获取到当前系统的主节点信息。
下面介绍的是本发明的实施例,为更好的理解本发明的技术方案。本实施例是在两台Centos7.9(模拟两个节点)上进行,两个节点分别为节点0和节点1,IP地址分别为192.168.20.71和192.168.20.81,分别称为Node#0和Node#1,VIP为192.168.20.80。
集群初始化完成,Node#0和Node#1分别为主节点和备节点,Node#0的Redis和Node#1的Redis分别为MASTER和SLAVE,此时不论是Node#0还是Node#1中的Redis中的信息都为当前主节点的信息,在本实施例中,Key为”CURR_MASTER_INSTANCE”的value为”Node#0”,因此,当前集群中的主节点信息在每一个健康的节点的Redis中都存在,且在节点内部都能被获取。
如图3所示,每个节点的运行流程如下:
1.当前节点不健康时,则跳转到S6,判断当前节点在系统中是否有身份(主节点或备节点);
1)当当前节点在系统中没有身份时,则间隔一段时间(间隔时间能够配置)跳转到S1;
2)当当前节点在系统中有身份时,则跳转到S7,设置当前节点状态为失败,消除当前节点的身份,间隔一段时间之后同样跳转到S1,继续检查当前节点是否健康;
2.当前节点健康时,则跳转S2,判断系统中是否存在主节点:
1)当系统中不存在主节点,则依次跳转到S8、S9、S10,当前节点的Redis切换成主节点,当前节点信息写入Redis中,当前节点切换成主节点,之后间隔一段时间再跳转到S1;
2)当系统已存在主节点,则跳转到S3,判断当前节点是否有身份;
A)当当前节点有身份,间隔一段时间跳转到S1;
B)当当前节点没有身份,则跳转到S4、S5,当前节点的Redis切换为备份,然后当前节点也切换为备份,间隔一段时间再跳转到S1。
如图4所示,集群的切换流程为:
1.在S2中,当本例中的节点0发生故障,则节点1执行切换成主节点的流程;
2.在S3和S4中,借助于notify_master脚本,将当前节点下的Redis变成MASTER,然后将当前节点的信息写入Redis,在本例中,写入的Key为”
CURR_MASTER_INSTANCE”,value为”Node#1”;
3.在S5和S6中,节点1切换为主节点,且虚拟IP漂移到节点1上,此时外部的请求路由到节点1,然后在节点1被处理;
4.在S7中,节点0被人工恢复至健康状态;
5.在S8和S9中,节点0发现本例中的节点1是健康的,借助与notify_backup脚本,将节点0的Redis变成SLAVE,节点0的Redis从节点1的Redis同步数据;
6.在S10中,节点0将当前节点切换成备节点,不论是节点0还是节点1中的Redis中的信息都为当前主节点的信息,Key为”CURR_MASTER_INSTANCE”的value为”Node#1”,当以后节点1也发生故障,则重复上述切换流程。
在不偏离本发明的精神和范围的情况下,还可以对本发明的具体实施方式作各种变更和替换。这些变更和替换都落在本发明权利要求书所限定的范围内。

Claims (4)

1.一种能获取当前主节点的分布式系统实现热备的方法,其特征在于,包括以下步骤:
步骤1,采用Redis和Keepalived两个组件,Redis用于存储当前系统的主机信息和提供获取接口,Keepalived用于实现虚拟IP的维持、切换漂移,在主节点和从节点安装部署Redis;
步骤2,在主节点和从节点安装Keepalived;
步骤3,在主节点和从节点配置Keepalived基础信息;
步骤4,在主节点和从节点配置通知脚本;
步骤5:在主节点和从节点分别启动Keepalived,先启动主节点的Keepalived,再启动从节点的Keepalived。
2.根据权利要求1所述的一种能获取当前主节点的分布式系统实现热备的方法,其特征在于,所述步骤1包括以下步骤:
步骤1.1,使用yum安装gcc gcc-c++kernel-devel;
步骤1.2,下载解压Redis源码包,分别执行make install和utils下的install_server.sh脚本,选择配置、日志路径以及端口号;
步骤1.3,修改Redis的配置文件,requirepass、masterauth以及bind;
步骤1.4,修改Redis的启停脚本,加入设置的requirepass,重启Redis服务;
步骤1.5,防火墙上,在对应的网卡所在zone放行redis的端口号。
3.根据权利要求1所述的一种能获取当前主节点的分布式系统实现热备的方法,其特征在于,所述步骤3包括以下步骤:
步骤3.1,在global_defs中,脚本执行用户script_user配置为root;
步骤3.2,在vrrp_script中,脚本可执行路径script为健康检查脚本的路径,脚本执行间隔interval为5,脚本执行超时时间timeout为10,成功次数rise为2,失败次数fall为3,脚本执行用户名user为root;
步骤3.3,编写健康检查脚本内容,对Redis的端口进行探测,当不能探测返回1,当能探测返回0,0被视为集群健康,将脚本增加可执行权限;
步骤3.4,在vrrp_instance中,初始状态配置为BACKUP,非抢占模式nopreempt,VRRP通信网卡为内网或者VPN网卡名称,脚本配置信息为C2中vrrp_script的名称;主节点和从节点之间采用单播通信,单播地址为另一个节点的VRRP通信网卡的IP地址,虚拟路由ID主节点和从节点一致;节点认证信息authentication的类型采用密码;虚拟IP地址需要配置虚拟入口的IP信息,包括IP地址、广播地址、设备名称以及标签信息;配置通知脚本的执行路径即notify_master和notify_backup。
4.根据权利要求1所述的一种能获取当前主节点的分布式系统实现热备的方法,其特征在于,所述步骤4包括以下步骤:
步骤4.1,配置notify_master脚本,将当前脚本所在节点Redis设置为主机,将当前集群的MASTER信息设置为当前节点的信息;在Node#0上,设置CURRENT_PRIMARY_INSTANCE为Node#0,在Node#1上,设置CURR_MASTER_INSTANCE为Node#1,将各自节点的Redis设置为SLAVE OF NO ONE;
步骤4.2,配置notify_backup脚本,将当前脚本所在节点Redis设置为备机;
步骤4.3,将notify_master和notify_backup脚本增加可执行权限。
CN202310145162.3A 2023-02-21 2023-02-21 一种能获取当前主节点的分布式系统实现热备的方法 Pending CN116319274A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310145162.3A CN116319274A (zh) 2023-02-21 2023-02-21 一种能获取当前主节点的分布式系统实现热备的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310145162.3A CN116319274A (zh) 2023-02-21 2023-02-21 一种能获取当前主节点的分布式系统实现热备的方法

Publications (1)

Publication Number Publication Date
CN116319274A true CN116319274A (zh) 2023-06-23

Family

ID=86784391

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310145162.3A Pending CN116319274A (zh) 2023-02-21 2023-02-21 一种能获取当前主节点的分布式系统实现热备的方法

Country Status (1)

Country Link
CN (1) CN116319274A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117240694A (zh) * 2023-11-01 2023-12-15 广东保伦电子股份有限公司 一种基于keepalived的双机热备主备切换方法、装置及系统
CN118101435A (zh) * 2023-12-28 2024-05-28 翌日科技(重庆)有限公司 一种基于双机热备的高可用服务方法和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117240694A (zh) * 2023-11-01 2023-12-15 广东保伦电子股份有限公司 一种基于keepalived的双机热备主备切换方法、装置及系统
CN118101435A (zh) * 2023-12-28 2024-05-28 翌日科技(重庆)有限公司 一种基于双机热备的高可用服务方法和系统

Similar Documents

Publication Publication Date Title
CN116319274A (zh) 一种能获取当前主节点的分布式系统实现热备的方法
US10630570B2 (en) System and method for supporting well defined subnet topology in a middleware machine environment
US10887276B1 (en) DNS-based endpoint discovery of resources in cloud edge locations embedded in telecommunications networks
WO2017162173A1 (zh) 云服务器集群建立连接的方法和装置
US20170310641A1 (en) Data center system
US8726078B1 (en) Method and system for providing high availability to computer applications
JP4503225B2 (ja) 適応ディスパッチャを有する仮想ネットワーク
CN110572439B (zh) 一种基于元数据服务和虚拟转发网桥的云监控方法
US20130159487A1 (en) Migration of Virtual IP Addresses in a Failover Cluster
US20110238820A1 (en) Computer, communication device, and communication control system
CN113572831B (zh) Kubernetes集群间的通信方法、计算机设备及介质
CN111404628B (zh) 一种时间同步方法和装置
US20170308446A1 (en) System and method for disaster recovery of cloud applications
CN114116912A (zh) 一种基于Keepalived实现数据库高可用的方法
US20220286350A1 (en) Systems and methods for seamless failover in branch deployments by superimposing clustering solution on vrrp
CN114785807A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN114915545B (zh) 基于dhcp网络集群的应用调度部署管理方法
JP2007208502A (ja) 通信システム、バックアップルータ、その冗長化処理プログラムおよびその冗長化処理方法
CN117240694A (zh) 一种基于keepalived的双机热备主备切换方法、装置及系统
CN112187523A (zh) 一种网络高可用实现方法及超融合系统
US20220150158A1 (en) Split-brain prevention in a high availability system during workload migration system during workload migration
CN112019601B (zh) 一种基于分布式存储Ceph的两节点实现方法及系统
CN114650213B (zh) 配置Jenkins服务器集群的方法、装置、存储介质
KR20060121237A (ko) 라우터 기능성을 자동으로 전송하는 방법
EP4399608A1 (en) Active node selection for high availability clusters

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination