CN117032819A - 一种集群系统部署方法、装置、设备以及可读存储介质 - Google Patents
一种集群系统部署方法、装置、设备以及可读存储介质 Download PDFInfo
- Publication number
- CN117032819A CN117032819A CN202310894783.1A CN202310894783A CN117032819A CN 117032819 A CN117032819 A CN 117032819A CN 202310894783 A CN202310894783 A CN 202310894783A CN 117032819 A CN117032819 A CN 117032819A
- Authority
- CN
- China
- Prior art keywords
- redis
- information
- sentinel
- pod
- instance
- 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 1038
- 238000005192 partition Methods 0.000 claims abstract description 107
- 239000012634 fragment Substances 0.000 claims description 70
- 230000015654 memory Effects 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 8
- 238000007726 management method Methods 0.000 description 212
- 238000004891 communication Methods 0.000 description 35
- 238000013507 mapping Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 18
- 238000001514 detection method Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000010276 construction Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013523 data management Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Abstract
本申请提供了一种集群系统部署方法、装置、设备以及可读存储介质,该方法包括:创建并启动Redis进程和Sentinel进程。然后,对Redis进程进行数据配置,使得配置后的Redis进程中包括所述Redis进程对应Redis分片中主Redis进程所在容器Pod的IP地址。在对Redis进程进行数据配置后,对Sentinel进程进行数据配置,使得配置后的Sentinel进程中包括各Redis分片中主Redis进程所在Pod的IP地址。在对Redis进程和Sentinel进程配置完成后,创建路由进程,并对路由进程进行配置。使得配置后的Router进程中包括所述Sentinel进程所在Pod的IP地址。通过这种方式,可以在Redis架构部署之初,可以灵活创建Sentinel进程和Router进程,解决Redis地集群化部署的同时,不能兼容企业内部多分片的Redis集群架构的问题。
Description
技术领域
本申请涉及集群系统的技术领域,尤其涉及一种集群系统部署的方法、装置、设备以及计算机可读存储介质。
背景技术
远程字典服务(Remote Dictionary Server,Redis)是一中高性能的关键值(key-value)存储系统,具有极高的读写性能,被广泛应用于缓存服务、分布式锁、计数器等。
传统物理机部署Redis集群,需要运维人员手动搭建,部署时间较长,也不利于后期维护,无法满足业务快速发展的需求。Kubernetes(本申请实施例简称K8s)云原生相较于传统IT,可以助力业务快速开发、稳定运维,大幅降低技术成本,节约硬件资源。K8s云原生是依托容器化、微服务等技术,构建可扩展的基础设施,持续交付用于生产系统的基础软件,在功能不变的前提下,提高了应用的可用性与稳定性。因此,受到各云服务商地青睐,并将其作为容器编排解决方案,实现Redis集群化部署。但是开源的解决方案无法兼容企业内部多分片Redis集群架构、权限管控方案等。
因此,如何在使用K8s系统实现Redis地集群化部署的同时,兼容企业内部多分片的Redis集群架构,是技术人员日益关注的问题。
发明内容
本申请实施例提供一种集群系统部署方法、装置、设备以及可读存储介质,该方法解决了在集群系统部署过程中,不能够兼容企业内部多分片的Redis架构的问题。
第一方面,本申请实施例提供一种集群系统部署方法,包括:接收远程字典Redis集群的部署信息,该部署信息包括Redis进程的数量N2、哨兵Sentinel进程的数量N4以及路由Router进程的数量N6;向第二网络设备发送第一创建指令,第一创建指令包括部署信息,第一创建指令用于指示第二网络设备创建并启动N2个Redis进程和N4个Sentinel进程;在已创建好的Redis进程和Sentinel进程正常工作的情况下,配置Redis进程;配置Sentinel进程;向第二网络设备发送第二创建指令,第二创建指令包括部署信息,第二创建指令用于指示第二网络设备创建并启动N6个Router进程;在已创建好的Router进程、Redis进程和Sentinel进程正常工作的情况下,配置Router进程。
在本申请实施例中,通过先建立Redis集群系统的拓扑结构,即:创建并启动Redis进程和Sentinel进程。然后,对Redis进程进行数据配置,使得配置后的Redis进程中包括所述Redis进程对应Redis分片中主Redis进程所在容器Pod的IP地址。在对Redis进程进行数据配置后,对Sentinel进程进行数据配置,使得配置后的Sentinel进程中包括各Redis分片中主Redis进程所在Pod的IP地址。在对Redis进程和Sentinel进程配置完成后,创建路由进程,并对路由进程进行配置。使得配置后的Router进程中包括所述Sentinel进程所在Pod的IP地址。这样,路由进程可以通过Sentinel进程所在Pod的IP地址访问Sentinel进程,从而获取Sentinel进程中各Redis分片中主Redis进程所在Pod的IP地址,并根据主Redis进程所在Pod的IP地址访问主Redis进程,实现对主Redis进程中数据的读或写。通过这种方式,可以在Redis架构部署之初,可以灵活创建Sentinel进程和Router进程,解决Redis地集群化部署的同时,不能兼容企业内部多分片的Redis集群架构的问题。
结合第一方面,在一种可能实现的方式中,向第二网络设备发送第一创建指令之前,还包括:向第二网络设备发送第三创建指令,第三创建指令用于指示第二网络设备创建Redis应用对象、Sentinel应用对象以及Router应用对象;其中,Redis应用对象用于管理Redis进程的第一实例信息,Sentinel应用对象用于管理Sentinel进程的第二实例信息,Router应用对象用于管理Router进程的第三实例信息,第一实例信息包括每个Redis进程所在容器Pod的IP地址和分片标识信息,第二实例信息包括每个Sentinel进程所在容器Pod的IP地址和分片标识信息,第三实例信息包括每个Router进程所在容器Pod的IP地址和分片标识信息。这样,通过建立应用对象,有利于存储和管理Redis进程、Sentinel进程和Router进程的实例信息。
结合第一方面,在一种可能实现的方式中,配置Redis进程,包括:检测N2个Redis进程所在Pod的IP地址是否均在第一实例信息中存在;在均存在的情况下,检测每个Redis分片中主Redis进程的数量是否小于或等于1;若存在Redis分片中的主Redis进程的数量为0、其它Redis分片中的主Redis进程的数量为1,在Redis分片中将一个Redis进程设置为主Redis进程;将Redis分片中的其它Redis进程设置为从Redis进程。
这样,在Redis分片中不存在主Redis进程的情况下,可以在该Redis分片中设置主Redis进程,保证在该Redis分片中存在Redis进程进行数据的存储和管理。
结合第一方面,在一种可能实现的方式中,在每个Redis分片中的主Redis进程的数量均为1的情况下,检测每个分片中从Redis进程中的第一IP地址是否与Redis分片中主Redis进程所在Pod的IP地址是否一致;第一IP地址为从Redis进程中的主Redis进程所在Pod的IP地址;若不一致,将从Redis进程中的第一IP地址更新为从Redis进程所在分片中主Redis进程所在Pod的IP地址。
这样,检查从Redis进程中的主Redis进程所在Pod的IP地址是否正确,并对错误地址进行更正,有利于避免从Redis进程复制其它分片的主Redis进程的数据,导致数据复制错误的问题。
结合第一方面,在一种可能实现的方式中,配置Sentinel进程,包括:若在Sentinel进程中不存在第一Redis进程信息,在Sentinel进程中写入第二Redis进程信息;第一Redis进程信息和第二Redis进程信息中均包括Redis进程所在Pod的IP地址和Redis进程所在分片的标识信息,第二Redis进程信息是基于通过Redis应用对象获取的第一实例信息得到的;若在Sentinel进程中存在第一Redis进程信息,检测第一Redis信息与第二Redis进程信息是否一致;若不一致,将第一Redis进程信息中与第二Redis进程信息不一致的部分进行修正。这样,及时修改哨兵进程中不正确的第一Redis信息,能够保证之后Router进程从哨兵进程中获取的主Redis信息正确,保证其能够正常访问主Redis进程,进行数据的读写操作。
结合第一方面,在一种可能实现的方式中,配置Sentinel进程,还包括:在Sentinel应用对象管理的第二实例信息处于屏蔽状态的情况下,访问Sentinel应用对象;将第二实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第二实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第二实例信息处于非屏蔽状态。
结合第一方面,在一种可能实现的方式中,配置Router进程,包括:在根据容器Pod状态数据确定所有进程的Pod均处于正常工作状态的情况下,检测Router进程中存储的各Redis分片中主Redis进程所在Pod的IP地址是否第二IP地址一致;第二IP地址为Pod状态数据中,各Redis分片对应的主Redis进程所在Pod的IP地址,Pod状态数据是访问所有进程Pod得到的数据;若不一致,将Router进程中与Pod状态数据不一致的主Redis进程所在Pod的IP地址进行修正,修正后的主Redis进程所在Pod的IP地址与Pod状态数据中主Redis进程所在Pod的IP地址一致。
结合第一方面,在一种可能实现的方式中,配置Router进程,还包括:在Router应用对象管理的第二实例信息处于屏蔽状态的情况下,访问Router应用对象;将第三实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第三实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第三实例信息处于非屏蔽状态。
第二方面,本申请实施例提供一种集群系统部署方法,包括:接收来自第一网络设备的第一创建指令,第一创建指令包括Redis集群的部署信息;部署信息包括Redis进程的数量N2、Sentinel进程的数量N4以及Router进程的数量N6;根据第一创建指令创建并启动N2个Redis进程和N4个Sentinel进程;接收来自第一网络设备的第二创建指令,第二创建指令包括部署信息;根据第二创建指令创建并启动N6个Router进程。
结合第二方面,在一种可能实现的方式中,接收来自第一网络设备的第一创建指令之前,还包括:接收来自第一网络设备的第三创建指令,第三创建指令用于指示创建Redis应用对象、Sentinel应用对象以及Router应用对象;根据第三创建指令创建Redis应用对象、Sentinel应用对象以及Router应用对象。
结合第二方面,在一种可能实现的方式中,根据第一创建指令创建并启动N2个Redis进程和N4个Sentinel进程之后,还包括:将第一实例信息写入Redis应用对象;将第二实例信息写入Redis应用对象;其中,第一实例信息包括每个Redis进程所在容器的IP地址和分片标识信息,第二实例信息包括每个Sentinel进程所在容器的IP地址和分片标识信息。
结合第二方面,在一种可能实现的方式中,根据第二创建指令创建并启动N6个Router进程之后,还包括:将第三实例信息写入Router应用对象;其中,第三实例信息包括每个Router进程所在容器的IP地址和分片标识信息。
第三方面,本申请实施例提供了一种集群系统部署方法,包括:检测Redis应用对象中第一实例信息的变化情况;若检测到Redis应用对象中写入第一实例信息,获取第一实例信息;将第一实例信息发送给第四网络设备,第四网络设备用于管理实例信息;检测Sentinel应用对象中第二实例信息的变化情况;若检测到Sentinel应用对象中写入第二实例信息,获取第二实例信息;将第二实例信息发送给第四网络设备;若检测到Sentinel应用对象管理的第二实例信息中的实例标识发生改变,将实例标识改变的第二实例信息发送给第四网络设备;检测Router应用对象中第三实例信息的变化情况;若检测到Router应用对象中写入第三实例信息,获取第三实例信息;将第三实例信息发送给第四网络设备;若检测到Router应用对象管理的第三实例信息中的实例标识发生改变,将实例标识改变的第三实例信息发送给第四网络设备。
第四方面,本申请实施例提供了一种集群系统部署装置,包括:
远程字典服务处理器模块,用于接收远程字典Redis集群的部署信息;
状态设置管理模块,用于向第二网络设备发送第一创建指令;
还用于向第二网络设备发送第二创建指令;
远程字典服务管理模块,用于配置Redis进程;
哨兵管理模块,用于配置Sentinel进程;
路由管理模块,用于配置Router进程。
结合第四方面,在一种可能实现的方式中,该集群系统部署装置,还包括:
配置映射管理模块,用于向第二网络设备发送第三创建指令。
结合第四方面,在一种可能实现的方式中,配置Redis进程,包括:检测N2个Redis进程所在Pod的IP地址是否均在第一实例信息中存在;在均存在的情况下,检测每个Redis分片中主Redis进程的数量是否小于或等于1;若存在Redis分片中的主Redis进程的数量为0、其它Redis分片中的主Redis进程的数量为1,在Redis分片中将一个Redis进程设置为主Redis进程;将Redis分片中的其它Redis进程设置为从Redis进程。
结合第四方面,在一种可能实现的方式中,在每个Redis分片中的主Redis进程的数量均为1的情况下,检测每个分片中从Redis进程中的第一IP地址是否与Redis分片中主Redis进程所在Pod的IP地址是否一致;第一IP地址为从Redis进程中的主Redis进程所在Pod的IP地址;若不一致,将从Redis进程中的第一IP地址更新为从Redis进程所在分片中主Redis进程所在Pod的IP地址。
结合第四方面,在一种可能实现的方式中,检测每个Redis分片中主Redis进程的数量是否小于或等于1之后,还包括:配置Sentinel进程,包括:若在Sentinel进程中不存在第一Redis进程信息,在Sentinel进程中写入第二Redis进程信息;第一Redis进程信息和第二Redis进程信息中均包括Redis进程所在Pod的IP地址和Redis进程所在分片的标识信息,第二Redis进程信息是基于通过Redis应用对象获取的第一实例信息得到的;若在Sentinel进程中存在第一Redis进程信息,检测第一Redis信息与第二Redis进程信息是否一致;若不一致,将第一Redis进程信息中与第二Redis进程信息不一致的部分进行修正。
结合第四方面,在一种可能实现的方式中,配置Sentinel进程,还包括:在Sentinel应用对象管理的第二实例信息处于屏蔽状态的情况下,访问Sentinel应用对象;将第二实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第二实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第二实例信息处于非屏蔽状态。
结合第四方面,在一种可能实现的方式中,配置Router进程,包括:在根据容器Pod状态数据确定所有进程的Pod均处于正常工作状态的情况下,检测Router进程中存储的各Redis分片中主Redis进程所在Pod的IP地址是否第二IP地址一致;第二IP地址为Pod状态数据中,各Redis分片对应的主Redis进程所在Pod的IP地址,Pod状态数据是访问所有进程Pod得到的数据;若不一致,将Router进程中与Pod状态数据不一致的主Redis进程所在Pod的IP地址进行修正,修正后的主Redis进程所在Pod的IP地址与Pod状态数据中主Redis进程所在Pod的IP地址一致。
结合第四方面,在一种可能实现的方式中,配置Router进程,还包括:在Router应用对象管理的第二实例信息处于屏蔽状态的情况下,访问Router应用对象;将第三实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第三实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第三实例信息处于非屏蔽状态。
第五方面,本申请实施例提供了一种集群系统部署装置,包括:
第一接收模块,用于接收来自第一网络设备的第一创建指令;
第一创建模块,用于根据第一创建指令创建并启动N2个Redis进程和N4个Sentinel进程;
第二接收模块,用于接收来自第一网络设备的第二创建指令;
第二创建模块,用于根据第二创建指令创建并启动N6个Router进程。
结合第五方面,在一种可能实现的方法中,该集群系统部署装置,还包括:
第三接收模块,用于接收来自第一网络设备的第三创建指令;
第三创建模块,用于根据第三创建指令创建Redis应用对象、Sentinel应用对象以及Router应用对象。
结合第五方面,在一种可能实现的方式中,该集群系统部署装置,还包括:
第一写入模块,用于将第一实例信息写入Redis应用对象;
第二写入模块,用于将第二实例信息写入Redis应用对象。
结合第五方面,在一种可能实现的方式中,该集群系统部署装置,还包括:
第三写入模块,用于将第三实例信息写入Router应用对象。
第六方面,本申请实施例提供了一种集群系统部署装置,包括:
远程字典服务应用操作模块,用于检测Redis应用对象中第一实例信息的变化情况;
远程字典服务应用操作模块,还用于若检测到Redis应用对象中写入第一实例信息,获取第一实例信息;
远程字典服务应用操作模块,还用于将第一实例信息发送给第四网络设备;
远程字典服务应用操作模块,还用于检测Sentinel应用对象中第二实例信息的变化情况;
远程字典服务应用操作模块,还用于若检测到Sentinel应用对象中写入第二实例信息,获取第二实例信息;
远程字典服务应用操作模块,还用于将第二实例信息发送给第四网络设备;
远程字典服务应用操作模块,还用于检测Router应用对象中第三实例信息的变化情况;
远程字典服务应用操作模块,还用于若检测到Router应用对象中写入第三实例信息,获取第三实例信息;
远程字典服务应用操作模块,还用于将第三实例信息发送给第四网络设备;
远程字典服务应用操作模块,还用于若检测到Router应用对象管理的第三实例信息中的实例标识发生改变;
远程字典服务应用操作模块,还用于将实例标识改变的第三实例信息发送给第四网络设备。
第七方面,本申请实施例提供了一种网络设备,包括存储器、通信模块和处理器;
其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器存储的程序代码,执行如下步骤:
通过通信模块接收远程字典Redis集群的部署信息;
通过通信模块向第二网络设备发送第一创建指令;
在已创建好的Redis进程和Sentinel进程正常工作的情况下,配置Redis进程;
配置Sentinel进程;
通过通信模块向第二网络设备发送第二创建指令;
在已创建好的Router进程、Redis进程和Sentinel进程正常工作的情况下,配置Router进程。
结合第七方面,在一种可能实现的方式中,所述处理器用于调用所述存储器存储的向第二网络设备发送第一创建指令之前,还包括:
通过通信模块向第二网络设备发送第三创建指令。
结合第七方面,在一种可能实现的方式中,配置Redis进程,包括:检测N2个Redis进程所在Pod的IP地址是否均在第一实例信息中存在;在均存在的情况下,检测每个Redis分片中主Redis进程的数量是否小于或等于1;若存在Redis分片中的主Redis进程的数量为0、其它Redis分片中的主Redis进程的数量为1,在Redis分片中将一个Redis进程设置为主Redis进程;将Redis分片中的其它Redis进程设置为从Redis进程;在每个Redis分片中的主Redis进程的数量均为1的情况下,检测每个分片中从Redis进程中的第一IP地址是否与Redis分片中主Redis进程所在Pod的IP地址是否一致;第一IP地址为从Redis进程中的主Redis进程所在Pod的IP地址;若不一致,将从Redis进程中的第一IP地址更新为从Redis进程所在分片中主Redis进程所在Pod的IP地址。
结合第七方面,在一种可能实现的方式中,配置Sentinel进程,包括:若在Sentinel进程中不存在第一Redis进程信息,在Sentinel进程中写入第二Redis进程信息;第一Redis进程信息和第二Redis进程信息中均包括Redis进程所在Pod的IP地址和Redis进程所在分片的标识信息,第二Redis进程信息是基于通过Redis应用对象获取的第一实例信息得到的;若在Sentinel进程中存在第一Redis进程信息,检测第一Redis信息与第二Redis进程信息是否一致;若不一致,将第一Redis进程信息中与第二Redis进程信息不一致的部分进行修正。
结合第七方面,在一种可能实现的方式中,配置Sentinel进程,还包括:在Sentinel应用对象管理的第二实例信息处于屏蔽状态的情况下,访问Sentinel应用对象;将第二实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第二实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第二实例信息处于非屏蔽状态。
结合第七方面,在一种可能实现的方式中,配置Router进程,包括:在根据容器Pod状态数据确定所有进程的Pod均处于正常工作状态的情况下,检测Router进程中存储的各Redis分片中主Redis进程所在Pod的IP地址是否第二IP地址一致;第二IP地址为Pod状态数据中,各Redis分片对应的主Redis进程所在Pod的IP地址,Pod状态数据是访问所有进程Pod得到的数据;若不一致,将Router进程中与Pod状态数据不一致的主Redis进程所在Pod的IP地址进行修正,修正后的主Redis进程所在Pod的IP地址与Pod状态数据中主Redis进程所在Pod的IP地址一致。
结合第七方面,在一种可能实现的方式中,配置Router进程,还包括:在Router应用对象管理的第二实例信息处于屏蔽状态的情况下,访问Router应用对象;将第三实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第三实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第三实例信息处于非屏蔽状态。
第八方面,本申请实施例提供了一种网络设备,包括存储器、通信模块和处理器;
其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器存储的程序代码,执行如下步骤:
通过通信模块接收来自第一网络设备的第一创建指令;
根据第一创建指令创建并启动N2个Redis进程和N4个Sentinel进程;
通过通信模块接收来自第一网络设备的第二创建指令。
结合第八方面,在一种可能实现的方式中,所述处理器用于调用所述存储器存储的程序代码,执行:
通过通信模块接收来自第一网络设备的第三创建指令。
结合第八方面,在一种可能实现的方式中,所述处理器用于调用所述存储器存储的程序代码,执行:
将第一实例信息写入Redis应用对象;
将第二实例信息写入Redis应用对象。
结合第八方面,在一种可能实现的方式中,根据第二创建指令创建并启动N6个Router进程之后,还包括:将第三实例信息写入Router应用对象。
第九方面,本申请实施例提供了一种网络设备,包括存储器、通信模块和处理器;
其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器存储的程序代码,执行如下步骤:
检测Redis应用对象中第一实例信息的变化情况;
若检测到Redis应用对象中写入第一实例信息,通过通信模块获取第一实例信息;
通过通信模块将第一实例信息发送给第四网络设备;
检测Sentinel应用对象中第二实例信息的变化情况;
若检测到Sentinel应用对象中写入第二实例信息,通过通信模块获取第二实例信息;
通过通信模块将第二实例信息发送给第四网络设备;
若检测到Sentinel应用对象管理的第二实例信息中的实例标识发生改变,将实例标识改变的第二实例信息通过通信模块发送给第四网络设备;
检测Router应用对象中第三实例信息的变化情况;
若检测到Router应用对象中写入第三实例信息,通过通信模块获取第三实例信息;
通过通信模块将第三实例信息发送给第四网络设备;
若检测到Router应用对象管理的第三实例信息中的实例标识发生改变,将实例标识改变的第三实例信息通过通信模块发送给第四网络设备。
第十方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,实现上述第一方面及其各种可能实现的方式中集群系统部署方法或实现上述第二方面及其各种可能实现的方式中的集群系统部署方法或实现上述第三方面及其各种可能实现方式中的集群系统部署方法。
第十一方面,本申请实施例提供了一种计算机程序,该计算机程序包括指令,当所述计算机程序被计算机执行时,使得网络设备可以执行上述第一方面及其各种可能实现的方式中网络设备所执行的流程、或网络设备可以执行上述第二方面及其各种可能实现的方式中网络设备所执行的流程、或网络设备可以执行上述第三方面及其各种可能实现的方式中网络设备所执行的流程。
附图说明
下面对本申请实施例用到的附图进行介绍。
图1是本申请实施例提供的一种Redis集群系统的系统架构示例图;
图2是本申请实施例提供的一种示例性的Redis集群系统部署架构图;
图3A-图3D是本申请实施例提供的一种Redis集群部署流程图;
图4是本申请实施例提供的一种集群系统部署装置的结构示意图;
图5是本申请实施例提供的另一种集群系统部署装置的结构示意图;
图6是本申请实施例提供的另一种集群系统部署装置的结构示意图;
图7是本申请实施例提供的一种网络设备的结构示意图;
图8是本申请实施例提供的另一种网络设备的结构示意图;
图9是本申请实施例提供的另一种网络设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或者特性可以包含在本实施例申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是相同的实施例,也不是与其它实施例互斥的独立的或是备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中术语“第一”、“第二”、“第三”等是区别于不同的对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元,或者可选地,还包括没有列出的步骤或单元,或者可选地还包括这些过程、方法、产品或设备固有的其它步骤或单元。
附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前,应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在本说明书中使用的术语“部件”、“模块”、“系统”、“单元”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件或执行中的软件。例如,单元可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或分布在两个或多个计算机之间。此外,这些单元可从在上面存储有各种数据结构的各种计算机可读介质执行。单元可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一单元交互的第二单元数据。例如,通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
下面,结合附图对本申请实施例中涉及的Redis集群系统的系统架构进行示例性地介绍。
请参见图1,图1是本申请实施例提供的一种Redis集群系统的系统架构示例图。在图1中包括应用程序、服务管理系统、远程字典服务应用操作模块、配置映射对象、状态设置对象。
其中,应用程序包括远程字典服务应用对象(Redis_App)、Sentinel应用对象(Sentinel_App)以及路由应用对象(Router_App)。Redis_App中包括每个Redis进程的第一实例信息(例如,Redis进程所在容器Pod的IP地址与该Pod对应的分片标识信息),Sentinel_App中包括每个Sentinel进程的第二实例信息(例如,Sentinel进程所在容器Pod的IP地址与该Pod对应的分片标识信息),Router_App中包括每个Router进程的第三实例信息(例如,Router进程所在容器Pod的IP地址与该Pod对应的分片标识信息)。
远程字典服务操作模块用于监测应用程序中实例信息是否发生变化。当应用程序中的实例信息发生变化(例如,出现实例信息的增加、删减、实例信息的内容发生改变),远程字典服务应用操作模块会在应用程序中获取发生变化的实例信息,并将该实例信息发送给服务管理系统,由服务管理系统将远程字典服务应用操作模块发送的实例信息写入到对应的实例存储空间中去。
服务管理系统用于将Redis进程的第一实例信息存储到第一实例存储空间中、将Sentinel进程的第二实例信息存储到第二实例存储空间中以及将Router进程的第三实例信息存储到第三实例存储空间中。
配置映射对象包括远程字典服务配置映射对象(Redis_Configmap)、哨兵配置映射对象(Sentinel_Configmap)以及路由配置映射对象(Router Configmap)。其中,Redis_Configmap中包括第一存储空间的地址信息,Sentinel_Configmap中包括第二存储空间的地址信息,Router_Configmap中包括第三存储空间的地址信息。在第一存储空间中存储有Redis进程的第一白名单,第一白名单中包括第一进程所在Pod的IP地址;在第二存储空间中存储有Sentinel进程的第二白名单,第二白名单中包括第二进程所在Pod的IP地址;在第三存储空间中存储有Router进程的第三白名单,第三白名单中包括第三进程所在Pod的IP地址。其中,第一进程为允许访问Redis进程的进程,第二进程为允许访问Sentinel进程的进程,第三进程为允许访问Router进程的进程。
在图1中包括2个Redis状态设置对象(分别为Redis_Statefulset0和Redis_Statefulset1)、1个Sentinel状态设置对象(Sentinel_Statefulset)以及1个路由状态设置对象(Router_Statefulset),每个状态设置对象对应一个分片。在每个状态设置对象中包括一个或多个容器Pod(图1中每个状态设置对象下包括两个Pod),在每个Pod中包括一个进程且每个Pod对应一个IP地址,每个Pod的IP地址不同。
在图1中,包括两个Redis分片、1个Sentinel分片以及1个Router分片。在Redis_Statefulset0的两个Pod中分别包括Redis进程1(主Redis进程)和Redis进程2(Redis进程1的从Redis进程),在Redis_Statefulset1的两个Pod中分别包括Redis进程3(主Redis进程)和Redis进程4(Redis进程3的从Redis进程),在Sentinel_Statefulset的两个Pod中分别包括Sentinel进程1和Sentinel进程2,在Router_Statefulset的两个Pod中分别包括Router进程1和Router进程2。
Redis进程用于缓存数据,在一个Redis分片中包括一个主Redis进程和至少一个从Redis进程。从Redis进程会不断复制主Redis进程中的数据,当主Redis进程由于一些原因(例如,部署主Redis进程的服务器出现宕机等问题)中断服务时,可以由Sentinel进程将Redis分片中的从Redis进程切换为主Redis进程,从而保证在原来的主Redis进程出现问题的情况下,Redis进程也能够正常存储数据,保证数据不会丢失。
此外,在Sentinel进程中存储有主Redis进程的实例信息,当Sentinel进程将Redis分片中的主、从Redis进程进行切换后,也会更改其存储的主Redis进程的实例信息。
Router进程用于在主Redis进程中读写数据,具体过程为:Router进程首先向服务管理系统请求Sentinel进程所在Pod的IP地址,在获取到来自服务管理系统提供的Sentinel进程所在Pod的IP地址后,Router进程基于该IP地址访问Sentinel进程进程所在Pod的IP地址,从而获取主Redis进程所在Pod的IP地址。最后,Router进程根据主Redis进程所在Pod的IP地址访问主Redis进程,从而在主Redis进程中进行数据的读和/或写,实现对数据的存储和/或读取。
本申请实施例在上述图1中对Redis集群系统的系统架构进行了简单的介绍。下面,结合附图,对本申请实施例提供的一种Redis集群的系统部署架构图进行示例性地介绍。
请参见图2,图2是本申请实施例提供的一种示例性的Redis集群系统部署架构图。
在该Redis集群系统部署架构图中包括远程字典服务操作模块(Redis_Operator)、K8s系统、服务管理系统以及远程字典服务应用操作模块(Redis_App_Operator)。
Redis_Operator用于接收用户输入的Redis集群系统的部署信息(包括Redis进程的数量、Sentinel进程的数量、Router进程的数量等信息),在Redis_Operator中包括远程字典服务处理器模块(Redis_Processor),在远程字典服务处理器模块中包括合法性检查模块、集群拓扑管理模块以及集群关系管理模块。
在Redis_Operator中还包括应用程序模块(App模块)、K8s模块以及远程字典服务模块。在K8s模块中包括配置映射对象(Configmap)管理模块、状态设置(Statefulset)管理模块以及容器(Pod)管理模块。在远程字典服务模块中包括远程字典服务(Redis)管理模块、哨兵(Sentinel)管理模块以及路由(Router)管理模块。
合法性检查模块用于检查Redis集群系统部署信息是否合法(例如,逻辑是否正确、一个Redis分片中主Redis进程的数量是否超过一个等等)。若合法性检查模块判断Redis集群系统部署信息不合法,则该Redis集群部署系统暂时不进行Redis集群系统的构建。
集群拓扑管理模块用于构建Redis集群系统,具体包括:
集群拓扑管理模块通过应用模块与K8s系统通信,从而通过K8s系统构建远程字典服务应用对象(Redis App)、哨兵应用对象(Sentinel App)以及路由应用对象(RouterApp)。
集群拓扑管理模块还可以通过配置映射管理模块与K8s系统通信,从而通过K8s系统生成远程字典服务配置映射对象(Redis_Configmap)、哨兵映射对象(Sentinel_Configmap)以及路由配置映射对象(Router_Configmap)。
集群拓扑管理模块还可以通过状态设置管理模块生成进程配置信息(配置信息中包括Redis进程的镜像、Sentinel进程的镜像、Router进程的镜像),将进程配置信息发送给K8s系统,由K8s系统生成远程字典服务状态设置对象(Redis_Statefulset)、哨兵状态设置对象(Sentinel_Statefulset)、路由状态设置对象(Router_Statefulset)。然后,K8s系统根据Redis进程的镜像、Sentinel进程的镜像、Router进程的镜像分配Pod,并创建和启动Pod中的Redis进程、Sentinel进程、Router进程等。K8s系统将Redis进程、Sentinel进程以及Router进程所在Pod的IP地址以及Pod对应的分片标识信息分别写入Redis应用对象、Sentinel应用对象以及Router应用对象中。
集群关系管理模块用于对Redis集群进行配置,具体包括:
集群关系管理模块通过Pod管理模块获取Pod的实例信息(Pod对应的IP地址与Pod对应的分片标识信息)和工作状态信息,从而判断Pod当前的工作状态是否正常。
集群关系管理模块还可以通过应用程序模块判断Redis应用对象、Sentinel应用对象以及Router应用对象中的实例信息是否正确。
集群关系管理模块还可以通过Redis管理模块判断Redis分片中主Redis进程的数量是否正确,以及在Redis分片中不存在主Redis进程的情况下,在Redis分片中指定主Redis进程。
集群关系管理模块还可以通过Sentinel管理模块判断在Sentinel进程中是否存在主Redis进程的实例信息,以及在存在主Redis进程的实例信息的情况下,判断Sentinel进程中主Redis进程的实例信息是否正确。在Sentinel进程中不存在主Redis进程的实例信息时,集群关系管理模块可以通过Sentinel管理模块在Sentinel进程中写入主Redis进程的实例信息。在Sentinel进程中的实例信息不正确时,集群关系管理模块可以通过Sentinel管理模块修正Sentinel进程中的实例信息。
集群关系管理模块还可以通过Router管理模块检查Router进程中主Redis进程的实例信息是否正确。若不正确,集群关系管理模块可以将Router进程中的主Redis进程的实例信息进行修正,以便Router进程能够根据正确的实例信息访问主Redis进程,实现通过主Redis进程对数据进行读/写操作。或者对Router进程进行重建,以便让Router进程重新获取服务管理系统中正确的主Redis进程的实例信息。
集群关系管理模块还可以通过Sentinel管理模块对Sentinel应用对象中Sentinel进程的实例信息进行解屏蔽,Router进程可以通过访问服务管理系统获取Sentinel进程的实例信息,从而实现对Sentinel进程的访问。
远程字典服务应用操作模块用于检测Redis应用对象、Sentinel应用对象以及Router应用对象中的实例信息是否发生变化。在实例信息发生变化的情况下,将变化的实例信息发送给服务管理系统。
服务管理系统用于管理Redis进程、Sentinel进程和Router进程的实例信息,在接收到Router进程获取实例信息请求的情况下,向Router进程提供对应的进程的实例信息。
上述图2对本申请实施例涉及的一种Redis集群部署方法的系统架构进行了示例性地介绍。下面,结合图3A-图3D,对本申请实施例提供的一种Redis集群部署方法的流程进行介绍。
在图3A-图3D中,包括第一网络设备、第二网络设备、第三网络设备以及第四网络设备。在第一网络设备中部署有远程字典服务操作模块,在第二网络设备中部署有K8s系统,在第三网络设备中部署有远程字典服务应用操作模块,在第四网络设备中部署有服务管理系统。
在本申请实施例提供的一种Redis集群部署方法中主要包括Redis集群拓扑的构建、Redis进程的配置、Sentinel进程的配置以及Router进程的创建和配置四个步骤。
首先,结合图3A对Redis集群拓扑构建的流程进行说明。图3A是本申请实施例提供的一种Redis集群部署流程图,具体流程如下:
S301:第一网络设备接收Redis集群的部署信息。
具体的,Redis集群的部署信息为Redis集群的基本信息,包括Redis集群中Redis进程的数量、Sentinel进程的数量以及Router进程的数量。
在一些实施例中,部署信息还可以包括每个Redis分片中从进程的数量、Redis分片的数量、Sentinel分片的数量、Router分片的数量等。
S302:在所述部署信息通过检测的情况下,所述第一网络设备向第二网络设备发送第三创建指令,所述第三创建指令用于指示所述第二网络设备创建Redis应用对象、Sentinel应用对象和Router应用对象。
可选的,在第一网络设备中的远程字典服务操作模块在接收到Redis集群的部署信息后,可以通过远程字典服务操作模块中的合法性检查模块对Redis集群的部署信息进行合法性检测,即:检查部署信息是否符合要求。
示例性的,若部署信息指示在一个Redis分片中主Redis进程的数量大于或等于两个,则认为部署信息不合法,检测不合格。
在部署信息未通过检测的情况下,合法性检查模块会在第一时长后,进行下一次检测。在检测合格的情况下,合法性检查模块可以向远程字典服务操作模块中的集群拓扑管理模块发送第一提示信息,用于提示集群拓扑管理模块可以进行Redis集群的网络拓扑的构建,在第一提示信息中可以包括Redis集群的部署信息。
第一网络设备向第二网络设备发送第三创建指令的具体方式可以为:集群拓扑管理模块向程字典服务操作系统中的应用程序模块发送应用对象创建指令,应用对象创建指令用于指示应用程序模块创建Redis应用对象、Sentinel应用对象和Router应用对象。
其中,Redis应用对象用于存储和管理Redis进程的第一实例信息、Sentinel应用对象用于存储和管理Sentinel进程的第二实例信息、Router应用对象用于存储和管理Router进行的第三实例信息。
Redis进程的第一实例信息包括Redis进程所在Pod的IP地址与Redis进程类型的映射关系,包括RedisRedis进程所在Pod的IP地址以及该Pod所在分片的标识信息;Sentinel进程的第二实例信息用于表征Sentinel进程所在Pod的IP地址与Sentinel进程类型的映射关系,包括Sentinel进程所在Pod的IP地址以及该Pod所在分片的标识信息;Router进程的第三实例信息用于表征Router进程所在Pod的IP地址与Router进程类型的映射关系,包括Router进程所在Pod的IP地址以及该Pod所在分片的标识信息。进程类型包括:Redis进程、Sentinel进程和Router进程。
在接收到集群拓扑管理模块发送的应用对象创建指令后,应用程序模块向部署在第二网络设备上的K8s系统发送第三创建指令,第三创建指令用于指示K8s创建Redis应用对象、Sentinel应用对象和Router应用对象。
S303:所述第二网络设备创建Redis应用对象、Sentinel应用对象和Router应用对象。
具体的,第二网络设备中的K8s系统在接收到第一网络设备中应用程序模块发送的第三创建指令后,根据第三创建指令分别创建Redis应用对象、Sentinel应用对象和Router应用对象。
可选地,K8s系统在创建Redis应用对象、Sentinel应用对象和Router应用对象之后,可以向第三网络设备中的远程字典服务应用操作模块发送第二提示信息,用于提示远程字典服务应用操作模块Redis应用对象、Sentinel应用对象和Router应用对象创建完成,以便远程字典服务应用操作模块可以监测Redis应用对象、Sentinel应用对象和Router应用对象中实例信息的变化情况。
S304:第一网络设备向第二网络设备发送第四创建指令,所述第四创建指令用于指示所述第二网络设备创建Redis配置映射对象、Sentinel配置映射对象和Router配置映射对象。
可选的,第一网络设备还可以通过向第二网络设备发送第四创建指令的方式,指示第二网络设备中的K8s系统创建Redis配置映射对象、Sentinel配置映射对象和Router配置映射对象。
其中,Redis配置映射对象用于保存和管理第一白名单,Sentinel配置映射对象用于保存和管理第二白名单,Router配置映射对象用于保存和管理第三白名单。
第一白名单中包括第一进程所在Pod的IP地址,第二白名单中包括第二进程所在Pod的IP地址,第三白名单中包括第三进程所在Pod的IP地址。其中,第一进程为允许访问Redis进程的进程,第二进程为允许访问Sentinel进程的进程,第三进程为允许访问Router进程的进程。
这样,当存在进程要访问Redis进程时,Redis进程可以通过获取第一白名单判断是否允许该进程访问。当存在进程要访问Sentinel进程时,Sentinel进程可以通过获取第二白名单判断定是否允许该进程访问。当存在进程要访问Router进程时,Router进程可以通过获取第三白名单判断是否允许该进程访问。
第一网络设备还可以通过向第二网络设备发送第四创建指令,发送第四创建指令的方式可以为:
集群拓扑管理模块可以向远程字典服务操作模块中的配置映射管理模块发送配置映射对象创建指令,指示配置映射管理模块创建Redis配置映射对象、Sentinel配置映射对象和Router配置映射对象。在配置映射对象创建指令中可以包括第一白名单、第二白名单以及第三白名单。其中,第一白名单、第二白名单以及第三白名单可以从Redis集群的部署信息中获取。
配置映射管理模块接收到集群拓扑管理模块发送的配置映射对象创建指令后,可以向部署在第二网络设备中的K8s系统发送第四创建指令,第四创建指令用于指示K8s系统创建Redis配置映射对象、Sentinel配置映射对象以及Router配置映射对象。其中,第四创建指令中可以包括第一白名单、第二白名单、第三白名单。
应当理解的是,S304可以在S302之前执行,也可以在S302之后执行,还可以和S302同时执行,本申请实施例不做限制。
S305:所述第二网络设备根据第四创建指令创建Redis配置映射对象、Sentinel配置映射对象和Router配置映射对象。
具体的,第二网络设备中的K8s系统在接收到第四创建指令后,K8s系统可以根据第四创建指令创建Redis配置映射对象、Sentinel配置映射对象和Router配置映射对象。
此外,K8s还可以将第一白名单写入Redis配置映射对象对应的第一存储空间中,将第二白名单写入Sentinel配置映射对象对应的第二存储空间中,将第三白名单写入Router配置对象对应的第三存储空间中。
应当理解的是,S304~S305是可选步骤。
S306:所述第一网络设备根据所述Redis集群的部署信息生成第一进程配置信息,所述第一进程配置信息中包括Redis镜像和Sentinel镜像。
具体的,第一网络设备根据Redis集群的部署信息生成第一进程配置信息的具体方法可以为:
集群拓扑管理模块可以向远程字典服务操作模块中的状态设置管理模块发送第一进程创建指令,第一进程创建指令用于指示生成Redis进程和Sentinel进程。在进程创建指令中可以包括Redis分片的数量信息以及每个Redis分片中Redis进程的数量信息、Sentinel分片的数量信息以及每个Sentinel分片中Sentinel进程的数量信息。
其中,Redis分片的数量信息以及每个Redis分片中Redis进程的数量信息、Sentinel分片的数量以及每个Sentinel分片中Sentinel进程的数量信息可以从Redis集群的部署信息中得到。
状态设置管理模块在接收到第一进程创建指令后,可以根据第一进程创建指令生成第一进程配置信息,在第一进程配置信息中包括每个Redis进程的镜像和Sentinel进程的镜像,以及每个Redis进程和每个Sentinel进程对应的分片标识信息。
应当理解的是,S306可以在S304之前执行,也可以在S304之后执行,还可以和S304同时执行,本申请实施例不做限制。
S307:所述第一网络设备向所述第二网络设备发送第一创建指令,所述第一创建指令中包括所述第一进程配置信息,所述第一创建指令用于指示所述第二网络设备创建并启动Redis进程和Sentinel进程。
具体的,在状态设置管理模块生成第一进程配置信息后,状态设置管理模块向K8s系统发送第一创建指令,第一创建指令用于指示K8s系统创建并启动Redis进程和Sentinel进程。其中,在第一创建指令中,包括第一进程配置信息。
S308:所述第二网络设备基于所述第一创建指令创建并启动Redis进程和Sentinel进程。
具体的,部署在第二网络设备中的K8s系统接收到第一创建指令后,根据第一创建指令中Redis分片的数量N1生成N1个Redis状态设置对象(Redis_Statefulset),根据第一创建指令中Sentinel分片的数量N3生成N3个Sentinel状态设置对象(Sentinel_Statefulset)。
然后,K8s系统根据每个Redis分片中Redis进程的数量N2,在每个Redis状态设置对象下分配N2个容器Pod,每个Pod对应一个IP地址,每个Pod的IP地址不同。K8s系统根据每个Sentinel分片中Sentinel进程的数量N4,在每个Sentinel状态设置对象下分配N4个容器Pod,每个Pod对应一个IP地址,每个Pod的IP地址不同。
在为每个进程分配好Pod之后,K8s系统在Redis分片的每个Pod中启动Redis镜像。这样,在每个Redis分片的每个Pod中都创建并运行一个Redis进程。K8s系统在Sentinel分片的每个Pod中启动Sentinel镜像。这样,在每个Sentinel分片的每个Pod中都创建并运行一个Sentinel进程。
S309:所述第二网络设备将第一实例信息写入Redis应用对象,将第二实例信息写入Sentinel应用对象,所述第一实例信息为Redis进程的实例信息,所述第二实例信息是Sentinel进程的实例信息。
具体的,K8s系统在Pod中创建并运行Redis进程和Sentinel进程后,K8s系统会将每个Redis进程的第一实例信息写入Redis应用对象(可以理解为将第一实例信息写入Redis应用对象对应的第一存储空间中),将每个Sentinel进程的第二实例信息写入Sentinel应用对象(可以理解为将第二实例信息写入Sentinel应用对象对应的第二存储空间中)。
其中,第一实例信息可以包括每个Redis进程所在Pod的IP地址、该Pod所在Redis分片的标识信息,第二实例信息可以包括每个Sentinel进程所在Pod的IP地址、该Pod所在Sentinel分片的标识信息。
在一些实施例中,K8s系统写入应用对象中的实例信息可以是处于屏蔽状态下的实例信息,对于处于屏蔽状态下的实例信息,进程无法获取该实例信息中的Pod的IP地址。这样,在一定程度上可以保证实例信息中IP地址的安全性,防止进程所在Pod的IP地址被泄露,使得Redis集群出现安全漏洞。
S310:第三网络设备获取写入Redis应用对象中的第一实例信息和写入Sentinel对象中的第二实例信息,并将所述第一实例信息和所述第二实例信息发送给第四网络设备。
具体的,部署在第三网络设备中的远程字典服务应用操作模块在Redis应用对象、Sentinel应用对象以及Router应用对象创建后,会实时或定期监控Redis应用对象、Sentinel对象以及Router对象中是否有实例信息变化(包括实例信息的写入、删除、修改等)。
远程字典服务应用操作模块在监测到Redis应用对象中写入第一实例信息和/或Sentinel应用对象中写入第二实例信息时,远程字典服务应用操作模块会获取第一实例信息和第二实例信息,并将第一实例信息和第二实例信息发送给部署在第四网络设备中的服务管理系统。这样,当存在进程向服务管理系统请求获取进程所在Pod的IP地址时,服务管理系统可以从实例存储空间中获取对应的实例信息,并将获取到的实例信息发送给该进程。
S311:所述第四网络设备将所述第一实例信息写入第一实例存储空间中,将所述第二实例信息写入第二实例存储空间中。
具体的,部署在第四网络设备中的服务管理系统在接收到远程字典服务应用操作模块发送的第一实例信息和第二实例信息后,服务管理系统会将第一实例信息存储在第一实例存储空间中,将第二实例信息存储在第二实例存储空间中。
其中,第一实例存储空间是服务管理系统管理的、存储第一实例信息的存储空间,第二实例存储空间是服务管理系统管理的、存储第二实例信息的存储空间,第三实例信息是服务管理系统管理的、存储第三实例信息的存储空间。
上述S301~S311对Redis集群拓扑结构的构建进行了说明。在上述图3A所示的流程发图中,初步完成了对Redis集群拓扑的构建,即:创建并启动了Redis进程、Sentinel进程。此外,还创建了Redis应用对象、Sentinel应用对象以及Router对象,将Redis进程的第一实例信息写入Redis应用对象中,将Sentinel进程的第二实例信息写入Sentinel应用对象,进而通过远程字典服务应用操作模块将Redis进程的第一实例信息和Sentinel进程的第二实例信息写入服务管理系统中,实现了对进程的实例信息的管理。
但是,此时还需要对Redis进程、Sentinel进程进行配置,才能使得Redis进程、Sentinel进程能够实现其对应的功能。首先,需要对Redis进程进行配置。
下面,结合图3B对Redis进程的配置流程进行说明。具体流程如下:
S312:第一网络设备获取每个进程所在的Pod的状态数据,判断每个Pod的工作状态标识是否均为第一标识。
具体的,在上述S306中,集群拓扑管理模块可以向远程字典服务操作模块中的状态设置管理模块发送第一进程创建指令之后,集群拓扑管理模块可以向远程字典服务操作模块中的集群关系管理模块发送第三提示信息,第三提示信息用于指示集群关系模块可以进行Redis进程的配置操作。
在集群关系管理模块接收到第三提示信息后,集群关系管理模块向远程字典服务操作模块中的Pod(容器)管理模块发送第一查询消息。第一查询消息用于指示Pod管理模块获取Pod的状态数据。
Pod管理模块在接收第一查询消息后,可以通过访问每个Pod,得到每个Pod的状态数据。Pod的状态数据可以包括Pod的IP地址,还可以包括Pod的工作标识。
其中,Pod的工作标识用于表征Pod的工作状态是否正常。若Pod的工作标识为第一标识,则说明Pod的工作状态正常。若Pod的工作标识为第二标识,则说明Pod的工作状态异常。这样,Pod管理模块可以基于Pod工作标识判断每个Pod的工作状态是否正常。
S313:若存在工作标识为第二标识的Pod,第一网络设备在第一时长后对Redis集群的部署信息进行合法性的检测。
具体的,若存在工作标识为第二标识的Pod,Pod管理模块向集群关系管理模块发送第一消息。第一消息用于提示集群关系管理模块当前存在工作不正常的Pod。然后,集群关系管理模块可以通知合法性检查模块在第一时长后检查Redis集群的部署信息的合法性。在部署信息合法的情况下进行Redis集群拓扑的建立或Redis进程的配置。在不合法的情况下,在第一时长后,再次检测Redis集群的部署信息的合法性,并根据Redis集群的部署信息的合法情况决定是否进行Redis集群拓扑的构建或Redis进程的配置。
S314:在所有Pod的工作标识为第一标识的情况下,第一网络设备向第二网络设备发送第一请求消息,所述第一请求消息用于请求所述第二网络设备发送Redis进程的第一实例信息。
具体的,若Pod管理模块检测到所有的Pod的工作标识均为第一标识,Pod管理模块可以向集群关系管理模块发送第二消息,第二消息用于提示集群关系管理模块所有Pod的工作标识均为第一标识。其中,在第二消息中还包括每个Pod的状态数据。
集群关系管理模块接收到第二消息后,向应用程序模块发送第二查询消息,第二查询消息用于指示应用程序模块查询Redis进程所在Pod的IP地址是否均在第一存储空间中的第一实例信息中。
其中,在第二查询消息中包括每个Pod的状态数据。应用程序模块在接收到第二查询消息后,向K8s系统发送第一请求消息,第一请求消息用于指示K8s系统从Redis应用程序对象中获取Redis进程的第一实例信息。
应当S312可以在S314之前执行,也可以在S312之后执行,也可以和S312同时执行,本申请实施例对于S312和S314的执行顺序不做限制。
S315:第二网络设备获取第一实例信息,并将所述第一实例信息发送给第一网络设备。
具体的,K8s系统接收到第一请求消息后,K8s系统在Redis应用对象管理的第一存储空间中获取第一实例信息,并将第一实例信息发送给应用程序模块。
S316:所述第一网络设备判断所述Redis进程所在Pod的IP地址是否均在所述第一实例信息中。
具体的,应用程序模块在接收到第一实例信息后,判断Pod的状态数据中Redis进程所在Pod的IP地址是否在均在第一实例信息中。
若Pod的状态数据中Redis进程所在Pod的IP地址不均在第一实例信息中,应用程序模块向集群关系管理模块发送第三消息,用于提示集群关系管理模块当前有Redis进程所在Pod的IP地址存在错误。
然后,集群关系管理模块通知合法性检查模块,在第一时长后检查Redis集群的部署信息的合法性,在合法的情况下进行集群拓扑的建立或进行Redis进程的配置。
S317:若所述Redis进程中的IP地址均在所述第一实例信息中,所述第一网络设备检查每个Redis分片中主Redis进程的数量。
具体的,若Redis进程中的IP地址均在所述第一实例信息中,应用程序模块可以向集群关系管理模块发送第四消息,第四消息用于提示集群关系管理模块Redis进程所在Pod的IP地址正确。
集群关系管理模块接收到第四消息后,通过Redis管理模块访问每个Redis分片中的Redis进程确定每个Redis分片中主Redis进程的数量。
若单个Redis分片中主Redis进程的数量为1,执行S319。
若单个Redis分片中主Redis进程的数量大于或等于2,Redis管理模块向集群关系管理模块发送第五消息,第五消息用于指示单个Redis分片中主Redis进程的数量不合理。
然后,集群关系管理模块通知合法性检查模块,在第一时长后检查Redis集群的部署信息的合法性,在合法的情况下进行集群拓扑的建立或进行Redis进程的配置。
S318:若单个Redis分片中主Redis进程的数量为0,所述第一网络设备根据第一算法确定Redis分片中的一个Redis进程为主Redis进程。
具体的,若Redis管理模块检测到单个Redis分片中的主进程数量为0,可以根据第一算法确定主Redis进程,即:将该Redis分片中运行时间最长的Redis进程确定为主Redis进程。然后,Redis管理模块可以向该Redis分片中的从Redis进程发送第一配置信息,第一配置信息用于指示从进程对应的主Redis进程所在Pod的IP地址,第一配置信息包括主Redis进程所在Pod的IP地址。执行完本步骤后,执行步骤S319。
S319:第一网络设备检查Redis分片中从Redis进程中的第一IP地址是否正确,所述第一IP地址为所述Redis分片中主Redis进程所在Pod的IP地址。
具体的,Redis管理模块在检测到单个Redis分片中主Redis进程的数量为1,或者检测到单个Redis分片中的主Redis进程为0并为Redis分片中配置了一个主Redis进程后,Redis管理模块向集群管理模块发送第六消息。第六消息用于提示Redis分片中主Redis进程的数量合理。
集群管理模块接收到来自Redis管理模块的第六消息后,集群管理模块可以Redis管理模块发送第三查询消息。第三查询消息用于指示Redis管理模块查询Redis分片中从Redis进程中的第一IP地址是否与该Redis分片中主Redis进程所在Pod的IP地址一致。第一IP地址为从Redis进程中的主Redis进程所在Pod的IP地址。若第一IP地址与该Redis分片中主Redis进程所在Pod的IP地址一致,则说明从Redis进程中的第一IP地址正确;反之,则不正确。
Redis管理模块可以以Redis分片为单位访问该Redis分片中的所有Redis进程,可以得到该Redis分片中主Redis进程所在Pod的IP地址以及从Redis进程中的第一IP地址。然后,比较获取的主Redis进程所在Pod的IP地址与第一IP地址是否一致来判断从Redis进程中的第一IP地址是否正确。
S320:若所述从Redis进程中的第一IP地址不正确,所述第一网络设备将所述从Redis进程中第一IP地址更新为所述Redis分片中主Redis进程所在Pod的IP地址。
具体的,若从Redis进程中的第一IP地址不正确,Redis管理模块将该从Redis进程中的第一IP地址更新为其获取到的该Redis分片中主Redis进程所在Pod的IP地址。
可选的,在从Redis进程中的第一IP地址正确或对从Redis进程中不正确的第一IP地址进行更正后,Redis管理模块向集群关系管理模块发送第七消息,第七消息用于指示Redis管理模块对从Redis进程配置完毕。
上述图3B中的S312-S320对Redis进程的配置流程进行了介绍,在对Redis进程配置完成后,还需要对Sentinel进程进行配置。从而保证Sentinel进程能够实现主、从Redis进程切换的功能。
下面,结合图3C对Sentinel进程的配置流程进行说明。具体流程如下:
S321:第一网络设备检测Sentinel进程中是否存在第一Redis进程信息,所述第一Redis进程信息包括Redis分片中的主、从Redis进程所在Pod的IP地址。
具体的,集群关系管理模块对Redis进程配置完成后,集群关系管理模块可以向远程字典服务操作模块中的Sentinel管理模块发送第四查询消息。
第四查询消息用于指示Sentinel管理模块检测Sentinel进程中是否存在第一Redis进程信息。其中,第一Redis进程信息包括Redis分片中主、从Redis进程所在Pod的IP地址。
S322:若Sentinel进程中不存在第一Redis进程信息,所述第一网络设备在所述Sentinel进程中写入第二Redis进程信息,所述第二Redis进程信息为所述第一网络设备从Redis应用对象中获取的主Redis进程所在Pod的IP地址和从Redis进程所在Pod的IP地址。
具体的,若Sentinel管理模块检测到Sentinel进程中不存在第一Redis进程信息,Sentinel管理模块通过Redis管理模块获取分片中主、从Redis进程IP地址(第二Redis进程信息),并将获取到的第二Redis进程信息写入Sentinel进程中。
S323:若Sentinel进程中存在第一Redis进程信息,所述第一网络设备判断所述第一Redis进程信息是否正确。
具体的,若Sentinel管理模块检测到Sentinel进程中存在第一Redis进程信息,Sentinel管理模块判断该第一Redis进程信息是否正确,判断方式可以为:
Sentinel管理模块可以从Redis管理模块获取每个Redis分片中主、从Redis进程所在Pod的IP地址(第二Redis进程信息)。然后,第二Redis进程信息中每个Redis分片中主Redis进程所在Pod的IP地址与第一Redis进程信息中,相同Redis分片中主Redis进程所在Pod的IP地址进行比对,判断是否一致;将第二Redis进程信息中每个Redis分片中从Redis进程所在Pod的IP地址与第一Redis进程信息中相同Redis分片中从Redis进程所在Pod的IP地址进行比对,判断是否一致。若都一致,则确定Sentinel进程中的第一Redis进程信息正确;反之,则判断不正确。
S324:若不正确,所述第一网络设备根据第二Redis进程信息将所述Sentinel进程中的第一Redis信息进行更正。
具体的,若Sentinel管理模块检测到第一Redis进程信息不正确,Sentinel管理模块将第一Redis进程信息中与第二Redis进程信息中不一致的信息进行更正,使得第一主从Redis进程信息中每个Redis分片中主Redis进程所在Pod的IP地址与第二主从Redis进程信息中相同Redis分片中主Redis进程所在Pod的IP地址相同,使得第一主从Redis进程信息中每个Redis分片中从Redis进程所在Pod的IP地址与第二主从Redis进程信息中相同Redis分片中从Redis进程所在Pod的IP地址相同。
S325:在Sentinel应用对象管理的第二实例信息处于屏蔽状态的情况下,所述第一网络设备将所述Sentinel应用对象中的第二实例信息进行解屏蔽。
具体地,在Redis应用对象管理的第一实例信息、Sentinel应用对象管理的第二实例信息中还可以包括实例标识,该实例标识用于表征实例信息是否处于屏蔽状态。若实例信息中的实例标识为第一屏蔽标识,则说明实例信息处于屏蔽状态,处于屏蔽状态下的实例信息中的IP地址不能被进程获取。若实例信息中的实例标识为第二屏蔽标识,则说明实例信息处于非屏蔽状态,处于非屏蔽状态下的实例信息中的IP地址可以被进程获取。
因此,当Sentinel应用对象管理的第二实例信息处于屏蔽状态的情况下,第一网络设备需要对第二实例信息进行解屏蔽操作。
第一网络设备对第二实例信息进行解屏蔽的过程可以为:
集群关系管理模块向Sentinel管理模块发送第一修改指令,所述第一修改指令用于指示将Sentinel应用对象管理的第二实例信息进行解屏蔽。
在接收到第一修改指令后,Sentinel管理模块访问Sentinel应用对象,并将Sentinel应用对象管理的第二实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识。
Sentinel管理模块将Sentinel应用对象管理的第二实例信息的实例标识改变后,远程字典服务应用操作模块可以检测到Sentinel应用对象管理的第二实例信息的实例标识改变。然后,远程字典服务应用操作模块获取实例标识改变的第二实例信息,并将获取到的第二实例信息发送给第四网络设备中的服务管理系统。
服务管理系统在接收到远程字典服务应用操作模块发送的第二实例信息后,会将接收到的第二实例信息替换掉第二实例存储空间中原有的第二实例信息。
这样,在第二实例存储空间中的第二实例信息处于非屏蔽状态。保证了服务管理系统能提供给访问进程未屏蔽的第二实例信息,从而保证进程能够获取第二实例信息中Sentinel进程所在Pod的IP地址。
应当理解的是,S325、S323、S321的执行顺序本申请实施例仅作举例说明,对于S325、S323、S321的执行顺序,本申请实施例不作限制。
可选的,在对Sentinel进程配置完成后,Sentinel管理模块可以向集群关系管理模块发送用于指示Sentinel进程配置完成的提示信息,从而提醒集群关系管理模块对Sentinel进程的配置完成。
上述S321~S325对Redis集群拓扑中对Sentinel进程的配置流程进行了说明。在对Redis进程和Sentinel进程配置完成后,需要创建Router进程,并对Router进程进行配置。从而使得Router进程能够在Redis进程中读写数据。
下面,结合图3D对Router进程的配置流程进行说明。具体流程如下:
S326:第一网络设备根据Redis集群架构的部署信息生成第二进程配置信息,所述第二进程配置信息中包括Router镜像。
具体的,集群关系管理模块在对Redis进程和Sentinel进程配置完成后,可以向集群拓扑管理模块发送第四提示信息。第四提示信息用于提示集群拓扑管理模块对Redis进程和Sentinel进程的配置已经完成。
在一种可能实现的方式中,第四提示信息还可以用于指示集群拓扑管理模块创建Router进程。
集群拓扑管理模块接收到来自集群关系管理模块的第四提示信息后,集群拓扑管理模块可以根据Redis集群架构的部署信息生成第二进程配置信息。其中,集群拓扑管理模块生成第二进程配置信息的具体方法可以为:
集群拓扑管理模块可以向远程字典服务操作模块中的状态设置管理模块发送第二进程创建指令,该第二进程创建指令用于指示生成Router进程。在第二进程创建指令中可以包括Router分片的数量信息以及每个Router分片中Router进程的数量信息。
其中,Router分片的数量信息以及每个Router分片中Router进程的数量信息可以从Redis集群的部署信息中得到。
状态设置管理模块在接收到第二进程创建指令后,会根据第二进程创建指令生成第二进程配置信息,在第二进程配置信息中包括每个Router进程的镜像,以及每个Router进程对应的分片标识信息。
S327:所述第一网络设备向所述第二网络设备发送第二创建指令,所述第二创建指令中包括所述第二进程配置信息,所述第二创建指令用于指示所述第二网络设备创建并启动Router进程。
在状态设置管理模块生成第二进程配置信息后,状态设置管理模块向K8s系统发送第二创建指令,第二创建指令用于指示K8s系统创建并启动Router进程。其中,在第二创建指令中,包括第二进程配置信息。
S328:所述第二网络设备基于所述第二创建指令创建并启动Router进程。
具体的,部署在第二网络设备中的K8s系统接收到第二创建指令后,根据第二创建指令中Router分片的数量N5生成N5个Router状态设置对象(Router_Statefulset)。
然后,K8s系统根据每个Redis分片中Router进程的数量N6,在每个Redis状态设置对象下分配N6个容器Pod。每个Pod对应一个IP地址,每个Pod的IP地址不同。在为每个Router进程分配好Pod之后,K8s系统在Router分片的每个Pod中启动Router镜像。这样,在每个Router分片的每个Pod中都创建并运行一个Router进程。
在一些实施例中,Router进程在启动后,可以向服务管理系统发送第一实例请求消息,第一实例请求消息用于请求服务管理系统向Router进程发送第二实例信息。
服务管理系统在接收到来自Router进程发送的第一实例请求消息后,会在第二实例存储空间中调取第二实例信息,并将第二实例信息发送给Router进程。然后,Router进程可以基于第二实例信息中Sentinel进程所在Pod的IP地址访问Sentinel进程,从而获取主Redis进程所在Pod的IP地址。这样,Router进程可以根据主Redis进程所在Pod的IP地址访问主Redis进程,从而通过主Redis进程实现对数据的读/写操作。
S329:所述第二网络设备将第三实例信息写入Router应用对象,所述第三实例信息是Router进程的实例信息。
具体的,K8s系统在Pod中创建并运行Router进程后,K8s系统会将每个Router进程的第三实例信息写入Router应用对象。其中,第三实例信息包括每个Router进程所在Pod的IP地址、Router分片的标识信息。
在一些实施例中,K8s系统写入Router应用对象中的实例信息可以是处于屏蔽状态下的实例信息,对于处于屏蔽状态下的实例信息,进程无法获取该实例信息中的IP地址。这样,在一定程度上可以保证实例信息中IP地址的安全性,防止进程所在Pod的IP地址被泄露,使得Redis集群出现安全漏洞。
S330:第三网络设备获取Router应用对象中写入的第三实例信息,并将所述第三实例信息发送给第四网络设备。
具体的,部署在第三网络设备中的远程字典服务应用操作模块在Redis应用对象、Sentinel应用对象以及Router应用对象创建后,会实时或定期监控Redis应用对象、Sentinel对象以及Router对象中是否有实例信息变化(包括实例信息的写入、删除、修改等)。远程字典服务应用操作模块在监测到Router应用对象中写入第三实例信息时,远程字典服务应用操作模块会获取第三实例信息,并将第三实例信息发送给第四网络设备中的服务管理系统。
S331:所述第四网络设备将所述第三实例信息写入第三实例存储空间中。
具体的,部署在第四网络设备中的服务管理系统在接收到远程字典服务应用操作模块发送的第三实例信息后,服务管理系统会将第三实例信息存储在第三实例存储空间中。
S332:第一网络设备获取每个进程的Pod的状态数据,判断每个Pod的工作状态标识是否均为第一标识。
具体的,在上述S326中,集群拓扑管理模块可以向远程字典服务操作模块中的状态设置管理模块发送第二进程创建指令之后,集群拓扑管理模块可以向远程字典服务操作模块中的集群关系管理模块发送第五提示信息,第五提示信息用于提示集群关系管理模块当前集群拓扑管理模块成功创建并启动Router进程。
在集群关系管理模块接收到第五提示信息后,集群关系管理模块向远程字典服务操作模块中的Pod(容器)管理模块发送第五查询消息。第五查询消息用于指示Pod管理模块获取Pod的状态数据。
Pod管理模块在接收第五查询消息后,可以通过访问每个Pod,得到每个Pod的状态数据。Pod的状态数据可以包括Pod中进程的实例信息,还可以包括Pod的工作标识。
其中,Pod的工作标识用于表征Pod的工作状态是否正常。若Pod的工作标识为第一标识,则说明Pod的工作状态正常,若Pod的工作标识为第二标识,则说明Pod的工作状态异常。这样,Pod管理模块可以基于Pod工作标识判断每个Pod的工作状态是否正常。
S333:若存在工作标识为第二标识的Pod,第一网络设备在第一时长后对Redis集群的部署信息进行合法性的检测。
具体的,若存在工作标识为第二标识的Pod,Pod管理模块向集群关系管理模块发送第一消息,用于提示集群关系管理模块当前存在工作不正常的Pod。然后,集群关系管理模块通知合法性检查模块,在第一时长后检查Redis集群的部署信息的合法性,在合法的情况下进行集群拓扑的建立或Redis进程的配置。在不合法的情况下,在第一时长后,再次检测Redis集群的部署信息的合法性,并根据Redis集群的部署信息的合法情况决定是否进行Redis集群拓扑的构建或Redis进程的配置。
S334:在所有Pod的工作状态标识均为第一标识的情况下,第一网络设备检测Router进程中的主Redis进程所在Pod的IP地址是否正确。
具体的,在所有Pod的工作状态标识均为第一标识的情况下,Pod管理模块可以向集群关系管理模块发送第八消息,第八消息用于提示集群关系管理模块所有Pod的工作状态均正常。
集群关系管理模块可以向Router管理模块发送第六查询消息,第六查询消息用于指示Router管理模块查询Router进程中主Redis进程所在Pod的IP地址是否正确。Router管理模块可以通过Sentinel管理模块获取Sentinel进程中每个Redis分片中主Redis进程所在Pod的IP地址。
此外,Router管理模块还可以通过访问Router进程获取Router进程中每个Redis分片主Redis进程所在Pod的IP地址。然后,Router进程将这两个主Redis进程所在Pod的IP地址进行对比,判断每个Redis分片中主Redis进程所在Pod的IP地址是否一致。若一致,则确定Router进程中主Redis进程所在Pod的IP地址正确;若不一致,则确定Router进程中主Redis进程所在Pod的IP地址不正确。
S335:在所述Router进程中的主Redis进程所在Pod的IP地址不正确的情况下,所述第一网络设备重建所述Router进程。
可选地,Router管理模块在检测到Router进程中主Redis进程所在Pod的IP地址不正确时,Router管理模块可以向Pod管理模块发送第一重建请求,该第一重建请求用于指示Pod管理模块删除该Router进程对应的Pod。Pod管理模块在接收到第一重建请求后,会通过K8s系统删除该Router进程对应的Pod。然后,K8s系统可以根据之前第二进程配置信息中Router镜像重新建立Pod,并在Pod中创建并启动Router进程。
在一些实施例中,K8s系统在删除Pod后,会将Router应用对象中该Pod对应的第三实例信息删除。远程字典服务应用操作模块在监测到Router应用中存在第三实例信息被删除后,可以向服务管理系统发送被删除的第三实例信息的信息。然后,服务管理系统可以在第三存储空间中删除对应的第三实例信息。
在一些实施例中,K8s系统在创建新的Pod并启动该Pod中的Router进程后,会将该Pod的第三实例信息写入Router应用对象中。远程字典服务应用操作模块在监测到Router应用中写入新的第三实例信息后,可以向服务管理系统发送新写入的第三实例信息。然后,服务管理系统可以在第三存储空间存储该第三实例信息。
在一些实施例中,在新的Router进程启动后,可以向服务管理系统发送第二实例请求消息,用于请求服务管理系统向Router进程发送第二实例信息。服务管理系统在接收到来自Router进程发送的第二实例请求消息后,会在第二实例存储空间中调取第二实例信息,并将第二实例信息发送给Router进程。然后,Router进程可以基于第二实例信息中Sentinel进程所在Pod的IP地址访问Sentinel进程,从而获取主Redis进程所在Pod的IP地址。这样,Router进程可以根据主Redis进程所在Pod的IP地址访问主Redis进程,从而通过主Redis进程实现对数据的读/写操作。
在一种可能实现的方式中,在所述Router进程中的主Redis进程所在Pod的IP地址不正确的情况下,Router管理模块可以将Router中的主Redis进程所在Pod的IP地址更新为Router管理模块从Redis管理模块出获取的主Redis进程所在Pod的IP地址。
S336:在Router应用对象管理的第三实例信息处于屏蔽状态的情况下,所述第一网络设备将所述Router应用对象中的第三实例信息进行解屏蔽。
具体地,在Router应用对象管理的第三实例信息中还可以包括实例标识,该实例标识用于表征实例信息是否处于屏蔽状态。若实例信息中的实例标识为第一屏蔽标识,则说明实例信息处于屏蔽状态,处于屏蔽状态下的实例信息中的IP地址不能被进程获取。若实例信息中的实例标识为第二屏蔽标识,则说明实例信息处于非屏蔽状态,处于非屏蔽状态下的实例信息中的IP地址可以被进程获取。因此,当Router应用对象管理的第二实例信息处于屏蔽状态的情况下,第一网络设备需要对第三实例信息进行解屏蔽操作。
第一网络设备对第三实例信息进行解屏蔽的过程可以为:集群关系管理模块向Router管理模块发送第二修改指令,所述第二修改指令用于指示将Router应用对象管理的第三实例信息进行解屏蔽。
在接收到第二修改指令后,Router管理模块访问Router应用对象,并将Router应用对象管理的第三实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识。
Router管理模块将Router应用对象管理的第三实例信息的实例标识改变后,远程字典服务应用操作模块可以检测到Router应用对象管理的第三实例信息的实例标识改变。然后,远程字典服务应用操作模块获取实例标识改变的第三实例信息,并将获取到的第三实例信息发送给第四网络设备中的服务管理系统。
服务管理系统在接收到远程字典服务应用操作模块发送的第三实例信息后,会将接收到的第三实例信息替换掉第三实例存储空间中原有的第三实例信息。
这样,在第三实例存储空间中的第三实例信息处于非屏蔽状态。保证了服务管理系统能提供给访问进程未屏蔽的第三实例信息,从而保证进程能够获取第三实例信息中Router进程所在Pod的IP地址。然后,根据Router进程所在Pod的IP地址访问Router进程,通过Router进程实现对Redis进程中数据的读/写操作。
在本申请实施例中,通过先建立Redis集群系统的拓扑结构,即:创建并启动Redis进程和Sentinel进程。然后,对Redis进程进行数据配置,使得配置后的Redis进程中包括所述Redis进程对应Redis分片中主Redis进程所在容器Pod的IP地址。在对Redis进程进行数据配置后,对Sentinel进程进行数据配置,使得配置后的Sentinel进程中包括各Redis分片中主Redis进程所在Pod的IP地址。在对Redis进程和Sentinel进程配置完成后,创建路由进程,并对路由进程进行配置。使得配置后的Router进程中包括所述Sentinel进程所在Pod的IP地址,这样,路由进程可以通过Sentinel进程所在Pod的IP地址访问Sentinel进程,从而获取Sentinel进程中各Redis分片中主Redis进程所在Pod的IP地址,并根据主Redis进程所在Pod的IP地址访问主Redis进程,实现对主Redis进程中数据的读或写。通过这种方式,可以在Redis架构部署之初,可以灵活创建Sentinel进程和Router进程,解决Redis地集群化部署的同时,不能兼容企业内部多分片的Redis集群架构的问题。
上述详细阐述了本申请实施例的方法,下面介绍本申请实施例的相关装置、设备、计算机可读存储介质、计算机程序以及芯片系统。
请参见图4,图4是本申请实施例提供的一种集群系统部署装置的结构示意图,集群系统部署装置40可以包括远程字典服务处理器模块401、状态设置管理模块402、远程字典服务管理模块403、哨兵管理模块404以及路由管理模块405;其中,各个单元的详细描述如下:
远程字典服务处理器模块401,用于接收远程字典Redis集群的部署信息;
状态设置管理模块402,用于向第二网络设备发送第一创建指令;
还用于向第二网络设备发送第二创建指令;
远程字典服务管理模块403,用于配置Redis进程;
哨兵管理模块404,用于配置Sentinel进程;
路由管理模块405,用于配置Router进程。
在一种可能实现的方式中,该集群系统部署装置,还包括:
配置映射管理模块,用于向第二网络设备发送第三创建指令。
在一种可能实现的方式中,配置Redis进程,包括:检测N2个Redis进程所在Pod的IP地址是否均在第一实例信息中存在;在均存在的情况下,检测每个Redis分片中主Redis进程的数量是否小于或等于1;若存在Redis分片中的主Redis进程的数量为0、其它Redis分片中的主Redis进程的数量为1,在Redis分片中将一个Redis进程设置为主Redis进程;将Redis分片中的其它Redis进程设置为从Redis进程。
在一种可能实现的方式中,检测每个Redis分片中主Redis进程的数量是否小于或等于1之后,还包括:在每个Redis分片中的主Redis进程的数量均为1的情况下,检测每个分片中从Redis进程中的第一IP地址是否与Redis分片中主Redis进程所在Pod的IP地址是否一致;第一IP地址为从Redis进程中的主Redis进程所在Pod的IP地址;若不一致,将从Redis进程中的第一IP地址更新为从Redis进程所在分片中主Redis进程所在Pod的IP地址。
在一种可能实现的方式中,配置Sentinel进程,包括:若在Sentinel进程中不存在第一Redis进程信息,在Sentinel进程中写入第二Redis进程信息;第一Redis进程信息和第二Redis进程信息中均包括Redis进程所在Pod的IP地址和Redis进程所在分片的标识信息,第二Redis进程信息是基于通过Redis应用对象获取的第一实例信息得到的;若在Sentinel进程中存在第一Redis进程信息,检测第一Redis信息与第二Redis进程信息是否一致;若不一致,将第一Redis进程信息中与第二Redis进程信息不一致的部分进行修正。
在一种可能实现的方式中,配置Sentinel进程,还包括:在Sentinel应用对象管理的第二实例信息处于屏蔽状态的情况下,访问Sentinel应用对象;将第二实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第二实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第二实例信息处于非屏蔽状态。
在一种可能实现的方式中,配置Router进程,包括:在根据容器Pod状态数据确定所有进程的Pod均处于正常工作状态的情况下,检测Router进程中存储的各Redis分片中主Redis进程所在Pod的IP地址是否第二IP地址一致;第二IP地址为Pod状态数据中,各Redis分片对应的主Redis进程所在Pod的IP地址,Pod状态数据是访问所有进程Pod得到的数据;若不一致,将Router进程中与Pod状态数据不一致的主Redis进程所在Pod的IP地址进行修正,修正后的主Redis进程所在Pod的IP地址与Pod状态数据中主Redis进程所在Pod的IP地址一致。
在一种可能实现的方式中,配置Router进程,还包括:在Router应用对象管理的第二实例信息处于屏蔽状态的情况下,访问Router应用对象;将第三实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第三实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第三实例信息处于非屏蔽状态。
请参见图5,图5是本申请实施例提供的一种集群系统部署装置的结构示意图,集群系统部署装置50可以包括第一接收模块501、第一创建模块502、第二接收模块503、第二创建模块504;其中,各个单元的详细描述如下:
第一接收模块501,用于接收来自第一网络设备的第一创建指令;
第一创建模块502,用于根据第一创建指令创建并启动N2个Redis进程和N4个Sentinel进程;
第二接收模块503,用于接收来自第一网络设备的第二创建指令;
第二创建模块504,用于根据第二创建指令创建并启动N6个Router进程。
在一种可能实现的方法中,该集群系统部署装置50,还包括:
第三接收模块,用于接收来自第一网络设备的第三创建指令;
第三创建模块,用于根据第三创建指令创建Redis应用对象、Sentinel应用对象以及Router应用对象。
在一种可能实现的方式中,该集群系统部署装置50,还包括:
第一写入模块,用于将第一实例信息写入Redis应用对象;
第二写入模块,用于将第二实例信息写入Redis应用对象。
在一种可能实现的方式中,该集群系统部署装置50,还包括:
第三写入模块,用于将第三实例信息写入Router应用对象。
请参见图6,图6是本申请实施例提供的一种集群系统部署装置的结构示意图,集群系统部署装置60可以包括远程字典服务应用操作模块601;其中,各个模块的详细描述如下:
远程字典服务应用操作模块601,用于检测Redis应用对象中第一实例信息的变化情况;
远程字典服务应用操作模块601,还用于若检测到Redis应用对象中写入第一实例信息,获取第一实例信息;
远程字典服务应用操作模块601,还用于将第一实例信息发送给第四网络设备;
远程字典服务应用操作模块601,还用于检测Sentinel应用对象中第二实例信息的变化情况;
远程字典服务应用操作模块601,还用于若检测到Sentinel应用对象中写入第二实例信息,获取第二实例信息;
远程字典服务应用操作模块601,还用于将第二实例信息发送给第四网络设备;
远程字典服务应用操作模块601,还用于检测Router应用对象中第三实例信息的变化情况;
远程字典服务应用操作模块601,还用于若检测到Router应用对象中写入第三实例信息,获取第三实例信息;
远程字典服务应用操作模块601,还用于将第三实例信息发送给第四网络设备;
远程字典服务应用操作模块601,还用于若检测到Router应用对象管理的第三实例信息中的实例标识发生改变;
远程字典服务应用操作模块601,还用于将实例标识改变的第三实例信息发送给第四网络设备。
请参见图7,图7是本申请实施例提供的一种网络设备的结构示意图,所述网络设备70可以包括存储器701、通信模块702和处理器703;其中,各个单元的详细描述如下:
存储器701用于存储程序代码。
处理器703用于调用存储器存储的程序代码执行如下步骤:
通过通信模块702接收远程字典Redis集群的部署信息;
通过通信模块702向第二网络设备发送第一创建指令;
在已创建好的Redis进程和Sentinel进程正常工作的情况下,配置Redis进程;
配置Sentinel进程;
通过通信模块702向第二网络设备发送第二创建指令;
在已创建好的Router进程、Redis进程和Sentinel进程正常工作的情况下,配置Router进程。
在一种可能实现的方式中,配置Redis进程,包括:检测N2个Redis进程所在Pod的IP地址是否均在第一实例信息中存在;在均存在的情况下,检测每个Redis分片中主Redis进程的数量是否小于或等于1;若存在Redis分片中的主Redis进程的数量为0、其它Redis分片中的主Redis进程的数量为1,在Redis分片中将一个Redis进程设置为主Redis进程;将Redis分片中的其它Redis进程设置为从Redis进程.
在一种可能实现的方式中,检测每个Redis分片中主Redis进程的数量是否小于或等于1之后,还包括:在每个Redis分片中的主Redis进程的数量均为1的情况下,检测每个分片中从Redis进程中的第一IP地址是否与Redis分片中主Redis进程所在Pod的IP地址是否一致;第一IP地址为从Redis进程中的主Redis进程所在Pod的IP地址;若不一致,将从Redis进程中的第一IP地址更新为从Redis进程所在分片中主Redis进程所在Pod的IP地址。
在一种可能实现的方式中,配置Sentinel进程,包括:若在Sentinel进程中不存在第一Redis进程信息,在Sentinel进程中写入第二Redis进程信息;第一Redis进程信息和第二Redis进程信息中均包括Redis进程所在Pod的IP地址和Redis进程所在分片的标识信息,第二Redis进程信息是基于通过Redis应用对象获取的第一实例信息得到的;若在Sentinel进程中存在第一Redis进程信息,检测第一Redis信息与第二Redis进程信息是否一致;若不一致,将第一Redis进程信息中与第二Redis进程信息不一致的部分进行修正。
在一种可能实现的方式中,配置Sentinel进程,还包括:在Sentinel应用对象管理的第二实例信息处于屏蔽状态的情况下,访问Sentinel应用对象;将第二实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第二实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第二实例信息处于非屏蔽状态。
在一种可能实现的方式中,配置Router进程,包括:在根据容器Pod状态数据确定所有进程的Pod均处于正常工作状态的情况下,检测Router进程中存储的各Redis分片中主Redis进程所在Pod的IP地址是否第二IP地址一致;第二IP地址为Pod状态数据中,各Redis分片对应的主Redis进程所在Pod的IP地址,Pod状态数据是访问所有进程Pod得到的数据;若不一致,将Router进程中与Pod状态数据不一致的主Redis进程所在Pod的IP地址进行修正,修正后的主Redis进程所在Pod的IP地址与Pod状态数据中主Redis进程所在Pod的IP地址一致。
在一种可能实现的方式中,配置Router进程,还包括:在Router应用对象管理的第二实例信息处于屏蔽状态的情况下,访问Router应用对象;将第三实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第三实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第三实例信息处于非屏蔽状态。
请参见图8,图8是本申请实施例提供的一种网络设备的结构示意图,所述网络设备80可以包括存储器801、通信模块802和处理器803;其中,各个单元的详细描述如下:
存储器801用于存储程序代码。
处理器803用于调用存储器存储的程序代码执行如下步骤:
通过通信模块802接收来自第一网络设备的第一创建指令;
根据第一创建指令创建并启动N2个Redis进程和N4个Sentinel进程;
通过通信模块802接收来自第一网络设备的第二创建指令。
在一种可能实现的方式中,所述处理器803用于调用所述存储器801存储的程序代码,执行:
通过通信模块802接收来自第一网络设备的第三创建指令。
在一种可能实现的方式中,所述处理器802用于调用所述存储器801存储的程序代码,执行:
将第一实例信息写入Redis应用对象;
将第二实例信息写入Redis应用对象。
在一种可能实现的方式中,根据第二创建指令创建并启动N6个Router进程之后,还包括:将第三实例信息写入Router应用对象。
请参见图9,图9是本申请实施例提供的一种网络设备的结构示意图,所述网络设备90可以包括存储器901、通信模块902和处理器903;其中,各个单元的详细描述如下:
检测Redis应用对象中第一实例信息的变化情况;
若检测到Redis应用对象中写入第一实例信息,通过通信模块获取第一实例信息;
通过通信模块902将第一实例信息发送给第四网络设备;
检测Sentinel应用对象中第二实例信息的变化情况;
若检测到Sentinel应用对象中写入第二实例信息,通过通信模块902获取第二实例信息;
通过通信模块902将第二实例信息发送给第四网络设备;
若检测到Sentinel应用对象管理的第二实例信息中的实例标识发生改变,将实例标识改变的第二实例信息通过通信模块902发送给第四网络设备;
检测Router应用对象中第三实例信息的变化情况;
若检测到Router应用对象中写入第三实例信息,通过通信模块902获取第三实例信息;
通过通信模块902将第三实例信息发送给第四网络设备;
若检测到Router应用对象管理的第三实例信息中的实例标识发生改变,将实例标识改变的第三实例信息通过通信模块902发送给第四网络设备。
本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,实现上述实施例及其各种可能的实现方式中的集群系统部署方法。
需要说明的是,上述实施例中的存储器,可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存储器(random accessmemory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于于此。存储器可以是独立存在,通过总线于处理器相连接。存储器可以和处理器集成在一起。
上述实施例中的处理器,可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。
对于前述各方法实施例,为了简单描述,故将其都表达为一系列的动作组合,但是本领域的技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
上述作为分离部件说明的单元可以是或者不是也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(read-only memory,ROM)或者随机存取存储器(random access memory,RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (16)
1.一种集群系统部署方法,其特征在于,包括:
接收远程字典Redis集群的部署信息,所述部署信息包括Redis进程的数量N2、哨兵Sentinel进程的数量N4以及路由Router进程的数量N6;
向第二网络设备发送第一创建指令,所述第一创建指令包括所述部署信息,所述第一创建指令用于指示所述第二网络设备创建并启动N2个Redis进程和N4个Sentinel进程;
在已创建好的Redis进程和Sentinel进程正常工作的情况下,配置所述Redis进程;配置后的Redis进程中包括所述Redis进程对应Redis分片中主Redis进程所在容器Pod的IP地址;
配置所述Sentinel进程;配置后的Sentinel进程中包括各Redis分片中主Redis进程所在Pod的IP地址;
向所述第二网络设备发送第二创建指令,所述第二创建指令包括所述部署信息,所述第二创建指令用于指示所述第二网络设备创建并启动N6个Router进程;
在已创建好的Router进程、所述Redis进程和所述Sentinel进程正常工作的情况下,配置所述Router进程;配置后的Router进程中包括所述Sentinel进程所在Pod的IP地址。
2.如权利要求1所述的方法,其特征在于,所述向第二网络设备发送第一创建指令之前,还包括:
向所述第二网络设备发送第三创建指令,所述第三创建指令用于指示所述第二网络设备创建Redis应用对象、Sentinel应用对象以及Router应用对象;
其中,所述Redis应用对象用于管理所述Redis进程的第一实例信息,所述Sentinel应用对象用于管理所述Sentinel进程的第二实例信息,所述Router应用对象用于管理所述Router进程的第三实例信息,所述第一实例信息包括每个Redis进程所在Pod的IP地址和分片标识信息,所述第二实例信息包括每个Sentinel进程所在Pod的IP地址和分片标识信息,所述第三实例信息包括每个Router进程所在Pod的IP地址和分片标识信息。
3.如权利要求2所述的方法,其特征在于,所述配置所述Redis进程,包括:
检测所述N2个Redis进程所在Pod的IP地址是否均在所述第一实例信息中存在;
在均存在的情况下,检测每个Redis分片中主Redis进程的数量是否小于或等于1;
若存在Redis分片中的主Redis进程的数量为0、其它Redis分片中的主Redis进程的数量为1,在所述Redis分片中将一个Redis进程设置为主Redis进程;
将所述Redis分片中的其它Redis进程设置为从Redis进程。
4.如权利要求3所述的方法,其特征在于,所述检测所述N2个Redis进程所在Pod的IP地址是否均在所述第一实例信息中存在之后,还包括:
在每个Redis分片中的主Redis进程的数量均为1的情况下,检测每个分片中从Redis进程中的第一IP地址是否与所述Redis分片中主Redis进程所在Pod的IP地址是否一致;所述第一IP地址为所述从Redis进程中的主Redis进程所在Pod的IP地址;
若不一致,将所述从Redis进程中的第一IP地址更新为所述从Redis进程所在分片中主Redis进程所在Pod的IP地址。
5.如权利要求2所述的方法,其特征在于,所述配置所述Sentinel进程,包括:
若在所述Sentinel进程中不存在第一Redis进程信息,在所述Sentinel进程中写入第二Redis进程信息;所述第一Redis进程信息和所述第二Redis进程信息中均包括所述Redis进程所在Pod的IP地址和所述Redis进程所在分片的标识信息,所述第二Redis进程信息是基于通过所述Redis应用对象获取的第一实例信息得到的;
若在所述Sentinel进程中存在第一Redis进程信息,检测所述第一Redis信息与所述第二Redis进程信息是否一致;
若不一致,将所述第一Redis进程信息中与所述第二Redis进程信息不一致的部分进行修正。
6.如权利要求3所述的方法,其特征在于,所述配置所述Sentinel进程,还包括:
在所述Sentinel应用对象管理的第二实例信息处于屏蔽状态的情况下,访问所述Sentinel应用对象;
将所述第二实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;
其中,所述实例标识为所述第一屏蔽标识,表征所述第二实例信息处于屏蔽状态,所述实例标识为所述第二屏蔽标识,表征所述第二实例信息处于非屏蔽状态。
7.如权利要求1所述的方法,其特征在于,所述配置所述Router进程,包括:
在根据容器Pod状态数据确定所有进程的Pod均处于正常工作状态的情况下,检测所述Router进程中存储的各Redis分片中主Redis进程所在Pod的IP地址是否第二IP地址一致;所述第二IP地址为所述Pod状态数据中,各Redis分片对应的主Redis进程所在Pod的IP地址,所述Pod状态数据是访问所有进程Pod得到的数据;
若不一致,将所述Router进程中与所述Pod状态数据不一致的主Redis进程所在Pod的IP地址进行修正,修正后的主Redis进程所在Pod的IP地址与所述Pod状态数据中主Redis进程所在Pod的IP地址一致。
8.如权利要求3所述的方法,其特征在于,所述配置所述Router进程,还包括:
在所述Router应用对象管理的第二实例信息处于屏蔽状态的情况下,访问所述Router应用对象;
将所述第三实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;
其中,所述实例标识为所述第一屏蔽标识,表征所述第三实例信息处于屏蔽状态,所述实例标识为所述第二屏蔽标识,表征所述第三实例信息处于非屏蔽状态。
9.一种集群系统部署方法,其特征在于,包括:
接收来自第一网络设备的第一创建指令,所述第一创建指令包括Redis集群的部署信息;所述部署信息包括Redis进程的数量N2、Sentinel进程的数量N4以及Router进程的数量N6;
根据所述第一创建指令创建并启动N2个Redis进程和N4个Sentinel进程;
接收来自所述第一网络设备的第二创建指令,所述第二创建指令包括所述部署信息;
根据所述第二创建指令创建并启动N6个Router进程。
10.如权利要求9所述的方法,其特征在于,所述接收来自第一网络设备的第一创建指令之前,还包括:
接收来自所述第一网络设备的第三创建指令,所述第三创建指令用于指示创建Redis应用对象、Sentinel应用对象以及Router应用对象;
根据所述第三创建指令创建所述Redis应用对象、所述Sentinel应用对象以及所述Router应用对象。
11.如权利要求10所述的方法,其特征在于,所述根据所述第一创建指令创建并启动所述N2个Redis进程和所述N4个Sentinel进程之后,还包括:
将第一实例信息写入所述Redis应用对象;
将第二实例信息写入所述Redis应用对象;
其中,所述第一实例信息包括每个Redis进程所在容器的IP地址和分片标识信息,所述第二实例信息包括每个Sentinel进程所在容器的IP地址和分片标识信息。
12.如权利要求10所述的方法,其特征在于,所述根据所述第二创建指令创建并启动N6个Router进程之后,还包括:
将第三实例信息写入所述Router应用对象;
其中,所述第三实例信息包括每个Router进程所在容器的IP地址和分片标识信息。
13.一种集群系统部署方法,其特征在于,包括:
检测Redis应用对象中第一实例信息的变化情况;
若检测到所述Redis应用对象中写入第一实例信息,获取所述第一实例信息;
将所述第一实例信息发送给第四网络设备,所述第四网络设备用于管理实例信息;
检测Sentinel应用对象中第二实例信息的变化情况;
若检测到所述Sentinel应用对象中写入第二实例信息,获取所述第二实例信息;
将所述第二实例信息发送给所述第四网络设备;
若检测到所述Sentinel应用对象管理的第二实例信息中的实例标识发生改变,将所述实例标识改变的第二实例信息发送给所述第四网络设备;
检测Router应用对象中第三实例信息的变化情况;
若检测到所述Router应用对象中写入第三实例信息,获取所述第三实例信息;
将所述第三实例信息发送给所述第四网络设备;
若检测到所述Router应用对象管理的第三实例信息中的实例标识发生改变,将所述实例标识改变的第三实例信息发送给所述第四网络设备。
14.一种集群系统部署装置,其特征在于,包括执行如权利要求1-8任意一项所述的集群系统部署方法的模块,或执行权利要求9-12任意一项所述的集群系统部署方法的模块,或权利要求13所述的集群系统部署方法的模块。
15.一种网络设备,其特征在于,包括:存储器和处理器,其中:
所述存储器,用于存储计算机程序,所述计算机程序包括程序指令;
所述处理器用于调用所述程序指令,使得所述网络设备执行如权利要求1-8任意一项所述的方法,或执行如权利要求9-12任意一项所述的方法,或执行如权利要求13所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,实现如权利要求1-8任意一项所述的方法,或实现如权利要求9-12任意一项所述的方法,或实现如权利要求13所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310894783.1A CN117032819A (zh) | 2023-07-20 | 2023-07-20 | 一种集群系统部署方法、装置、设备以及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310894783.1A CN117032819A (zh) | 2023-07-20 | 2023-07-20 | 一种集群系统部署方法、装置、设备以及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117032819A true CN117032819A (zh) | 2023-11-10 |
Family
ID=88642085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310894783.1A Pending CN117032819A (zh) | 2023-07-20 | 2023-07-20 | 一种集群系统部署方法、装置、设备以及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117032819A (zh) |
-
2023
- 2023-07-20 CN CN202310894783.1A patent/CN117032819A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11586673B2 (en) | Data writing and reading method and apparatus, and cloud storage system | |
CN109005045B (zh) | 主备服务系统及主节点故障恢复方法 | |
CN109886693B (zh) | 区块链系统的共识实现方法、装置、设备和介质 | |
WO2019245884A1 (en) | Memory-efficient upgrade staging | |
US20180302500A1 (en) | Environment isolation method and device | |
CN108073423B (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
CN113961312A (zh) | 目标服务的部署方法、装置和电子设备 | |
US20130239004A1 (en) | System and method for providing an in-memory data grid application container | |
CN112083889A (zh) | 数据迁移方法、装置、设备及可读存储介质 | |
US8031637B2 (en) | Ineligible group member status | |
CN112468545A (zh) | 一种云主机创建方法、装置、系统、设备及可读存储介质 | |
CN110012111B (zh) | 一种数据服务集群系统及数据处理方法 | |
CN113315754A (zh) | 容器出访防火墙智能联动方法及装置、设备、介质 | |
CN108062239B (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
US10205545B2 (en) | Resource creation method and apparatus | |
CN113672336A (zh) | 一种k8s容器集群部署方法、装置、设备及可读存储介质 | |
CN112667259A (zh) | 一种sdn控制器版本升级方法、设备及介质 | |
CN117032819A (zh) | 一种集群系统部署方法、装置、设备以及可读存储介质 | |
CN113268206B (zh) | 一种网络靶场资源热插拔实现方法与系统 | |
CN114036218A (zh) | 一种数据模型切换方法、装置、服务器和存储介质 | |
US20170308684A1 (en) | System and method for information processing | |
CN112925612A (zh) | 一种基于Kubernetes的监控服务静态配置管理方法 | |
JP5464449B2 (ja) | 障害によるリブートを考慮した処理部間の不整合検出方法並びに共有装置及びクラスタシステム | |
CN112631727B (zh) | 一种容器组pod的监控方法及装置 | |
CN105991340B (zh) | 一种故障访问链路筛选方法及装置 |
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 |