CN106790660B - 一种实现分布式存储系统的部署方法及装置 - Google Patents

一种实现分布式存储系统的部署方法及装置 Download PDF

Info

Publication number
CN106790660B
CN106790660B CN201710040173.XA CN201710040173A CN106790660B CN 106790660 B CN106790660 B CN 106790660B CN 201710040173 A CN201710040173 A CN 201710040173A CN 106790660 B CN106790660 B CN 106790660B
Authority
CN
China
Prior art keywords
host
mirror image
image data
memory system
distributed memory
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.)
Active
Application number
CN201710040173.XA
Other languages
English (en)
Other versions
CN106790660A (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.)
MIGU Video Technology Co Ltd
Original Assignee
MIGU Video 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 MIGU Video Technology Co Ltd filed Critical MIGU Video Technology Co Ltd
Priority to CN201710040173.XA priority Critical patent/CN106790660B/zh
Publication of CN106790660A publication Critical patent/CN106790660A/zh
Application granted granted Critical
Publication of CN106790660B publication Critical patent/CN106790660B/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
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种实现分布式存储系统的部署方法,包括:根据分布式存储系统的编码文件,确定执行程序的主机,并向主机发送镜像拉取命令;所述主机包括源主机和目标主机,源主机和目标主机中均包含Flannel和Docker;根据镜像拉取命令从内网中的Docker镜像私有仓库获取分布式存储系统的第一镜像数据;为源主机配置IP地址段,并从IP地址段中获取源主机的第一IP地址,根据第一IP地址以及目标主机的第二IP地址信息对第一镜像数据进行路由封装,得到第二镜像数据,并根据第二IP地址信息查找路由表,按照所查找出的路径将第二镜像数据从源主机中的第一Flannel虚拟网卡向目标主机中的第二Flannel虚拟网卡发送。本发明还同时公开了一种实现分布式存储系统的部署装置。

Description

一种实现分布式存储系统的部署方法及装置
技术领域
本发明涉及分布式存储系统的部署技术,具体涉及一种实现分布式存储系统的部署方法及装置。
背景技术
目前互联网企业软件逐渐通过从单体应用迁移到微服务架构下来保障系统的高可用性。但在微服务架构下,软件模块、进程数量以及系统的部署维护难度日益增加。因此,需要通过自动化部署管理系统来处理各个节点的资源。其中,自动化部署管理系统可以从互联网上下载资源并根据各个节点的I P来分配资源。
但是在实际应用中,为了系统的安全考虑,各个服务器会被限制在局域网内获取资源,从而通过Docker配置使得每个节点上的Docker服务分别负责所在节点容器的IP地址分配。而这样容易导致不同节点上的容器获得相同的内外IP地址。并使这些容器之间能够通过相同的内外IP地址相互找到,从而增加了系统的风险。
发明内容
为解决现有存在的技术问题,本发明实施例期望提供一种实现分布式存储系统的部署方法及装置,能够降低系统的风险系数。
本发明实施例的技术方案是这样实现的:
根据本发明实施例的一方面,提供一种实现分布式存储系统的部署方法,所述方法包括:
根据分布式存储系统的编码文件,确定执行所述分布式存储系统的程序的主机,并向所述主机发送镜像拉取命令;其中,所述主机包括源主机和目标主机,所述源主机和所述目标主机中均包含覆盖网络ON的工具Flannel和容器引擎Docker;
接收所述镜像拉取命令,并根据所述镜像拉取命令从内部局域网中的Docker镜像私有仓库获取所述分布式存储系统的第一镜像数据;
为所述源主机配置IP地址段,并从所述IP地址段中获取所述源主机的第一IP地址,根据所述第一IP地址以及所述目标主机的第二IP地址信息对所述第一镜像数据进行路由封装,得到第二镜像数据,并根据所述第二IP地址信息查找路由表,按照所查找出的路径将所述第二镜像数据从所述源主机中的第一Flannel虚拟网卡向所述目标主机中的第二Flannel虚拟网卡发送。
上述方案中,在所述接收所述镜像拉取命令,之前,所述方法还包括:
通过互联网获取所述分布存储系统的原始镜像数据,并将所述原始镜像数据发送到所述Docker镜像私有仓库。
上述方案中,所述根据分布式存储系统的编码文件,确定执行分布式存储系统程序的内部局域网的镜像创建主机,包括:
创建所述分布式存储系统的编码文件,以及获取云服务中各主机当前的资源数据;
根据所述编码文件中所述分布式存储系统在所述Docker镜像私有仓库中的镜像路径、节点的启动数目以及云服务中各主机当前的资源数据,确定执行所述分布式存储系统程序的主机。
上述方案中,在所述按照所查找出的路径将所述第二镜像数据从所述源主机中的第一Flannel虚拟网卡向所述目标主机中的第二Flannel虚拟网卡发送之后,所述方法还包括:
对所述第二镜像数据进行解包封,得到第三镜像数据;
将所述第三镜像数据从所述第二Flannel虚拟网卡向所述目标主机中的第二Docker虚拟网卡发送。
上述方案中,在所述为所述源主机配置IP地址段,包括:
通过键/值存储服务etcd为所述源主机配置IP地址段。
根据本发明实施例的另一方面,提供一种实现分布式存储系统的部署装置,所述装置包括:
容器集群管理节点Kubernetes,用于根据分布式存储系统的编码文件,在主机集群中确定执行分布式存储系统的程序的主机,并向所述主机发送镜像拉取命令;其中,所述主机包括源主机和目标主机,所述源主机和所述目标主机中均包含有Flannel和Docker;
主机集群,用于接收所述Kubernetes发送的镜像拉取命令,并根据所述镜像拉取命令从内部局域网中的Docker镜像私有仓库获取所述分布式存储系统的第一镜像数据;
Flannel,用于为所述源主机配置IP地址段,并从所述IP地址段中获取所述源主机的第一IP地址,根据所述第一IP地址以及所述目标主机的第二IP地址信息对所述第一镜像数据进行路由封装,得到第二镜像数据,并根据所述第二IP地址信息查找路由表,按照所查找出的路径将所述第二镜像数据从所述源主机中的第一Flannel虚拟网卡向所述目标主机中的第二Flannel虚拟网卡发送。
上述方案中,所述装置还包括:
镜像创建主机,用于通过互联网获取所述分布存储系统的原始镜像数据,并将所述原始镜像数据发送到所述Docker镜像私有仓库。
上述方案中,所述Kubernetes,具体用于创建所述分布式存储系统的编码文件,以及获取云服务中各主机当前的资源数据;并根据所述编码文件中所述分布式存储系统在所述Docker镜像私有仓库中的镜像路径、节点的启动数目以及云服务中各主机当前的资源数据,在云服务中确定执行所述分布式存储系统程序的主机。
上述方案中,所述Flannel,还用于对所述第二镜像数据进行解包封,得到第三镜像数据;并将所述第三镜像数据从所述第二Flannel虚拟网卡向所述目标主机中的第二Docker虚拟网卡发送。
上述方案中,所述Flannel,具体用于通过etcd为所述源主机配置IP地址段。
本发明实施例提供一种实现分布式存储系统的部署方法及装置,根据分布式存储系统的编码文件,确定执行所述分布式存储系统的程序的主机,并向所述主机发送镜像拉取命令;其中,所述主机包括源主机和目标主机,所述源主机和所述目标主机中均包含覆盖网络ON的工具Flannel和容器引擎Docker;接收所述镜像拉取命令,并根据所述镜像拉取命令,从内部局域网中的Docker镜像私有仓库获取所述分布式存储系统的第一镜像数据;为所述源主机配置IP地址段,并从所述IP地址段中获取所述源主机的第一IP地址,根据所述第一IP地址以及所述目标主机的第二IP地址信息对所述第一镜像数据进行路由封装,得到第二镜像数据,并根据所述第二IP地址信息查找路由表,按照所查找出的路径将所述第二镜像数据从所述源主机中的第一Flannel虚拟网卡向所述目标主机中的第二Flannel虚拟网卡发送。如此,通过将所有分布式存储系统的原始镜像数据传到Docker镜像私有仓库中,随后由k8s管理节点,即Kubernetes动态地从云服务中获取镜像部署的主机,并由所述主机从所述Docker镜像私有仓库中获取镜像数据,所有程序不需要自身启动,最后,通过Flannel为所述主机中的所有子主机重新规划IP地址的使用规则,从而使得不同子主机上的容器能够获得同属一个内网且不重复的IP地址,并让属于不同子主机上的容器能够直接通过内网IP通信,从而降低系统的风险。
附图说明
图1为本发明实施例一种实现分布式存储系统的部署方法流程示意图;
图2为本发明实施例中K8S管理节点在云服务中确定启动的主机的流程示意图;
图3为本发明实施例中Flannel的工作原理示意图;
图4为本发明实施例一种实现分布式存储系统的部署装置组成示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
图1为本发明实施例一种实现分布式存储系统的部署方法流程示意图;如图1所示,所述方法包括:
步骤101,根据分布式存储系统的编码文件,确定执行所述分布式存储系统的程序的主机,并向所述主机发送镜像拉取命令;所述主机包括源主机和目标主机,所述源主机和所述目标主机中均包含有Flannel和Docker;
这里,所述方法主要应用于分布式存储系统的部署系统中。所述Flannel是针对容器集群管理节点Kubernetes设计的一个覆盖网络(ON,Overlay Network)工具,是将传输控制协议(TCP,Transmission Control Protocol)数据包封装成另一种网络包后,再进行路由转发和通信,具体支持用户数据报协议(UDP,User Datagram Protocol)、虚拟扩展局域网(VxLAN,Virtual eXtensible Local Area Network,)协议、亚马逊网络服务(AWS,Amazon Web Services)虚拟私有云(VPC,virtual private cloud)协议和谷歌应用引擎(GCE,Google App Engine)路由等数据转发方式。具体地,首先由所述系统中的Kubernetes,又名K8S管理节点创建所述分布式存储系统的编码文件,以及获取云服务中各主机当前的资源数据;其中,所述编码文件中包含有要获取的镜像路径及启动的节点数目,然后,由所述K8S管理节点中的K8S调度器根据编码文件中有关所述分布式存储系统在所述Docker镜像私有仓库中的镜像路径、节点的启动数目以及云服务中各主机当前的资源数据的这些配置信息,在云服务的主机集群中确定执行所述分布式存储系统程序的主机,并由所述K8S调度器向所述主机发送镜像拉取命令。其中,所述主机包括源主机和目标主机,所述源主机和所述目标主机中均包含有Flannel和Docker;
在本发明实施例中,所述Kubernetes是基于Docker构建一个容器的调度服务,提 供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件,在Kubernetes中,调度的最小颗 粒不是单纯的容器,而是Pod,Pod是一个可以被创建、销毁、调度、管理的最小的部署单元。 比如一个或一组容器;复制控制器(RC,Replication Controller)是Kubernetes系统中最 有用的功能,实现复制多个Pod副本,往往一个应用需要多个Pod来支撑,并且可以保证其复 制的副本数,即使副本所调度分配的主宿机出现异常,通过RC可以保证在其它主宿机启用 同等数量的Pod。RC可以通过repcon模板来创建多个Pod副本,同样也可以直接复制已存在 Pod,需要通过标签选择器(Label selector)来关联;Services是Kubernetes最外围的单 元,通过虚拟一个访问IP及服务端口,可以访问定义好的Pod资源,例如通过iptables的nat 转发来实现,转发的目标端口为Kube_proxy生成的随机端口。
步骤102,接收所述镜像拉取命令,并根据所述镜像拉取命令,从内部局域网中的Docker镜像私有仓库获取所述分布式存储系统的第一镜像数据;
这里,所述主机接收所述镜像拉取命令,并由所述源主机根据所述镜像拉取命令在所述Docker镜像私有仓库中获取所述分存式存储系统的第一镜像数据,其中,由所述源主机负责程序的启动及程序异常down掉后的重启操作。
在本发明实施例中,由于分布式存储系统的镜像数据只能从互联网上获取,而为了内部局域网中所述Docker镜像私有仓库的安全,云服务中的主机集群无法直接通过互联网获取所述分布式存储系统的镜像数据,需要通过外网主机从互联网获取所述分布式存储系统的原始镜像数据,所以,当所述外网主机从互联网上获取到所述分布式存储系统的原始镜像数据后,将所述原始镜像数据存储到内部局域网中的镜像创建主机上,并由所述镜像创建主机再将所述原始镜像数据向内部局域网中的Docker镜像私有仓库发送。如此,云服务中的主机集群就可以从Docker镜像私有仓库获取所述分布式存储系统的镜像数据。具体利用K8S管理节点在云服务中确定启动的主机的流程如图2所示。
图2为本发明实施例中K8S管理节点在云服务中确定启动的主机的流程示意图;如图2所示:
开发人员在内网中的K8S管理节点201创建分布式存储系统的编码文件,其中,所述编码文件中包含要获取的镜像路径和启动节点的数目。待所述编码文件创创建完毕后,由所述K8S管理节点201中的K8S调度器根据所述编码文件中的配置信息和云服务中的主机集群202当前的资源占用情况,在所述主机集群202中选取执行分布式存储系统的程序的主机,并向所述主机下发镜像拉取命令,所述主机根据所述命令,从内部局域网的Docker镜像私有仓库203中获取所述分存式存储系统的第一镜像数据。其中,所述Docker镜像私有仓库203中的镜像数据均是通过外网主机205从互联网206中获取到的分布式存储系统的原始镜像数据,并由开发人员将外网主机205获取到的原始镜像数据存储到内部局域网的镜像创建主机204中,所述镜像创建主机204再将所述原始镜像数据上传到所述Docker镜像私有仓库203。如此,完成镜像创建和主机的选取。
步骤103,为所述源主机配置IP地址段,并从所述IP地址段中获取所述源主机的第一IP地址,根据所述第一IP地址以及所述目标主机的第二IP地址信息对所述第一镜像数据进行路由封装,得到第二镜像数据,并根据所述第二IP地址信息查找路由表,按照所查找出的路径将所述第二镜像数据从所述源主机中的第一Flannel虚拟网卡向所述目标主机中的第二Flannel虚拟网卡发送;
这里,具体由所述Flannel通过键/值存储服务etcd为所述源主机配置IP地址段。由于在默认的Docker配置中,每个节点上的Docker服务会分别负责所在节点容器的IP分配。这样导致的一个问题是,不同节点上容器可能获得相同的内外IP地址,并使这些容器之间能够之间通过IP地址相互找到,也就是相互ping通。而在Kubernetes的网络模型中,每个物理节点具备一段属于同一个内网IP段内的专用的子网IP。例如:节点A:10.0.1.0/24;节点B:10.0.2.0/24;节点C:10.0.3.0/24;所以,在所述主机中配置Flannel,并启动所述Flannel后,所述Flannel就能为集群中的所有节点重新规划IP地址的使用规则,从而使得不同节点上的容器能够获得同属一个内网且不重复的IP地址,并让属于不同节点上的容器能够直接通过内网IP通信。具体地,首先在所述源主机上启动etcd,之后进行Flannel的配置。其中,所述etcd是应用在分布式环境下的键/值(key/value)存储服务。利用etcd,应用程序可以在集群中共享信息、配置或作服务发现,etcd能在集群的各个节点中复制这些数据并保证这些数据始终正确。在本发明实施例中,所述源主机启动Flannel服务后,在所述源主机上的Flannel就能查看所述源主机中Docker服务进程的运行参数,并通过Etcd为所述源主机分配可用的IP地址段。当所述源主机要发送所述第一镜像数据时,由所述源主机中的第一Docker虚拟网卡将所述第一镜像数据向所述源主机中的第一Flannel虚拟网卡发送;所述第一Flannel虚拟网卡接收到所述第一镜像数据后,根据Flannel为所述源主机配置的IP地址段,从所述IP地址段中获取所述源主机的第一IP地址,并根据所述第一IP地址以及所述目标主机的第二IP地址信息对所述第一镜像数据进行路由封装,例如进行UDP封装,得到第二镜像数据,并根据所述第二IP地址信息查找路由表,按照所查找出的路径将所述第二镜像数据从所述源主机中的第一Flannel虚拟网卡向所述目标主机中的第二Flannel虚拟网卡发送。所述目标主机接收到所述第二镜像数据后,由所述目标主机中的flanneld服务对所述第二镜像数据进行解包封,得到第三镜像数据,即原始数据,并由所述目标主机中的第二Flannel虚拟网卡向所述目标主机中的第二Docker虚拟网卡发送所述第三镜像数据,如此完成数据路由。具体Flannel的工作原理具体如图3所示。
图3为本发明实施例中Flannel的工作原理示意图,如图3所示:
数据从源容器中发出后,经由所在主机的docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P的虚拟网卡,flanneld服务监听在网卡的另外一端。然后Flannel通过维护了一张节点间的路由表。
源主机的flanneld服务将原本的数据内容UDP封装后根据Etcd服务中与自身匹配的路由表,投递给目的主机的flanneld服务,目的主机的flanneld服务收到所述数据后,对所述数据进行解包操作,然后将解包后的数据由目的主机中的flannel0虚拟网卡,转发到目的主机的docker0虚拟网卡,完成数据路由。
图4为本发明实施例一种实现分布式存储系统的部署装置组成示意图;如图4所示,所述装置包括:
容器集群管理节点Kubernetes 401,用于根据分布式存储系统的编码文件,在主机集群402中确定执行分布式存储系统的程序的主机,并向所述主机发送镜像拉取命令;其中,所述主机包括源主机和目标主机,所述源主机和所述目标主机中均包含有Flannel和Docker;
主机集群402,用于接收所述Kubernetes 401发送的镜像拉取命令,并根据所述镜像拉取命令从内部局域网中的Docker镜像私有仓库获取所述分布式存储系统的第一镜像数据;
Flannel 403,用于为所述源主机配置IP地址段,并从所述IP地址段中获取所述源主机的第一IP地址,根据所述第一IP地址以及所述目标主机的第二IP地址信息对所述第一镜像数据进行路由封装,得到第二镜像数据,并根据所述第二IP地址信息查找路由表,按照所查找出的路径将所述第二镜像数据从所述源主机中的第一Flannel虚拟网卡向所述目标主机中的第二Flannel虚拟网卡发送。
这里,所述Flannel 403是针对Kubernetes 401设计的一个ON工具,是将TCP数据包封装成另一种网络包后,再进行路由转发和通信,具体支持UDP、VxLAN、AWS VPC和GCE路由等数据转发方式。具体地,首先由所述Kubernetes 401创建所述分布式存储系统的编码文件,以及获取云服务中各主机当前的资源数据;其中,所述编码文件中包含有要获取的镜像路径及启动的节点数目,然后,由所述Kubernetes 401中的K8S调度器根据编码文件中有关所述分布式存储系统在所述Docker镜像私有仓库中的镜像路径、节点的启动数目以及云服务中各主机当前的资源数据的这些配置信息,在云服务的主机集群402中确定执行所述分布式存储系统程序的主机,并由所述K8S调度器向所述主机发送镜像拉取命令。其中,所述主机包括源主机和目标主机,所述源主机和所述目标主机中均包含有Flannel和Docker。
在本发明实施例中,所述Kubernetes 401是基于Docker构建一个容器的调度服 务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件,在Kubernetes 401中,调 度的最小颗粒不是单纯的容器,而是Pod,Pod是一个可以被创建、销毁、调度、管理的最小的 部署单元。比如一个或一组容器;RC是Kubernetes 401中最有用的功能,实现复制多个Pod 副本,往往一个应用需要多个Pod来支撑,并且可以保证其复制的副本数,即使副本所调度 分配的主宿机出现异常,通过RC可以保证在其它主宿机启用同等数量的Pod。RC可以通过 repcon模板来创建多个Pod副本,同样也可以直接复制已存在Pod,需要通过Label selector来关联;Services是Kubernetes 401最外围的单元,通过虚拟一个访问IP及服务 端口,可以访问定义好的Pod资源,例如通过iptables的nat转发来实现,转发的目标端口为 Kube_proxy生成的随机端口。
在本发明实施例中,所述主机集群402接收所述镜像拉取命令,并由所述主机集群402中的所述源主机根据所述镜像拉取命令在所述Docker镜像私有仓库中获取所述分存式存储系统的第一镜像数据,其中,由所述源主机负责程序的启动及程序异常down掉后的重启操作。
在本发明实施例中,所述装置还包括镜像创建主机404,由于分布式存储系统的镜像数据只能从互联网上获取,而为了内部局域网中所述Docker镜像私有仓库的安全,所述主机集群402无法直接通过互联网获取所述分布式存储系统的镜像数据,需要通过外网主机从互联网获取所述分布式存储系统的原始镜像数据,然后,将所述原始镜像数据存储在所述内部局域网中的镜像创建主机404上,最后,再由所述内部局域网中的镜像创建主机404将所述原始镜像数据发送到内部局域网中的Docker镜像私有仓库,如此,云服务中的主机集群402就可以从Docker镜像私有仓库获取所述分布式存储系统的镜像数据。具体利用K8S管理节点在云服务中确定启动的主机的流程如图2所示。
在本发明实施例中,所述Flannel 403具体通过etcd为所述源主机配置IP地址段。由于在默认的Docker配置中,每个节点上的Docker服务会分别负责所在节点容器的IP分配。这样导致的一个问题是,不同节点上容器可能获得相同的内外IP地址,并使这些容器之间能够之间通过IP地址相互找到,也就是相互ping通。而在Kubernetes 401的网络模型中,每个物理节点具备一段属于同一个内网IP段内的专用的子网IP。例如:节点A:10.0.1.0/24;节点B:10.0.2.0/24;节点C:10.0.3.0/24;所以,在所述主机集群402中配置所述Flannel 403,并启动所述Flannel 403后,所述Flannel 403就能为集群中的所有节点重新规划IP地址的使用规则,从而使得不同节点上的容器能够获得同属一个内网且不重复的IP地址,并使属于不同节点上的容器能够直接通过内网IP通信。具体地,首先在所述源主机上启动etcd,然后进行Flannel 403的配置。其中,所述etcd是一个应用在分布式环境下的键值存储服务。利用etcd,应用程序可以在集群中共享信息、配置或作服务发现,etcd会在集群的各个节点中复制这些数据并保证这些数据始终正确。并在所述源主机运行了Flannel403的服务后,在所述源主机上的Flannel 403就能查看所述源主机中Docker服务进程的运行参数,并通过Etcd为所述源主机分配可用的IP地址段。当所述源主机要发送所述第一镜像数据时,所述源主机中的第一Docker虚拟网卡将所述第一镜像数据向所述源主机中的第一Flannel虚拟网卡发送;所述第一Flannel虚拟网卡接收到所述第一镜像数据后,根据Flannel 403为所述源主机配置的IP地址段,从所述IP地址段中获取第一IP地址,根据所述第一IP地址以及所述目标主机的第二IP地址信息对所述第一镜像数据进行路由封装,例如进行UDP封装,得到第二镜像数据,并根据查找到的路由表投递给目标主机中的flanneld服务。所述目标主机中的flanneld服务接收到所述第二镜像数据后,由所述目标主机中的flanneld服务对所述第二镜像数据进行解包封,得到第三镜像数据,即原始数据,并由所述目标主机中的第二Flannel虚拟网卡向所述目标主机中的第二Docker虚拟网卡发送所述第三镜像数据,如此完成数据路由。具体Flannel的工作原理具体如图3所示。
通过本发明实施例,不仅可以为云服务中的各主机提供统一的端口,实现主机的网络云化,而且还能够自动负载均衡到同一服务的各个节点上,从而在不需要第三方nginx进行负载均衡,即可实现局域网内的数据路由负载均衡。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装所设置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (8)

1.一种实现分布式存储系统的部署方法,其特征在于,所述方法包括:
创建分布式存储系统的编码文件,以及获取云服务中各主机当前的资源数据;根据所述分布式存储系统的编码文件,确定执行所述分布式存储系统的程序的主机,并向所述主机发送镜像拉取命令;其中,所述主机包括源主机和目标主机,所述源主机和所述目标主机中均包含覆盖网络ON的工具Flannel和容器引擎Docker;
接收所述镜像拉取命令,并根据所述镜像拉取命令从内部局域网中的Docker镜像私有仓库获取所述分布式存储系统的第一镜像数据;
通过键/值存储服务etcd为所述源主机配置IP地址段,并从所述IP地址段中获取所述源主机的第一IP地址,根据所述第一IP地址以及所述目标主机的第二IP地址信息对所述第一镜像数据进行路由封装,得到第二镜像数据,并根据所述第二IP地址信息查找路由表,按照所查找出的路径将所述第二镜像数据从所述源主机中的第一Flannel虚拟网卡向所述目标主机中的第二Flannel虚拟网卡发送。
2.根据权利要求1所述的方法,其特征在于,在所述接收所述镜像拉取命令,之前,所述方法还包括:
通过互联网获取所述分布存储系统的原始镜像数据,并将所述原始镜像数据发送到所述Docker镜像私有仓库。
3.根据权利要求1所述的方法,其特征在于,所述根据分布式存储系统的编码文件,确定执行分布式存储系统程序的内部局域网的镜像创建主机,包括:
根据所述编码文件中所述分布式存储系统在所述Docker镜像私有仓库中的镜像路径、节点的启动数目以及云服务中各主机当前的资源数据,确定执行所述分布式存储系统程序的主机。
4.根据权利要求1所述的方法,其特征在于,在所述按照所查找出的路径将所述第二镜像数据从所述源主机中的第一Flannel虚拟网卡向所述目标主机中的第二Flannel虚拟网卡发送之后,所述方法还包括:
对所述第二镜像数据进行解包封,得到第三镜像数据;
将所述第三镜像数据从所述第二Flannel虚拟网卡向所述目标主机中的第二Docker虚拟网卡发送。
5.一种实现分布式存储系统的部署装置,其特征在于,所述装置包括:
容器集群管理节点Kubernetes,用于创建分布式存储系统的编码文件,以及获取云服务中各主机当前的资源数据;根据所述分布式存储系统的编码文件,在主机集群中确定执行分布式存储系统的程序的主机,并向所述主机发送镜像拉取命令;其中,所述主机包括源主机和目标主机,所述源主机和所述目标主机中均包含有Flannel和Docker;
主机集群,用于接收所述Kubernetes发送的镜像拉取命令,并根据所述镜像拉取命令从内部局域网中的Docker镜像私有仓库获取所述分布式存储系统的第一镜像数据;
Flannel,用于通过etcd为所述源主机配置IP地址段,并从所述IP地址段中获取所述源主机的第一IP地址,根据所述第一IP地址以及所述目标主机的第二IP地址信息对所述第一镜像数据进行路由封装,得到第二镜像数据,并根据所述第二IP地址信息查找路由表,按照所查找出的路径将所述第二镜像数据从所述源主机中的第一Flannel虚拟网卡向所述目标主机中的第二Flannel虚拟网卡发送。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
镜像创建主机,用于通过互联网获取所述分布存储系统的原始镜像数据,并将所述原始镜像数据发送到所述Docker镜像私有仓库。
7.根据权利要求5所述的装置,其特征在于,所述Kubernetes,具体用于根据所述编码文件中所述分布式存储系统在所述Docker镜像私有仓库中的镜像路径、节点的启动数目以及云服务中各主机当前的资源数据,在云服务中确定执行所述分布式存储系统程序的主机。
8.根据权利要求5所述的装置,其特征在于,所述Flannel,还用于对所述第二镜像数据进行解包封,得到第三镜像数据;并将所述第三镜像数据从所述第二Flannel虚拟网卡向所述目标主机中的第二Docker虚拟网卡发送。
CN201710040173.XA 2017-01-18 2017-01-18 一种实现分布式存储系统的部署方法及装置 Active CN106790660B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710040173.XA CN106790660B (zh) 2017-01-18 2017-01-18 一种实现分布式存储系统的部署方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710040173.XA CN106790660B (zh) 2017-01-18 2017-01-18 一种实现分布式存储系统的部署方法及装置

Publications (2)

Publication Number Publication Date
CN106790660A CN106790660A (zh) 2017-05-31
CN106790660B true CN106790660B (zh) 2018-05-22

Family

ID=58944680

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710040173.XA Active CN106790660B (zh) 2017-01-18 2017-01-18 一种实现分布式存储系统的部署方法及装置

Country Status (1)

Country Link
CN (1) CN106790660B (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107193504A (zh) * 2017-06-02 2017-09-22 郑州云海信息技术有限公司 一种基于Kubernetes的自动化分配和创建应用存储的方法和系统
CN107395781A (zh) * 2017-06-29 2017-11-24 北京小度信息科技有限公司 网络通信方法及装置
CN107454188A (zh) * 2017-08-28 2017-12-08 郑州云海信息技术有限公司 一种容器创建方法和系统
CN107911413A (zh) * 2017-10-16 2018-04-13 华迪计算机集团有限公司 一种分布式数据服务管理系统及方法
CN107734037A (zh) * 2017-10-19 2018-02-23 郑州云海信息技术有限公司 一种nas集群和数据访问方法
CN109814881A (zh) * 2017-11-21 2019-05-28 北京京东尚科信息技术有限公司 用于部署数据库集群的方法和装置
CN108170590B (zh) * 2017-12-12 2021-08-24 北京大学深圳研究生院 一种区块链系统的测试系统和方法
CN108039975B (zh) * 2017-12-21 2020-08-28 北京搜狐新媒体信息技术有限公司 容器集群管理系统及其应用方法
CN108268308A (zh) * 2018-01-22 2018-07-10 广州欧赛斯信息科技有限公司 一种基于容器平台的持续集成方法、系统及装置
CN110099076A (zh) * 2018-01-29 2019-08-06 中兴通讯股份有限公司 一种镜像拉取的方法及其系统
CN108304250A (zh) * 2018-03-05 2018-07-20 北京百度网讯科技有限公司 用于确定运行机器学习任务的节点的方法和装置
CN108646985A (zh) * 2018-05-16 2018-10-12 广东睿江云计算股份有限公司 一种Ceph分布式存储系统的资源限制及分配方法
CN108777661A (zh) * 2018-06-06 2018-11-09 亚信科技(中国)有限公司 一种数据传输方法、装置及系统
CN109086134A (zh) * 2018-07-19 2018-12-25 郑州云海信息技术有限公司 一种深度学习作业的运行方法和装置
CN109165206B (zh) * 2018-08-27 2022-02-22 中科曙光国际信息产业有限公司 基于容器的hdfs高可用实现方法
CN110908671A (zh) * 2018-09-18 2020-03-24 北京京东尚科信息技术有限公司 构建docker镜像的方法、装置及计算机可读存储介质
CN111726236A (zh) * 2019-03-18 2020-09-29 京东数字科技控股有限公司 一种状态识别信息生成方法、系统、装置及其存储介质
CN110071918B (zh) * 2019-04-19 2020-10-09 北京那镁克科技有限公司 一种基于混合云的数据通信方法及装置
CN110266679B (zh) * 2019-06-14 2023-02-28 腾讯科技(成都)有限公司 容器网络隔离方法及装置
CN110795442B (zh) * 2019-09-27 2022-04-22 北京浪潮数据技术有限公司 一种键值更新方法、装置、设备及可读存储介质
CN110971480B (zh) * 2019-10-18 2022-08-19 平安科技(深圳)有限公司 计算机网络状况监控方法、装置、计算机设备及存储介质
CN111130852A (zh) * 2019-12-04 2020-05-08 上海交通大学包头材料研究院 一种基于Docker的云应用网络自动化部署的方法
CN111190547B (zh) * 2019-12-30 2023-02-24 中国电子科技集团公司信息科学研究院 一种分布式容器镜像存储与分发系统与方法
CN111541651B (zh) * 2020-03-31 2022-10-21 新华三技术有限公司 一种通信方法及装置
CN111885140B (zh) * 2020-07-17 2023-03-24 江苏苏宁银行股份有限公司 一种基于Flannel网络的云应用混布方法和装置
CN111885068B (zh) * 2020-07-28 2022-11-15 杭州默安科技有限公司 一种旁路部署的流量分发方法及其系统
CN111857759A (zh) * 2020-07-29 2020-10-30 广州锦行网络科技有限公司 基于kubernetes实现蜜罐服务容器分布式部署技术方法
CN111679916B (zh) * 2020-08-11 2020-11-27 北京搜狐新媒体信息技术有限公司 一种视频推荐方法、目标服务提供端、服务调用端及系统
CN113766042B (zh) * 2021-01-20 2024-09-20 北京沃东天骏信息技术有限公司 一种容器地址的配置方法、系统、装置、设备及介质
CN113364616A (zh) * 2021-06-01 2021-09-07 全知科技(杭州)有限责任公司 一种基于K8s开发的应用迁移到无网环境的方法
CN115002514B (zh) * 2022-05-27 2023-07-21 浙江大学 基于云原生控制器的spark视频转码系统及视频转码方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105187500A (zh) * 2015-08-07 2015-12-23 浪潮(北京)电子信息产业有限公司 一种基于容器的分布式存储系统部署方法
CN105824614A (zh) * 2015-12-15 2016-08-03 广东亿迅科技有限公司 基于Docker的分布式开发环境的搭建方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160100008A1 (en) * 2014-10-02 2016-04-07 Netapp, Inc. Methods and systems for managing network addresses in a clustered storage environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105187500A (zh) * 2015-08-07 2015-12-23 浪潮(北京)电子信息产业有限公司 一种基于容器的分布式存储系统部署方法
CN105824614A (zh) * 2015-12-15 2016-08-03 广东亿迅科技有限公司 基于Docker的分布式开发环境的搭建方法及装置

Also Published As

Publication number Publication date
CN106790660A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
CN106790660B (zh) 一种实现分布式存储系统的部署方法及装置
CN105979009B (zh) 一种针对云应用容器的增加负载自动均衡方法
CN109194502B (zh) 多租户容器云计算系统的管理方法
CN106020930B (zh) 一种基于应用容器的应用管理方法及系统
CN105376303B (zh) 一种Docker实现系统及其通信方法
CN111542064B (zh) 一种用于无线接入网的容器编排管理系统及编排方法
WO2019184967A1 (zh) 一种网络切片的部署方法及装置
CN107580083A (zh) 一种容器ip地址分配的方法和系统
CN112035228B (zh) 一种资源调度方法及装置
CN105657081B (zh) 提供dhcp服务的方法、装置及系统
CN103856350B (zh) 面向对象的网络
CN110476453A (zh) 用于向客户提供网络切片的服务发放
CN106416147B (zh) 一种用于软件定义协议网络节点的系统和方法
US20140344323A1 (en) State-based configuration management for distributed systems
CN112398687B (zh) 云计算网络的配置方法、云计算网络系统以及存储介质
CN109803018A (zh) 一种基于Mesos和YARN结合的DCOS云管理平台
US20160099847A1 (en) Method for non-disruptive cloud infrastructure software component deployment
CN107566541A (zh) 容器网络资源分配方法、系统、存储介质和电子设备
JP6533475B2 (ja) 管理装置、および、ネットワークサービス管理方法
CN107819802A (zh) 一种在节点集群中的镜像获取方法、节点设备及服务器
CN106301829A (zh) 一种网络业务扩容的方法和装置
CN106953848B (zh) 一种基于ForCES的软件定义网络实现方法
CN112532669B (zh) 一种网络边缘计算方法、装置及介质
CN108702316A (zh) 一种vnf的资源分配方法及装置
CN109863726A (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
GR01 Patent grant
GR01 Patent grant