CN110012088A - 一种基于Kubernets的Redis主从集群自动化部署方案 - Google Patents

一种基于Kubernets的Redis主从集群自动化部署方案 Download PDF

Info

Publication number
CN110012088A
CN110012088A CN201910249212.6A CN201910249212A CN110012088A CN 110012088 A CN110012088 A CN 110012088A CN 201910249212 A CN201910249212 A CN 201910249212A CN 110012088 A CN110012088 A CN 110012088A
Authority
CN
China
Prior art keywords
redis
node
starting
pod
subordinate
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.)
Granted
Application number
CN201910249212.6A
Other languages
English (en)
Other versions
CN110012088B (zh
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.)
Shandong Inspur Cloud Information Technology Co Ltd
Original Assignee
Shandong Inspur Cloud 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 Shandong Inspur Cloud Information Technology Co Ltd filed Critical Shandong Inspur Cloud Information Technology Co Ltd
Priority to CN201910249212.6A priority Critical patent/CN110012088B/zh
Publication of CN110012088A publication Critical patent/CN110012088A/zh
Application granted granted Critical
Publication of CN110012088B publication Critical patent/CN110012088B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/2866Architectures; Arrangements
    • H04L67/30Profiles

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种基于Kubernets的Redis主从集群自动化部署方案,涉及集群部署技术领域;redis的配置文件通过文件流的方式,传入Helm安装包中,并将Helm配置及启动逻辑部署在configmap中,在redis‑server‑statefulset.yaml中,利用initContainers将各类启动脚本,挂载到容器所需pv中,各类启动脚本通过文件流的方式,写入到configmap中,initContainers通过command命令,启动启动脚本执行配置安装,进行redis的主从节点pod及sentinel节点在Kubernets的部署。

Description

一种基于Kubernets的Redis主从集群自动化部署方案
技术领域
本发明公开一种基于Kubernets的Redis主从集群自动化部署方案,涉及集群部署技术领域。
背景技术
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行,管理员可以加载一个微型服务,让规划器来找到合适的位置。
Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理。可以把Helm比作CentOS的yum工具。Helm有如下几个基本概念:
Chart:是Helm管理的安装包,里面包含需要部署的安装包资源。可以把Chart比作CentOS yum使用的rpm文件。每个Chart包含下面两部分:包的基本描述文件Chart.yaml;放在templates目录中的一个或多个Kubernetes manifest文件模板。
Release:是chart的部署实例,一个chart在一个Kubernetes集群上可以有多个release,即这个chart可以被安装多次。
Repository:chart的仓库,用于发布和存储char。
REmote DIctionary Server(Redis)是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是字符串(String),哈希(Map),列表(list),集合(sets)和有序集合(sorted sets)等类型。
Redis可以作为内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
Helm官方提供的Redis安装包,配置启动逻辑都写在了dockfile中,无法实现灵活部署的目的,而本发明提供一种基于Kubernets的Redis主从集群自动化部署方案,将部署启动逻辑放置在configmap中,使Redis主从集群的部署不在依赖于镜像版本,灵活扩张的同时,优化了启动逻辑,提高了集群的高可用性。
发明内容
本发明针对现有技术的问题,提供本发明公开一种基于Kubernets的Redis主从集群自动化部署方案,可以完成Redis主从集群自动化部署等操作,省去了人工部署的麻烦,更能避免人为失误,因此,极具推广价值。
本发明提出的具体方案是:
一种基于Kubernets的Redis主从集群自动化部署方案,redis的配置文件通过文件流的方式,传入Helm安装包中,并将Helm配置及启动逻辑部署在configmap中,
在redis-server-statefulset.yaml中,利用initContainers将各类启动脚本,挂载到容器所需pv中,各类启动脚本通过文件流的方式,写入到configmap中,initContainers通过command命令,启动启动脚本执行配置安装,
进行redis的主从节点pod及sentinel节点在Kubernets的部署。
所述的方法中redis的主从节点及sentinel节点的部署:redis的主节点pod安装Redis主节点组件,redis的从节点pod安装Redis从节点组件,
redis的sentinel节点安装sentinel组件。
所述的方法中启动脚本中包括集中shell脚本,initContainers通过command命令,开始执行redis-launcher.sh,集中shell脚本启动label-updater.sh脚本,完成podIP的打标签操作。
所述的方法中Redis集群首次创建时,判断是否有master标签的主节点pod存在,若无进行集群的master选举,打上master标签进行标志的主节点pod,启动主节点流程,其他pod为从节点pod启动从节点流程。
所述的方法中sentinel节点将主从节点信息写入到自身启动配置文件中,并启动promote.sh脚本,监控Redis集群主从节点情况。
所述的方法中Redis集群主节点pod宕机,sentinel节点启动promote.sh脚本,根据Redis集群中pod所打的标签,重新进行master选举,并重新为pod打上相应标签。
一种基于Kubernets的Redis,是将redis的配置文件通过文件流的方式,传入Helm安装包中,并将Helm的配置及启动逻辑部署在configmap中,
在redis-server-statefulset.yaml中,利用initContainers将各类启动脚本,挂载到容器所需pv中,各类启动脚本通过文件流的方式,写入到configmap中,initContainers通过command命令,启动启动脚本执行配置安装,
进行redis的主从节点pod及sentinel节点在Kubernets的部署。
所述的一种基于Kubernets的Redis中redis的主从节点及sentinel节点在Kubernets的部署:redis的主节点pod安装Redis主节点组件,redis的从节点pod安装Redis从节点组件,
redis的sentinel节点安装sentinel组件。
本发明的有益之处是:
本发明提供一种基于Kubernets的Redis主从集群自动化部署方案,能很好的解决Kubernets集群自动化部署Redis主从集群的问题,并将部署主要逻辑放在configmap中,保证了部署的灵活性;其次,本发明将redis的配置文件及通过文件流的方式,一次性传入Helm中,既保证了redis配置参数完整性,又可保证配置文件的易读可读性,一举两得;同时,本发明中挂载的各类启动脚本也是通过pv挂载的方式持久化到redis集群的各类pod中,因为同样采用文件流的方式写入,完整性和易读性都得到了有效保证;再次,本发明在容器安装过程中,启用initContainers技术,完成配置过程和启动过程分离的目的,不仅能实现集群的配置安装,还能保证容器日志的分隔,方便后续集群的运维工作;最后,本发明对redis的启动逻辑进行优化,保证了集群的高可用性。通过本发明,可以完成Redis主从集群自动化部署等操作,省去了人工部署的麻烦,更能避免人为失误,因此,极具推广价值。
附图说明
图1是本发明Redis主从集群结构示意图;
图2是本发明Redis主从集群的Chart包结构示意图;
图3是本发明Redis集群启动过程示意图。
具体实施方式
本发明提供一种基于Kubernets的Redis主从集群自动化部署方案,redis的配置文件通过文件流的方式,传入Helm安装包中,并将Helm配置及启动逻辑部署在configmap中,
在redis-server-statefulset.yaml中,利用initContainers将各类启动脚本,挂载到容器所需pv中,各类启动脚本通过文件流的方式,写入到configmap中,initContainers通过command命令,启动启动脚本执行配置安装,
进行redis的主从节点pod及sentinel节点在Kubernets的部署。
同时提供与上述方法相对应的一种基于Kubernets的Redis,是将redis的配置文件通过文件流的方式,传入Helm安装包中,并将Helm的配置及启动逻辑部署在configmap中,
在redis-server-statefulset.yaml中,利用initContainers将各类启动脚本,挂载到容器所需pv中,各类启动脚本通过文件流的方式,写入到configmap中,initContainers通过command命令,启动启动脚本执行配置安装,
进行redis的主从节点pod及sentinel节点在Kubernets的部署。
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
本发明采用Redis主从集群模式,部署后通过Sentinel节点监控管理Redis集群。Redis集群由两类节点组组成,其中一类节点组安装Redis主节点或从节点组件,完成Redis集群的建立,提高并发访问能力;另一类节点组Sentinel节点组,仅安装Sentinel组件,实时监控集群,保证集群的高可用性,,参考图1。
利用本发明方法在redis的配置文件通过文件流的方式,传入Helm安装包中,Helm安装包结构可参考图2,并将Helm配置及启动逻辑部署在configmap中,
在redis-server-statefulset.yaml中,利用initContainers将各类启动脚本,挂载到容器所需pv中,各类启动脚本通过文件流的方式,写入到configmap中,保证了脚本完整性的同时,增强了脚本的可阅读性,并方便后续维护,主要代码如下:
上述过程中挂载的集中shell脚本,分别执行其逻辑,首先initContainers通过command命令,开始执行redis-launcher.sh,该脚本主要完成,启动label-updater.sh脚本,完成podIP的打标签操作,然后存放redis配置文件,获取statefuleset中写入的相关环境变量;判断redis当前节点属性,并分别执行相关属性的对应操作;关键代码如下:
进行redis的主从节点pod及sentinel节点在Kubernets的部署,
第一次redis集群创建时,脚本进行是否有原master节点脚本存在的判断,该判断标志在sentinel节点脚本执行时进行了写入,保证sentinel节点的正常启动以及集群的正常重启,若无已经打上master标签的pod,则会开始集群的master选举,可以默认第一个创建的pod为主节点,并打上master标签进行标志,然后启动主节点流程,其他pod启动从节点流程,参考图3,主要代码如下:
master pod和slave pod节点的操作中,都会对自身pod进行打标签操作,方便整个集群主从的规范,而sentinel节点则会将主从信息写入到自身启动配置文件中,并启动promote.sh脚本,方便监控集群主从存活情况,当主节点宕机,则会触发该脚本,根本集群中pod所打的标签,重新做master选举,并重新打上相应标签,同时会新增一个$REDIS_STATEFULSET_NAME的标签操作,为防止sentinel全部宕机无法启动做好准备,主要代码如下:
除上述过程,redis集群还可通过redis-rolebinding.yaml和redis-serviceaccount.yaml兼容需要权限认证的Kubernets集群系统等。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

Claims (8)

1.一种基于Kubernets的Redis主从集群自动化部署方案,其特征是redis的配置文件通过文件流的方式,传入Helm安装包中,并将Helm配置及启动逻辑部署在configmap中,
在redis-server-statefulset.yaml中,利用initContainers将各类启动脚本,挂载到容器所需pv中,各类启动脚本通过文件流的方式,写入到configmap中,initContainers通过command命令,启动启动脚本执行配置安装,
进行redis的主从节点pod及sentinel节点在Kubernets的部署。
2.根据权利要求1所述的方法,其特征是redis的主从节点及sentinel节点的部署:redis的主节点pod安装Redis主节点组件,redis的从节点pod安装Redis从节点组件,
redis的sentinel节点安装sentinel组件。
3.根据权利要求1或2所述的方法,其特征是启动脚本中包括集中shell脚本,initContainers通过command命令,开始执行redis-launcher.sh,集中shell脚本启动label-updater.sh脚本,完成podIP的打标签操作。
4.根据权利要求3所述的方法,其特征是Redis集群首次创建时,判断是否有master标签的主节点pod存在,若无进行集群的master选举,打上master标签进行标志的主节点pod,启动主节点流程,其他pod为从节点pod启动从节点流程。
5.根据权利要求4所述的方法,其特征是sentinel节点将主从节点信息写入到自身启动配置文件中,并启动promote.sh脚本,监控Redis集群主从节点情况。
6.根据权利要求5所述的方法,其特征是Redis集群主节点pod宕机,sentinel节点启动promote.sh脚本,根据Redis集群中pod所打的标签,重新进行master选举,并重新为pod打上相应标签。
7.一种基于Kubernets的Redis,其特征是将redis的配置文件通过文件流的方式,传入Helm安装包中,并将Helm的配置及启动逻辑部署在configmap中,
在redis-server-statefulset.yaml中,利用initContainers将各类启动脚本,挂载到容器所需pv中,各类启动脚本通过文件流的方式,写入到configmap中,initContainers通过command命令,启动启动脚本执行配置安装,
进行redis的主从节点pod及sentinel节点在Kubernets的部署。
8.根据权利要求7所述的一种基于Kubernets的Redis,其特征是redis的主从节点及sentinel节点在Kubernets的部署:redis的主节点pod安装Redis主节点组件,redis的从节点pod安装Redis从节点组件,
redis的sentinel节点安装sentinel组件。
CN201910249212.6A 2019-03-29 2019-03-29 一种基于Kubernets的Redis主从集群自动化部署方案 Active CN110012088B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910249212.6A CN110012088B (zh) 2019-03-29 2019-03-29 一种基于Kubernets的Redis主从集群自动化部署方案

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910249212.6A CN110012088B (zh) 2019-03-29 2019-03-29 一种基于Kubernets的Redis主从集群自动化部署方案

Publications (2)

Publication Number Publication Date
CN110012088A true CN110012088A (zh) 2019-07-12
CN110012088B CN110012088B (zh) 2022-05-24

Family

ID=67168845

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910249212.6A Active CN110012088B (zh) 2019-03-29 2019-03-29 一种基于Kubernets的Redis主从集群自动化部署方案

Country Status (1)

Country Link
CN (1) CN110012088B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110557428A (zh) * 2019-07-17 2019-12-10 中国科学院计算技术研究所 一种基于Kubernetes的脚本解释型服务代理方法和系统
CN111552494A (zh) * 2020-04-24 2020-08-18 星环信息科技(上海)有限公司 一种容器组的管理方法、设备、系统及介质
CN111666080A (zh) * 2020-04-28 2020-09-15 平安科技(深圳)有限公司 微服务集群部署方法、装置、计算机设备及存储介质
CN111880738A (zh) * 2020-07-29 2020-11-03 浪潮云信息技术股份公司 一种K8s环境自动化创建和挂载LVM卷的方法
CN111930465A (zh) * 2020-05-28 2020-11-13 武汉达梦数据库有限公司 一种基于Kubernetes的达梦主从集群部署方法和装置
CN111984310A (zh) * 2020-09-16 2020-11-24 深圳市火星人互动娱乐有限公司 一种Sentinel基于Nacos推模式持久化方法
CN112783642A (zh) * 2019-11-11 2021-05-11 阿里巴巴集团控股有限公司 容器内逻辑配置方法、设备以及计算机可读介质
CN114205333A (zh) * 2021-12-09 2022-03-18 北京奇妙时光科技有限公司 Ip配置方法、集群构建方法、计算机设备及存储介质
CN114253628A (zh) * 2021-12-22 2022-03-29 金蝶软件(中国)有限公司 一种中间件的自动部署装置及自动部署方法
KR102488466B1 (ko) * 2022-03-18 2023-01-13 주식회사 플랜정보기술 테이블 다이어그램 기반형 키-밸류 db 설계 정보처리장치 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140053149A1 (en) * 2012-08-17 2014-02-20 Systex Software & Service Corporation Fast and automatic deployment method for cluster system
CN108337315A (zh) * 2018-02-07 2018-07-27 平安科技(深圳)有限公司 监控系统的部署方法、装置、计算机设备及存储介质
CN109522029A (zh) * 2018-11-22 2019-03-26 山东浪潮云信息技术有限公司 一种部署云平台技术组件的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140053149A1 (en) * 2012-08-17 2014-02-20 Systex Software & Service Corporation Fast and automatic deployment method for cluster system
CN108337315A (zh) * 2018-02-07 2018-07-27 平安科技(深圳)有限公司 监控系统的部署方法、装置、计算机设备及存储介质
CN109522029A (zh) * 2018-11-22 2019-03-26 山东浪潮云信息技术有限公司 一种部署云平台技术组件的方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DANIEL-JI: "《https://www.kubernetes.org.cn/3974.html》", 12 May 2018 *
张首富: "《https://blog.csdn.net/weixin_33967071/article/details/91676837》", 19 February 2019 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110557428B (zh) * 2019-07-17 2021-08-24 中国科学院计算技术研究所 一种基于Kubernetes的脚本解释型服务代理方法和系统
CN110557428A (zh) * 2019-07-17 2019-12-10 中国科学院计算技术研究所 一种基于Kubernetes的脚本解释型服务代理方法和系统
CN112783642A (zh) * 2019-11-11 2021-05-11 阿里巴巴集团控股有限公司 容器内逻辑配置方法、设备以及计算机可读介质
CN111552494A (zh) * 2020-04-24 2020-08-18 星环信息科技(上海)有限公司 一种容器组的管理方法、设备、系统及介质
CN111552494B (zh) * 2020-04-24 2021-05-11 星环信息科技(上海)股份有限公司 一种容器组的管理方法、设备、系统及介质
CN111666080A (zh) * 2020-04-28 2020-09-15 平安科技(深圳)有限公司 微服务集群部署方法、装置、计算机设备及存储介质
CN111666080B (zh) * 2020-04-28 2024-05-03 平安科技(深圳)有限公司 微服务集群部署方法、装置、计算机设备及存储介质
CN111930465A (zh) * 2020-05-28 2020-11-13 武汉达梦数据库有限公司 一种基于Kubernetes的达梦主从集群部署方法和装置
CN111880738A (zh) * 2020-07-29 2020-11-03 浪潮云信息技术股份公司 一种K8s环境自动化创建和挂载LVM卷的方法
CN111984310A (zh) * 2020-09-16 2020-11-24 深圳市火星人互动娱乐有限公司 一种Sentinel基于Nacos推模式持久化方法
CN114205333A (zh) * 2021-12-09 2022-03-18 北京奇妙时光科技有限公司 Ip配置方法、集群构建方法、计算机设备及存储介质
CN114205333B (zh) * 2021-12-09 2024-02-27 北京奇妙时光科技有限公司 Ip配置方法、集群构建方法、计算机设备及存储介质
CN114253628A (zh) * 2021-12-22 2022-03-29 金蝶软件(中国)有限公司 一种中间件的自动部署装置及自动部署方法
KR102488466B1 (ko) * 2022-03-18 2023-01-13 주식회사 플랜정보기술 테이블 다이어그램 기반형 키-밸류 db 설계 정보처리장치 및 방법

Also Published As

Publication number Publication date
CN110012088B (zh) 2022-05-24

Similar Documents

Publication Publication Date Title
CN110012088A (zh) 一种基于Kubernets的Redis主从集群自动化部署方案
CN108924217B (zh) 一种分布式云系统自动化部署方法
US10430204B2 (en) System and method for cloud provisioning and application deployment
CN104160376B (zh) 虚拟机的离线准备
CN106293704B (zh) 多语言云编译的动态微服务编辑方法、装置和服务器
CN101189595B (zh) 服务器群中的解决方案的部署
CN112035228B (zh) 一种资源调度方法及装置
CN109120481B (zh) 基于Zabbix开源组件监控DCOS容器和内部中间件的方法
CN104021078B (zh) 软件监控装置及方法
US20040068723A1 (en) Automatically deploying software packages used in computer systems
CN112269640B (zh) 一种实现容器云组件的生命周期管理的方法
US20230054760A1 (en) Deployment strategies for continuous delivery of software rtifacts in cloud platforms
US9438645B2 (en) Correlating computing network events
CN106357457A (zh) 一种告警测试方法、装置以及系统
CN105827428A (zh) 资产信息的管理方法及装置
CN109614138A (zh) 一种基于容器云的应用集成和发布方法及系统
CN107483245A (zh) 一种基于karaf_agent的主动采集实现装置
WO2019223178A1 (zh) 跨平台任务调度方法、系统、计算机设备和存储介质
CN111367618A (zh) 基于docker的代码管理方法、系统、终端及介质
Saito et al. DevOps with Kubernetes: accelerating software delivery with container orchestrators
CN109067593A (zh) 一种云计算环境下的ipmi自动化配置装置和方法
CN105337764B (zh) 一种设备资源信息采集方法
CN111831362A (zh) 一种K8s环境监控自动发现分类部署管理的方法
CN108399095B (zh) 支持动态管理定时任务的方法、系统、设备和存储介质
US9922539B1 (en) System and method of telecommunication network infrastructure alarms queuing and multi-threading

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
CB02 Change of applicant information

Address after: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant after: Tidal Cloud Information Technology Co.,Ltd.

Address before: 250100 S06 tower, 1036, Chao Lu Road, hi tech Zone, Ji'nan, Shandong.

Applicant before: SHANDONG INSPUR CLOUD INFORMATION TECHNOLOGY Co.,Ltd.

Address after: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant after: Inspur cloud Information Technology Co.,Ltd.

Address before: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant before: Tidal Cloud Information Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant