一种基于容器技术部署分布式存储系统及其存储方法与流程

文档序号:13912983阅读:1324来源:国知局

本发明属于计算机应用领域,特别涉及一种基于容器技术部署分布式存储系统及其存储方法。



背景技术:

随着计算机技术的快速发展,海量数据的存储使得对分布式存储的需求越来越强烈。通常分布式存储系统中有多种服务器角色存在,一般包括元数据节点、监控节点、osd存储节点等。由于涉及到多台服务器,相关服务之间的依赖和通信需要协调处理,每个服务模块通常也需要依赖大量的相关命令和软件库,所以通常这些服务的安装和部署都比较复杂,使用门槛高,基本难以做到自动化的部署和管理。

linux系统中,容器(container)可以提供轻量级的虚拟化,以便隔离进程和资源。通过将服务或者应用程序封装到容器中,linux操作系统可以让应用程序就像在独立的机器上运行一样。当完成容器的封装后,在一个物理机上运行容器的服务只需要简单把该容器的镜像(相当于一种模板)从仓库中下载到本机,就可以直接运行,所有相关依赖库、运行环境等都封装到容器中,不再需要复杂的部署过程。当前容器技术典型的方案是采用docker服务。docker服务提供了一些基本的容器实例和镜像相关操作。比如常见操作有:

这种封装容器化的过程,对于部署单一的服务或者程序非常简单,所以当前容器技术得到了广泛的认可。但是在分布式存储之类的系统中,对所有服务容器化后,会形成多个容器镜像,比如元数据容器镜像、监控容器镜像、osd容器镜像。这些镜像需要下载到不同物理节点上,然后创建为容器实例来启动运行,而且同一镜像在不同服务器上可能有多个容器实例。因此,容器化的分布式存储系统虽然大大简化了部署过程,但是仍然具有一定的复杂度。



技术实现要素:

发明目的:针对现有技术中存在的问题,本发明提供一种利用docker容器引擎提供的软件容器的下载,创建、启动等功能,自动的把多种分布式服务部署到不同的物理节点上,并形成服务的互联,最终实现支持系统支持自动化部署和管理,形成基于容器技术部署分布式存储系统及其存储方法。

技术方案:为解决上述技术问题,本发明提供的一种基于容器技术部署分布式存储系统,包括和网络交换机连接的若干个节点,其特征在于:所述网络交换机通过连接线与部署节点和容器镜像仓库节点以及多个存储的服务端节点、客户端节点连接。所述存储的服务端节点包括为监控节点、管理节点、nas服务节点、对象服务节点和存储节点等。所述存储的客户端节点为物理机或者虚拟机,包含块存储客户端容器、nas存储客户端容器和对象存储客户端容器等节点。

一种如上所述的基于容器技术部署分布式存储系统的存储方法,具体步骤如下:

(1)制作每种服务的容器镜像,然后导入镜像到仓库,再启动仓库,进入私有容器仓库,等待容器部署模块下载各服务的容器镜像;

(2)指定好集群中的每种服务类型和需要部署到的节点主机名,并保存到配置文件;

(3)通过部署容器管理模块,进行读取配置文件内容和日志文件内容;

(4)根据读取的配置内容,把配置文件中的每条记录转换为每个容器的实例名;

(5)根据转换后的容器实例名以及读取的日志文件,进行数据对比,判断每条记录的情况;

(6)依据每条记录的对比结果不同区分为:创建容器、删除容器、正常容器,重启容器,重建容器,并执行不同操作。

进一步的,所述步骤(6)中创建容器的具体步骤如下:

(6.1.1)存在容器实例名记录,但无日志记录,执行创建新容器流程.;

(6.1.2)从私有仓库中下载容器镜像到记录所在主机,然后在该主机创建容器实例,并把运行的容器直接命名为本记录指定的容器实例名;

(6.1.3)容器实例名更新到日志记录文件中。

进一步的,所述步骤(6)中删除容器的具体步骤如下:

(6.2.1)无容器实例名记录,但有日志记录,执行删除容器流程;

(6.2.2)访问日志记录的主机,删除该容器实例,然后更新日志记录,即在日志记录中删除该容器实例名。

进一步的,所述步骤(6)中正常容器、重启容器和重建容器这三种不更新日志记录方式的具体步骤为:

(6.3.1)存在容器实例名记录,并有日志记录,然后访问记录主机,获取容器状态,再进入步骤(6.3.2)、(6.3.3)、(6.3.4);

(6.3.2)如果容器实例正常运行,然后进入步骤(6.3.5);

(6.3.3)如果容器实例退出,则重启容器,然后进入步骤(6.3.5);

(6.3.4)如果容器实例丢失,则重建容器,然后进入步骤(6.3.5);

(6.3.5)不更新日志记录。

与现有技术相比,本发明的优点在于:

本发明在整个分布式存储集群中,把之前繁琐复杂的每个服务安装过程,转化为以容器实例为单位的管理和调度过程,使得部署过程明显简化,通过配置文件的指定,可以达到自动化的增减服务,修改服务的目的,实现自动化的部署和管理。

附图说明

图1为本发明的结构示意图;

图2为本发明的整体流程图。

具体实施方式

下面结合附图和具体实施方式,进一步阐明本发明:

如图1-2所示,本发明包括如下步骤:

1.物理节点连接:配置所有物理机节点组成局域网,每个节点上安装linux操作,docker容器服务,各物理节点间支持ssh连接,确定能够互相访问。

2.容器镜像制作和镜像仓库部署:把原有各物理节点上直接部署的服务,如监控服务、管理服务、nas服务、对象服务、存储服务、部署服务以及各种客户端服务都封装为容器镜像。容器镜像仓库是一个标准的私有化容器仓库,典型的docker容器技术都提供了私有仓库的构建方法,支持容器镜像的上传和下载。这样把制作好的容器镜像上传到镜像仓库中。局域网内其它物理节点能够通过容器相关命令访问镜像仓库,下载镜像到指定服务器上,并把一个容器镜像创建为具体的容器实例。

3.人工编写配置文件:规划好各物理节点的用途,以及需要部署的容器类型,形成配置文件,一般采用yaml语言格式,可以比较清楚的展示服务和主机名直接的关系。典型内容如下:

这里,mon,osd,mds,rgw,nfs,zbxserver,client就是不同的容器服务类型,每个服务都有自己的容器镜像事先保存到容器仓库中。其中mon是指管理服务,osd是指存储服务,mds为nas服务,rgw为对象服务,zbxserver为监控服务,client为客户端服务。这里除osd服务外,其它服务后面的子项都是主机名,表明在那个物理主机上部署该服务。osd服务不仅需要指定主机名,还需要指定那些硬盘用于存储数据。

配置文件的格式简单,内容也很容易理解,但并不局限于采用yaml格式保存,只要能够满足上面内容的解析,任何格式都可以使用。通常服务类型或者名称也不局限于当前mon,osd,mds,rgw,nfs,zbxserver,client,可以根据用户需求进行增减,修改服务名称,只要每种服务类型有相应的容器镜像即可。

4.运行“部署容器”管理模块:该容器是本发明中实现容器化管理操作的主动操作模块,完成整个分布式存储的容器化部署功能。把该模块封装到容器镜像中,并在一个指定节点上单独启动该部署容器实例。该容器主要操作流程为:

a)读取配置文件:读取上面的配置文件内容。

b)转换为容器实例名称文件:把配置文件内容转换为容器实例名称文件。比如对于配置文件中:

mon:

cent71:

cent72:

cent73:

就是在节点主机名cent71,cent72,cent73,需要分别创建mon容器实例。指定一个集群唯一的名称,作为后续容器名的前缀。这时容器实例名称命名为clutername-mon。其中clustername是每个集群服务都人为指定一个唯一的名称。这样我们就知道需要在那个节点创建何种类型、何种名称的容器实例。所以容器实例名文件是多条记录,每条记录为key-value类型,即key为主机名,value为容器实例名。具体容器实例名文件格式不限,如可以为文本,也可以保存到数据库中。如上面的内容在容器实例名文件中为:

cent71:hciceph-mon

cent72:hciceph-mon

cent73:hciceph-mon

c)创建和读取日志文件:在初始时设置一个为空的日志文件,以后每创建一个容器实例,都会在日志文件中增加一条记录。格式与容器实例名文件相同。

d)文件对比:进行容器实例名文件和日志文件的内容对比,依据每条记录的对比结果不同区分为:创建容器、删除容器、正常容器,重启容器,重建容器,并执行不同操作。

e)创建容器:如果容器实例名称文件存在一条容器实例名记录,但是日志文件中不存在,表明是一个需要创建的新容器实例。这时采用ssh登录到相关主机,下载容器镜像,然后创建相关服务类型的容器,并按照指定名称命名。创建完成后把容器名称保存到指定的日志文件中。

f)删除容器:如果日志文件中存在容器名,但是容器实例名称文件不存在该容器实例名记录,登录到指定节点,删除该容器实例,并在日志文件中删除容器实例名记录。

g)正常容器:如果两文件中都存在某容器名,且真实物理节点上容器实例存在,且正在运行,表明该容器服务正常,不做任何操作。

h)重启容器:如果两文件中都存在某容器名,且真实物理节点上容器实例存在,但容器退出,表明该容器实例退出,进行容器重启操作。

i)重建容器:如果两文件中都存在某容器名,且真实物理节点上容器实例名不存在,表明该容器实例丢失。那就在该节点重新直接容器创建,但是对日志文件不进行任何操作。

5.自动化操作:系统可以定时的执行上面的部署服务容器操作流程,这样可以实现服务节点的动态扩充和减少,对故障服务也可以定时的重启或者重建,达到故障的修复目的。

因此,本发明把分布式存储的各种服务容器化后,提供了一种简单、高效的管理方法,通过以容器实例为单位的管理,可以自动实现分布式存储服务的添加、删除和一般故障的修复等功能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1