CN116319274A - 一种能获取当前主节点的分布式系统实现热备的方法 - Google Patents
一种能获取当前主节点的分布式系统实现热备的方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 238000013515 script Methods 0.000 claims abstract description 68
- 238000004891 communication Methods 0.000 claims description 10
- 238000009434 installation Methods 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 claims description 3
- 230000009191 jumping Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 241000109539 Conchita Species 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0663—Performing the actions predefined by failover planning, e.g. switching to standby network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
- H04L67/306—User 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脚本增加可执行权限。
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)
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 | 翌日科技(重庆)有限公司 | 一种基于双机热备的高可用服务方法和系统 |
-
2023
- 2023-02-21 CN CN202310145162.3A patent/CN116319274A/zh active Pending
Cited By (2)
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 |