本技术涉及集群系统的,尤其涉及一种集群系统部署的方法、装置、设备以及计算机可读存储介质。
背景技术:
1、远程字典服务(remote dictionary server,redis)是一中高性能的关键值(key-value)存储系统,具有极高的读写性能,被广泛应用于缓存服务、分布式锁、计数器等。
2、传统物理机部署redis集群,需要运维人员手动搭建,部署时间较长,也不利于后期维护,无法满足业务快速发展的需求。kubernetes(本技术实施例简称k8s)云原生相较于传统it,可以助力业务快速开发、稳定运维,大幅降低技术成本,节约硬件资源。k8s云原生是依托容器化、微服务等技术,构建可扩展的基础设施,持续交付用于生产系统的基础软件,在功能不变的前提下,提高了应用的可用性与稳定性。因此,受到各云服务商地青睐,并将其作为容器编排解决方案,实现redis集群化部署。但是开源的解决方案无法兼容企业内部多分片redis集群架构、权限管控方案等。
3、因此,如何在使用k8s系统实现redis地集群化部署的同时,兼容企业内部多分片的redis集群架构,是技术人员日益关注的问题。
技术实现思路
1、本技术实施例提供一种集群系统部署方法、装置、设备以及可读存储介质,该方法解决了在集群系统部署过程中,不能够兼容企业内部多分片的redis架构的问题。
2、第一方面,本技术实施例提供一种集群系统部署方法,包括:接收远程字典redis集群的部署信息,该部署信息包括redis进程的数量n2、哨兵sentinel进程的数量n4以及路由router进程的数量n6;向第二网络设备发送第一创建指令,第一创建指令包括部署信息,第一创建指令用于指示第二网络设备创建并启动n2个redis进程和n4个sentinel进程;在已创建好的redis进程和sentinel进程正常工作的情况下,配置redis进程;配置sentinel进程;向第二网络设备发送第二创建指令,第二创建指令包括部署信息,第二创建指令用于指示第二网络设备创建并启动n6个router进程;在已创建好的router进程、redis进程和sentinel进程正常工作的情况下,配置router进程。
3、在本技术实施例中,通过先建立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、结合第一方面,在一种可能实现的方式中,向第二网络设备发送第一创建指令之前,还包括:向第二网络设备发送第三创建指令,第三创建指令用于指示第二网络设备创建redis应用对象、sentinel应用对象以及router应用对象;其中,redis应用对象用于管理redis进程的第一实例信息,sentinel应用对象用于管理sentinel进程的第二实例信息,router应用对象用于管理router进程的第三实例信息,第一实例信息包括每个redis进程所在容器pod的ip地址和分片标识信息,第二实例信息包括每个sentinel进程所在容器pod的ip地址和分片标识信息,第三实例信息包括每个router进程所在容器pod的ip地址和分片标识信息。这样,通过建立应用对象,有利于存储和管理redis进程、sentinel进程和router进程的实例信息。
5、结合第一方面,在一种可能实现的方式中,配置redis进程,包括:检测n2个redis进程所在pod的ip地址是否均在第一实例信息中存在;在均存在的情况下,检测每个redis分片中主redis进程的数量是否小于或等于1;若存在redis分片中的主redis进程的数量为0、其它redis分片中的主redis进程的数量为1,在redis分片中将一个redis进程设置为主redis进程;将redis分片中的其它redis进程设置为从redis进程。
6、这样,在redis分片中不存在主redis进程的情况下,可以在该redis分片中设置主redis进程,保证在该redis分片中存在redis进程进行数据的存储和管理。
7、结合第一方面,在一种可能实现的方式中,在每个redis分片中的主redis进程的数量均为1的情况下,检测每个分片中从redis进程中的第一ip地址是否与redis分片中主redis进程所在pod的ip地址是否一致;第一ip地址为从redis进程中的主redis进程所在pod的ip地址;若不一致,将从redis进程中的第一ip地址更新为从redis进程所在分片中主redis进程所在pod的ip地址。
8、这样,检查从redis进程中的主redis进程所在pod的ip地址是否正确,并对错误地址进行更正,有利于避免从redis进程复制其它分片的主redis进程的数据,导致数据复制错误的问题。
9、结合第一方面,在一种可能实现的方式中,配置sentinel进程,包括:若在sentinel进程中不存在第一redis进程信息,在sentinel进程中写入第二redis进程信息;第一redis进程信息和第二redis进程信息中均包括redis进程所在pod的ip地址和redis进程所在分片的标识信息,第二redis进程信息是基于通过redis应用对象获取的第一实例信息得到的;若在sentinel进程中存在第一redis进程信息,检测第一redis信息与第二redis进程信息是否一致;若不一致,将第一redis进程信息中与第二redis进程信息不一致的部分进行修正。这样,及时修改哨兵进程中不正确的第一redis信息,能够保证之后router进程从哨兵进程中获取的主redis信息正确,保证其能够正常访问主redis进程,进行数据的读写操作。
10、结合第一方面,在一种可能实现的方式中,配置sentinel进程,还包括:在sentinel应用对象管理的第二实例信息处于屏蔽状态的情况下,访问sentinel应用对象;将第二实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第二实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第二实例信息处于非屏蔽状态。
11、结合第一方面,在一种可能实现的方式中,配置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地址一致。
12、结合第一方面,在一种可能实现的方式中,配置router进程,还包括:在router应用对象管理的第二实例信息处于屏蔽状态的情况下,访问router应用对象;将第三实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第三实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第三实例信息处于非屏蔽状态。
13、第二方面,本技术实施例提供一种集群系统部署方法,包括:接收来自第一网络设备的第一创建指令,第一创建指令包括redis集群的部署信息;部署信息包括redis进程的数量n2、sentinel进程的数量n4以及router进程的数量n6;根据第一创建指令创建并启动n2个redis进程和n4个sentinel进程;接收来自第一网络设备的第二创建指令,第二创建指令包括部署信息;根据第二创建指令创建并启动n6个router进程。
14、结合第二方面,在一种可能实现的方式中,接收来自第一网络设备的第一创建指令之前,还包括:接收来自第一网络设备的第三创建指令,第三创建指令用于指示创建redis应用对象、sentinel应用对象以及router应用对象;根据第三创建指令创建redis应用对象、sentinel应用对象以及router应用对象。
15、结合第二方面,在一种可能实现的方式中,根据第一创建指令创建并启动n2个redis进程和n4个sentinel进程之后,还包括:将第一实例信息写入redis应用对象;将第二实例信息写入redis应用对象;其中,第一实例信息包括每个redis进程所在容器的ip地址和分片标识信息,第二实例信息包括每个sentinel进程所在容器的ip地址和分片标识信息。
16、结合第二方面,在一种可能实现的方式中,根据第二创建指令创建并启动n6个router进程之后,还包括:将第三实例信息写入router应用对象;其中,第三实例信息包括每个router进程所在容器的ip地址和分片标识信息。
17、第三方面,本技术实施例提供了一种集群系统部署方法,包括:检测redis应用对象中第一实例信息的变化情况;若检测到redis应用对象中写入第一实例信息,获取第一实例信息;将第一实例信息发送给第四网络设备,第四网络设备用于管理实例信息;检测sentinel应用对象中第二实例信息的变化情况;若检测到sentinel应用对象中写入第二实例信息,获取第二实例信息;将第二实例信息发送给第四网络设备;若检测到sentinel应用对象管理的第二实例信息中的实例标识发生改变,将实例标识改变的第二实例信息发送给第四网络设备;检测router应用对象中第三实例信息的变化情况;若检测到router应用对象中写入第三实例信息,获取第三实例信息;将第三实例信息发送给第四网络设备;若检测到router应用对象管理的第三实例信息中的实例标识发生改变,将实例标识改变的第三实例信息发送给第四网络设备。
18、第四方面,本技术实施例提供了一种集群系统部署装置,包括:
19、远程字典服务处理器模块,用于接收远程字典redis集群的部署信息;
20、状态设置管理模块,用于向第二网络设备发送第一创建指令;
21、还用于向第二网络设备发送第二创建指令;
22、远程字典服务管理模块,用于配置redis进程;
23、哨兵管理模块,用于配置sentinel进程;
24、路由管理模块,用于配置router进程。
25、结合第四方面,在一种可能实现的方式中,该集群系统部署装置,还包括:
26、配置映射管理模块,用于向第二网络设备发送第三创建指令。
27、结合第四方面,在一种可能实现的方式中,配置redis进程,包括:检测n2个redis进程所在pod的ip地址是否均在第一实例信息中存在;在均存在的情况下,检测每个redis分片中主redis进程的数量是否小于或等于1;若存在redis分片中的主redis进程的数量为0、其它redis分片中的主redis进程的数量为1,在redis分片中将一个redis进程设置为主redis进程;将redis分片中的其它redis进程设置为从redis进程。
28、结合第四方面,在一种可能实现的方式中,在每个redis分片中的主redis进程的数量均为1的情况下,检测每个分片中从redis进程中的第一ip地址是否与redis分片中主redis进程所在pod的ip地址是否一致;第一ip地址为从redis进程中的主redis进程所在pod的ip地址;若不一致,将从redis进程中的第一ip地址更新为从redis进程所在分片中主redis进程所在pod的ip地址。
29、结合第四方面,在一种可能实现的方式中,检测每个redis分片中主redis进程的数量是否小于或等于1之后,还包括:配置sentinel进程,包括:若在sentinel进程中不存在第一redis进程信息,在sentinel进程中写入第二redis进程信息;第一redis进程信息和第二redis进程信息中均包括redis进程所在pod的ip地址和redis进程所在分片的标识信息,第二redis进程信息是基于通过redis应用对象获取的第一实例信息得到的;若在sentinel进程中存在第一redis进程信息,检测第一redis信息与第二redis进程信息是否一致;若不一致,将第一redis进程信息中与第二redis进程信息不一致的部分进行修正。
30、结合第四方面,在一种可能实现的方式中,配置sentinel进程,还包括:在sentinel应用对象管理的第二实例信息处于屏蔽状态的情况下,访问sentinel应用对象;将第二实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第二实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第二实例信息处于非屏蔽状态。
31、结合第四方面,在一种可能实现的方式中,配置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地址一致。
32、结合第四方面,在一种可能实现的方式中,配置router进程,还包括:在router应用对象管理的第二实例信息处于屏蔽状态的情况下,访问router应用对象;将第三实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第三实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第三实例信息处于非屏蔽状态。
33、第五方面,本技术实施例提供了一种集群系统部署装置,包括:
34、第一接收模块,用于接收来自第一网络设备的第一创建指令;
35、第一创建模块,用于根据第一创建指令创建并启动n2个redis进程和n4个sentinel进程;
36、第二接收模块,用于接收来自第一网络设备的第二创建指令;
37、第二创建模块,用于根据第二创建指令创建并启动n6个router进程。
38、结合第五方面,在一种可能实现的方法中,该集群系统部署装置,还包括:
39、第三接收模块,用于接收来自第一网络设备的第三创建指令;
40、第三创建模块,用于根据第三创建指令创建redis应用对象、sentinel应用对象以及router应用对象。
41、结合第五方面,在一种可能实现的方式中,该集群系统部署装置,还包括:
42、第一写入模块,用于将第一实例信息写入redis应用对象;
43、第二写入模块,用于将第二实例信息写入redis应用对象。
44、结合第五方面,在一种可能实现的方式中,该集群系统部署装置,还包括:
45、第三写入模块,用于将第三实例信息写入router应用对象。
46、第六方面,本技术实施例提供了一种集群系统部署装置,包括:
47、远程字典服务应用操作模块,用于检测redis应用对象中第一实例信息的变化情况;
48、远程字典服务应用操作模块,还用于若检测到redis应用对象中写入第一实例信息,获取第一实例信息;
49、远程字典服务应用操作模块,还用于将第一实例信息发送给第四网络设备;
50、远程字典服务应用操作模块,还用于检测sentinel应用对象中第二实例信息的变化情况;
51、远程字典服务应用操作模块,还用于若检测到sentinel应用对象中写入第二实例信息,获取第二实例信息;
52、远程字典服务应用操作模块,还用于将第二实例信息发送给第四网络设备;
53、远程字典服务应用操作模块,还用于检测router应用对象中第三实例信息的变化情况;
54、远程字典服务应用操作模块,还用于若检测到router应用对象中写入第三实例信息,获取第三实例信息;
55、远程字典服务应用操作模块,还用于将第三实例信息发送给第四网络设备;
56、远程字典服务应用操作模块,还用于若检测到router应用对象管理的第三实例信息中的实例标识发生改变;
57、远程字典服务应用操作模块,还用于将实例标识改变的第三实例信息发送给第四网络设备。
58、第七方面,本技术实施例提供了一种网络设备,包括存储器、通信模块和处理器;
59、其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器存储的程序代码,执行如下步骤:
60、通过通信模块接收远程字典redis集群的部署信息;
61、通过通信模块向第二网络设备发送第一创建指令;
62、在已创建好的redis进程和sentinel进程正常工作的情况下,配置redis进程;
63、配置sentinel进程;
64、通过通信模块向第二网络设备发送第二创建指令;
65、在已创建好的router进程、redis进程和sentinel进程正常工作的情况下,配置router进程。
66、结合第七方面,在一种可能实现的方式中,所述处理器用于调用所述存储器存储的向第二网络设备发送第一创建指令之前,还包括:
67、通过通信模块向第二网络设备发送第三创建指令。
68、结合第七方面,在一种可能实现的方式中,配置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地址。
69、结合第七方面,在一种可能实现的方式中,配置sentinel进程,包括:若在sentinel进程中不存在第一redis进程信息,在sentinel进程中写入第二redis进程信息;第一redis进程信息和第二redis进程信息中均包括redis进程所在pod的ip地址和redis进程所在分片的标识信息,第二redis进程信息是基于通过redis应用对象获取的第一实例信息得到的;若在sentinel进程中存在第一redis进程信息,检测第一redis信息与第二redis进程信息是否一致;若不一致,将第一redis进程信息中与第二redis进程信息不一致的部分进行修正。
70、结合第七方面,在一种可能实现的方式中,配置sentinel进程,还包括:在sentinel应用对象管理的第二实例信息处于屏蔽状态的情况下,访问sentinel应用对象;将第二实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第二实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第二实例信息处于非屏蔽状态。
71、结合第七方面,在一种可能实现的方式中,配置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地址一致。
72、结合第七方面,在一种可能实现的方式中,配置router进程,还包括:在router应用对象管理的第二实例信息处于屏蔽状态的情况下,访问router应用对象;将第三实例信息中的实例标识由第一屏蔽标识修改为第二屏蔽标识;其中,实例标识为第一屏蔽标识,表征第三实例信息处于屏蔽状态,实例标识为第二屏蔽标识,表征第三实例信息处于非屏蔽状态。
73、第八方面,本技术实施例提供了一种网络设备,包括存储器、通信模块和处理器;
74、其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器存储的程序代码,执行如下步骤:
75、通过通信模块接收来自第一网络设备的第一创建指令;
76、根据第一创建指令创建并启动n2个redis进程和n4个sentinel进程;
77、通过通信模块接收来自第一网络设备的第二创建指令。
78、结合第八方面,在一种可能实现的方式中,所述处理器用于调用所述存储器存储的程序代码,执行:
79、通过通信模块接收来自第一网络设备的第三创建指令。
80、结合第八方面,在一种可能实现的方式中,所述处理器用于调用所述存储器存储的程序代码,执行:
81、将第一实例信息写入redis应用对象;
82、将第二实例信息写入redis应用对象。
83、结合第八方面,在一种可能实现的方式中,根据第二创建指令创建并启动n6个router进程之后,还包括:将第三实例信息写入router应用对象。
84、第九方面,本技术实施例提供了一种网络设备,包括存储器、通信模块和处理器;
85、其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器存储的程序代码,执行如下步骤:
86、检测redis应用对象中第一实例信息的变化情况;
87、若检测到redis应用对象中写入第一实例信息,通过通信模块获取第一实例信息;
88、通过通信模块将第一实例信息发送给第四网络设备;
89、检测sentinel应用对象中第二实例信息的变化情况;
90、若检测到sentinel应用对象中写入第二实例信息,通过通信模块获取第二实例信息;
91、通过通信模块将第二实例信息发送给第四网络设备;
92、若检测到sentinel应用对象管理的第二实例信息中的实例标识发生改变,将实例标识改变的第二实例信息通过通信模块发送给第四网络设备;
93、检测router应用对象中第三实例信息的变化情况;
94、若检测到router应用对象中写入第三实例信息,通过通信模块获取第三实例信息;
95、通过通信模块将第三实例信息发送给第四网络设备;
96、若检测到router应用对象管理的第三实例信息中的实例标识发生改变,将实例标识改变的第三实例信息通过通信模块发送给第四网络设备。
97、第十方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,实现上述第一方面及其各种可能实现的方式中集群系统部署方法或实现上述第二方面及其各种可能实现的方式中的集群系统部署方法或实现上述第三方面及其各种可能实现方式中的集群系统部署方法。
98、第十一方面,本技术实施例提供了一种计算机程序,该计算机程序包括指令,当所述计算机程序被计算机执行时,使得网络设备可以执行上述第一方面及其各种可能实现的方式中网络设备所执行的流程、或网络设备可以执行上述第二方面及其各种可能实现的方式中网络设备所执行的流程、或网络设备可以执行上述第三方面及其各种可能实现的方式中网络设备所执行的流程。