用于容器部署的主机调度方法及系统的制作方法

文档序号:10534482阅读:286来源:国知局
用于容器部署的主机调度方法及系统的制作方法
【专利摘要】本发明实施例提供一种用于容器部署的主机调度方法及系统,该方法包括:获取待部署容器的配置信息和对应的主机集群;获取所述主机集群中在线的主机列表;根据所述配置信息和所述主机列表中的主机的资源信息,生成可部署的主机列表。通过本发明实施例的方法及系统,能够将容器合理的部署在适合的主机上,实现主机资源的充分和平衡利用。
【专利说明】
用于容器部署的主机调度方法及系统
技术领域
[0001] 本发明实施例涉及容器部署技术领域,尤其涉及一种用于容器部署的主机调度方 法及系统。
【背景技术】
[0002] Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到 一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完 全使用沙箱机制,相互之间不会有任何接口,几乎没有性能开销,可以很容易地在机器和数 据中心中运行。最重要的是,他们不依赖于任何语言、框架、包括系统。
[0003] 随着Docker技术在云计算中的推广,越来越多的应用服务开始部署在容器中。由 于应用服务所在的主机配置有所区别,内存、CPU、硬盘及网络环境都有一定的区别,因而, 如何根据一定的部署策略,将容器部署到合适的主机中,以满足不同的容器的部署需求,是 目前业界迫切需要解决的问题。

【发明内容】

[0004] 本发明实施例提供一种用于容器部署的主机调度方法及系统,用以解决目前不能 根据部署需求将容器合理部署到对应主机的问题,实现主机资源的充分和平衡利用。
[0005] 本发明实施例提供一种用于容器部署的主机调度方法,包括:
[0006] 获取待部署容器的配置信息和对应的主机集群;
[0007] 获取所述主机集群中在线的主机列表;
[0008] 根据所述配置信息和所述主机列表中的主机的资源信息,生成可部署的主机列 表。
[0009] 本发明实施例提供一种用于容器部署的主机调度系统,包括:信息获取模块和列 表生成模块,
[0010] 所述信息获取模块配置为获取待部署的容器的配置信息和对应的主机集群,并获 取所述主机集群中的在线的主机列表;
[0011] 所述列表生成模块配置为根据所述配置信息和所述在线的主机列表中的主机的 资源信息,生成可部署的主机列表。
[0012] 本发明实施例提供的用于容器部署的主机调度方法及系统,将具有相同或相似配 置的一组主机设定为主机集群,通过将需要部署容器的配置信息与对应的主机集群中的相 应主机信息进行匹配,获得与需要部署容器的配置信息相适应的可以部署容器的主机列 表,以将容器部署在获得的主机列表包含的主机上,从而保证了一个集群下主机资源的平 均分配和合理利用。
【附图说明】
[0013] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的 附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域 普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0014] 图1为本发明用于容器部署的主机调度方法实施例流程图;
[0015] 图2为图1所示方法中生成可部署的主机列表的方法实施例流程图;
[0016] 图3为图1所示方法中生成可部署的主机列表的方法实施例流程图;
[0017] 图4为本发明用于容器部署的主机调度系统实施例结构示意图。
【具体实施方式】
[0018] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0019] 容器包括端口映射(即exports属性)、目录映射(即volume属性)和最大内存 (即mem属性)的特性。端口映射是指,在创建容器时,可以指定容器的特定的端口和主机的 某个端口做映射。比如,设定容器的22端口与主机的2222端口做映射,映射后即可以通过 访问主机的2222端口,间接地访问容器的22端口。如果不指定主机的端口,则容器在启动 时,是由docker随机分配一个端口与容器的端口做映射。由于一个端口只能给一个服务开 放,假设一个容器已经设定了 22端口和主机的2222端口做映射,并且容器已经启动,那么, 另一个容器如果也设定了 22端口和此主机的2222端口做映射时,这个容器就会因为2222 端口已被占用而无法启动。目录映射是指,允许容器的目录与主机的目录做映射,同时可以 指定该映射的目录是否是可写。比如,设定容器的/srv目录与主机的/letv/srv目录做映 射,并且设定为可写,那么,当在容器内部向/srv目录写文件或者查看文件时,等同于在主 机的/letv/srv目录做相同的操作。而如果另一个其他业务的容器同样设定了/srv目录与 此主机的/letv/srv目录做映射,并且也设定了可写权限,那么,这两种不同业务的容器同 时操作相同的目录,很可能会导致数据的不一致,造成数据的紊乱,这是不允许的。最大内 存是指,可以给容器设定最大内存,容器的最大内存是指容器内进程使用的最大内存,一旦 容器内进程使用的最大内存超过设定的最大内存,容器会根据优先级杀死特定的进程。因 此,在部署容器时,需要考虑主机上的内存是否足够用于部署容器。由此可见,容器的这些 特性会决定或影响容器是否能够部署在特定的主机上。
[0020] 基于容器的相关特性,本发明实施例提供了一种用于容器部署的主机调度方法, 用于根据内存来进行容器部署,以均衡主机的内存负载。同时,根据预存的容器配置信息和 预设的主机集群资源信息进行主机调度,也便于服务的监控和日志分析。图1示意性地显 示了本发明实施例的用于容器部署的主机调度方法的流程。如图1所示,该方法包括:
[0021] 步骤S11 :预设待部署容器的配置信息和主机集群并存储。
[0022] 根据待部署容器的配置信息,将具有相同或相似配置的一组主机设定为一个集 群,容器的部署按照集群中的主机资源情况进行部署,以均衡主机资源。同时,在部署以前, 将待部署的容器、容器配置信息、对应的主机集群以及主机集群中的主机的资源信息预先 存储到数据库中。其中,相同或相似配置的一组主机包括cpu、内存、硬盘、网络及所在机房 相同或相似。集群中每个主机都对应有相应的主机资源信息,包括剩余容器内存、已经被占 用的端口列表和已经被占用的并且是可写的目录列表。剩余容器内存用于记录它最多可以 给容器分配的内存容量。
[0023] 步骤S12 :获取待部署容器的配置信息和对应的主机集群中的在线的主机列表。
[0024] 从数据库中读取当前待部署容器及其对应的配置信息和主机集群。其中,配置信 息以json格式保存在数据库中,包括待部署的容器的目录映射、端口映射、容器内存和需 要部署的数量等。其中,设定的容器内存为mem的值,需要部署的容器数量为Containernum 的值,容器的目录映射信息以如下的json格式表示:
[0025]
[ { -host": "/letv/srv'' ., ''rcT:true, ''container": "/srv" ! ]
[0026] 需要说明的是,一个容器可以设置多个目录映射,container代表容器的目录, host代表主机的目录,ro代表是否是只读权限,host如果设置为None,则表示host的映射 目录由docker进行分配(docker分配的目录是按照目录前缀+容器的uuid进行设置,因 为容器的uuid是全局唯一的,所以不需要担心目录重复的问题)。
[0027] 端口映射信息以如下的json格式表示:
[0028]
[ { "container5,:22, "host":2222 ! ]
[0029] 需要说明的是,一个容器可以设置多个端口映射,container字段代表的是容器的 端口,host字段代表的是主机的端口,host字段如果设置为None,则代表由docker产生一 个随机端口与容器的端口进行映射(docker分配的端口会根据现有端口的情况进行分配, 能保证端口不会被占用)。
[0030] 待部署容器对应的主机集群中包括多个主机,该集群下的主机及其资源信息也同 时保存在数据库中。当获取到待部署容器对应的主机集群(如可以是集群名称或ID形式 对应存储在待部署容器的数据库记录中)后,从数据库中获取该主机集群中在线(即主机 能够正常提供服务,包括该主机上运行的docker服务正常、网络正常等)的主机列表,比如 从数据库中获取到在线的主机列表为[hostl, host2, host3]。
[0031] 步骤S13 :根据端口映射的配置信息,生成每个主机需要开放的端口列表。
[0032] 根据读取的端口映射的配置信息,获取待部署的容器设定的与主机进行映射的特 定端口,得到每个主机需要开放的端口,添加到每个主机需要开放的端口列表中,将该端口 列表设置为need_host_exports变量名。例如,如果读取到以下的exports (即端口)映射 配置信息:
[0033]
[ { llcontainer,':22, llhost,':2222 h "container":33, "hosr:3333 h {: ltcontainer,':44. "host":None ]
[0034] 读取以上配置信息中的host字段进行判断,当host字段取值不为None时,获得 每个主机需要开放的与容器进行映射的特定端口号,添加到变量名为need_host_exports 的每个主机需要开放的端口列表,从而得到需要开放的端口列表为need_host_exports = [2222,3333]〇
[0035] 步骤S14:根据目录映射的配置信息,生成每个主机需要映射的可写目录列表。
[0036] 根据读取的目录映射的配置信息,获取需要部署的容器设定的与主机进行映射 的可写目录,得到每个主机需要映射的可写目录,添加到每个主机需要映射的可写目录列 表中,将该可写目录列表设置为need_host_volumes变量名。例如,如果读取到以下的 volumes (即目录)映射配置信息:
[0037]
[ { "host":"/lei'v/data", "ro":false, "containefVV'data" I, { "h.osf'.:'7letv/data", "rcT:true, "coiitaine:r":"/srv" f - { "hosf^None, tkro,5:true, "container":'7test" ]
[0038] 读取以上配置信息中的host字段进行判断,当host字段取值不为None时,读取 ro字段进行判断,当ro同时取值为false时,获得每个主机需要映射的与容器对应的可写 目录,添加到变量名为need_host_volumes的每个主机需要映射的可写目录列表,从而得 到需要映射的可写目录列表为need_host_volumes = [ "/letv/data"]〇
[0039] 步骤S15 :对在线的主机列表进行排序。
[0040] 将获得的在线的可用主机列表如[hostl, host2, host3],按照每个主机的资源信 息进行排序,优选地,按剩余容器内存从大到小进行排序,得到新的排序后的在线主机列表 如[host3,host2, hostl]。这样在遍历在线主机列表进行待部署容器能够部署的主机的选 择时,能够保证优先使用剩余容器内存最大的主机进行部署,即依次读取在线主机列表中 主机进行资源匹配时,优先读取剩余容器内存最大的hostl。
[0041] 步骤S16 :根据配置信息和在线的主机列表中主机的资源信息,生成可部署的主 机列表。
[0042] 根据需要部署的容器数量,当得到的可部署的主机的数量小于需要部署的容器 数量时,依次从排序后的在线主机列表中获取一个主机,根据从配置信息得到的容器内存 mem、每个主机需要开放的端口列表need_host_exports和每个主机需要映射的可写目录 列表need_host_volumes,与在线主机列表中获取的一个主机的剩余容器内存、已经被占用 的端口列表和已经被占用的可写目录列表进行匹配,根据匹配的判断结果,如果当前获取 的一个主机的资源满足条件:剩余容器内存大于容器内存、已经被占用的端口列表与每个 主机需要开放的端口列表中的端口全部不同,且已经被占用的可写目录列表与每个主机需 要映射的可写目录列表不存在相互包含的目录,则将满足条件的当前的主机添加到可以部 署容器的主机列表,否则,将不满足部署条件的当前的主机从在线主机列表中删除。循环以 上操作,直到可部署主机列表中的主机数量达到需要部署的容器数量,以得到可部署的主 机列表。
[0043] 图2示意性地显示了一种实施方式的生成可部署的主机列表的方法流程,如图2 所示,该发明实施例的方法包括:
[0044] 步骤S160 :初始化变量信息,遍历在线的主机列表。
[0045] 设置一个compute变量并初始化为空列表,用于记录将要计算出的可以部署容器 的主机。设置一个deploy_container_num变量并初始化为0,用于记录可以部署容器的主 机数目(即满足部署条件的主机数目),该变量的值即是可部署的主机列表compute的长 度。在变量初始化完成后,循环遍历排序后的在线主机列表,以对集群中可用的主机按内存 大小进行分别评估,判断是否适合当前的容器进行部署。
[0046] 步骤S161 :判断可以部署容器的主机列表的数目是否等于容器数量。
[0047] 在每一轮循环开始时,首先获取可以部署容器的主机列表的数目即变量cbpl〇y_ container_num的值,与需要部署的容器的数量(即获取的Containernum的值)进行比较, 判断deploy_container_num是否等于Containernum,如果相等,则表示可以部署容器的主 机列表中主机的数目已经达到了需要部署的容器的数目,说明针对需要部署的容器在集群 中选择合适的主机的处理已经完成,则跳出循环,结束操作,输出可以部署容器的主机列表 compute。如果不相等,则继续进行步骤S162的处理。
[0048] 步骤S162 :判断在线主机列表的数目是否为0。
[0049] 获取在线主机列表的长度,判断是否为0,如果为0,由于通过步骤S161已得到可 以部署容器的主机列表数目deploy_container_num与需要部署的容器数量Containernum 不相等,则说明当前这个主机集群下的主机没有足够的资源进行Containernum个数量的 容器部署,则进行报错(如输出异常或错误提示信息)并跳出循环。如果不为0,则进行步 骤 S163。
[0050] 步骤S163 :获取在线主机列表中的第一个主机的相应信息。
[0051] 依照列表读取的顺序,从在线主机列表中获取当前在列表最首端位置的主机(即 列表中的第一个主机)如hostl,并从数据库中读取该主机对应的剩余容器内存、已经被占 用的端口列表和已经被占用的可写目录列表,进行步骤S164的处理。由于在线主机列表是 按剩余容器内存由大到小排序后的列表,获取的首端位置的第一个主机就是剩余容器内存 最大的主机,可以保证将容器优先部署在剩余容器内存最大的主机上,以更好的利用现有 的资源,达到资源的最大化利用。
[0052] 步骤S164 :判断主机的剩余容器内存是否小于容器内存。
[0053] 将该主机的剩余容器内存与需要部署的容器的内存(即mem的值)进行比较,判 断剩余容器内存是否小于容器内存,如果小于,则说明这个主机已经没有足够的内存资源 按当前容器的需求进行部署,则将该主机如hostl从在线主机列表中删除,并跳转至步骤 S161进行下一轮循环的判断。如果不小于则继续进行步骤S165的处理。由此,可以实现不 允许每个主机上容器的总内存超过主机的最大内存,以造成主机的负载超负荷,同时也可 避免容器因内存不足而杀死特定进程的问题。
[0054] 步骤S165 :判断主机已经被占用的端口列表中是否至少存在一个端口与主机需 要开放的端口相同。
[0055] 将主机已经被占用的端口列表中的端口依次与主机需要开放的端口列表need_ host_exports中的端口进行比较,判断已经被占用的端口列表中是否至少有一个端口是与 主机需要开放的端口相同的,如果存在有相同的端口,则说明该主机的特定端口已经被占 用,该容器如果部署到当前主机上,将会因为端口冲突而无法正常启动,则将该主机从在线 主机列表中删除,并跳转至步骤S161进行下一轮的判断,以保证用于部署的主机,支持进 行容器与主机端口映射的设定。如果不存在相同的端口,则进行步骤S166。
[0056] 步骤S166 :判断主机已经被占用的可写目录列表中是否至少存在一对目录与主 机需要映射的可写目录互相包含。
[0057] 将主机已经被占用的可写目录列表中的目录依次与主机需要映射的可写目录列 表need_host_volumes中的目录进行比较,判断已经被占用的可写目录列表中是否至少有 一个目录是与主机需要开放的目录是互相包含的,如果存在有互相包含的目录,则说明该 主机的特定目录已经被占用且可以写入数据,该容器如果部署到当前主机上,将会因为可 能同时对该特定目录进行写操作,而造成数据紊乱,因此需将该主机从在线主机列表中删 除,并跳转至步骤S161进行下一轮的判断,以保证用于部署的主机,支持进行容器与主机 可写目录映射的设定。如果不存在互相包含的目录,则进行步骤S166。
[0058] 其中,任何一对目录是互相包含的关系是指,目录a在目录b中,或者目录b在目 录a中。如"/letv/data"与"/letv",由于目录"/letv/data"在目录"/letv"中,因此两 者是互相包含的关系,进行写数据操作时,会因此该目录下的数据紊乱。
[0059] 步骤S167 :将主机的剩余容器内存减去容器内存,并将主机添加到可以部署容器 的主机列表中。
[0060] 如果内存、端口和目录都满足容器的部署需求,则说明当前的主机可以部署容器, 此时,首先将当前主机的剩余容器内存减去容器内存mem,将当前主机添加至可以部署容器 的列表compute中,并对deploy_container_num重新赋值(可以是在每一轮循环开始时直 接获取compute的长度,也可以是每次在此步骤中将其自增一,通过常用的技术手段即可 实现,因此不赘述),然后跳转至步骤S161进行下一轮的循环。
[0061] 通过图2的实施例方法,即可以对需要部署的容器的集群中的所有主机进行遍历 和判断,以得到可以部署容器的主机列表。得到的可以部署容器的主机列表中的主机,能够 支持容器与主机的特定端口或可写目录映射,且能够避免容器因内存不足而杀死进程。由 此就可以完成根据容器需求和主机配置进行容器部署,以最大化利用主机的基础资源和防 止端口及目录冲突。同时,将集群中的主机按内存进行排序,根据其内存进行容器部署的策 略,也能够保证优先将容器部署在剩余容器内存最大的主机上,以实现主机集群中内存资 源的平均分配。
[0062] 图3示意性地显示了另一种实施方式的生成可部署的主机列表的方法流程,如图 3所示,该发明实施例的方法与图2所示的实施例方法的处理过程基本相同,不同在于在步 骤S167之后,图3所示的发明实施例还包括:
[0063] 步骤S168 :判断是否满足主机需要映射的可写目录列表的长度不为0或者主机需 要开放的端口列表的长度不为〇。
[0064] 添加一个满足部署条件的主机后,获取主机需要映射的可写目录列表need_h〇St_ volumes的长度,并获取主机需要开放的端口列表need_host_exports的长度,判断两者是 否有一个不为0,如果need_host_exports的长度不为0或者need_host_volumes的长度不 为〇,则说明容器设定了固定的主机端口或者可写目录,那么下一次相同应用的容器就不能 再次部署在这个主机上,因为该主机的相应端口或可写目录已经被占用。因此,如果任何一 个长度不为0,则将已添加到可部署主机列表的当前满足部署条件的主机从在线主机列表 删除,并继续进行步骤S161的下一轮循环。如果两者的长度都为0,则说明当前的主机还有 潜在的可能能够继续部署容器,则将当前满足部署条件的主机从在线主机列表的当前位置 (每一轮都是取首部即第一个位置的主机进行判断的)移除,放到在线主机列表的尾部,并 继续进行步骤S161的下一轮循环。由此,可以保证尽量将容器的分配平均化,从而避免集 群中某些主机资源闲置,而某些主机却负载过高的不良。
[0065] 图4示意性地显示了本发明一种实施方式的容器调度系统的实施例结构。如图4 所示,本发明实施例的容器调度系统包括信息预设模块20、信息获取模块40和列表生成模 块60。信息预设模块20配置为根据待部署的容器信息,设定主机集群,并存储待部署的容 器的配置信息和对应的主机集群的信息。其中,容器的配置信息包括目录映射信息、端口映 射信息、容器内存和需要部署的容器数量。主机集群是根据待部署容器的配置需求,将具有 相同或相似配置的一组主机设定为一个主机集群,以在该集群中部署该容器。主机集群中 包括多个相同或相似配置的主机,通过信息预设模块20将待部署的容器、对应的配置信息 和对应的主机集群存储在数据库中。主机集群包括的主机及其每个主机的资源信息,也对 应存储在数据库中。各主机的资源信息包括主机的剩余容器内存、已占用的端口列表和已 占用的可写目录列表。信息获取模块40配置为获取待部署的容器的配置信息和主机集群 中在线的主机列表。在进行容器部署时,通过信息获取模块40从数据库中获取待部署容器 对应的配置信息和主机集群信息,并读取该集群下的在线主机列表。列表生成模块60配 置为根据容器的配置信息和在线主机列表中主机的资源信息,生成可以部署容器的主机列 表。列表生成模块60根据待部署的容器数量循环遍历在线主机列表中的主机信息,判断容 器内存与主机中剩余容器内存、目录映射信息与主机中已经被占用的可写目录列表、及端 口映射信息与主机中已经被占用的端口列表的匹配情况,以生成满足容器配置需求的可以 部署的主机列表。
[0066] 如图4所示,信息获取模块40包括排序单元401、端口列表生成单元402、可写目 录列表生成单元403。排序单元401配置为将在线主机列表按照主机的资源信息排序。优选 地,排序单元401将在线主机列表按照剩余容器内存由大到小的顺序排序。端口列表生成 单元402配置为根据获取的容器的端口映射的配置信息,生成主机需要开放的端口列表。 可写目录列表生成单元402配置为根据获取的容器的目录映射的配置信息,生成主机需要 映射的可写目录列表。通过将在线主机列表按剩余容器内存排序,可以实现将容器优先部 署在剩余容器内存最大的主机上,以保证集群中内存资源的平均分配。而通过获取每个主 机需要开放的端口列表和需要映射的可写目录列表,与主机已占用的端口和可写目录进行 比较,剔除已经被占用相应端口或可写目录的主机,能够满足容器部署中对设定特定端口 映射和可写目录映射的需求,避免因端口和可写目录的映射冲突而无法启动容器的问题。
[0067] 如图4所示,优选地,列表生成模块60可以包括主机处理单元601。主机处理单元 601配置为根据生成的主机需要开放的端口列表与主机需要映射的可写目录列表的长度, 将主机从在线主机列表中移除或移动至在线主机列表的末尾。将已经部署过的且能够支持 设定容器与主机端口和目录映射的主机,移动到在线主机列表的末尾,能够均衡集群中主 机资源的利用,避免有些主机资源过于闲置,而有些主机资源又负载过重的问题。
[0068] 本发明实施例系统各模块及单元的详细实现,可参照前文方法的叙述,在此不再 赘述。同时,需要说明的是,本发明实施例中可以通过硬件处理器来实现相关功能模块。
[0069] 本发明实施例的系统及方法,通过将内存不足或发生端口冲突或发生可写目录冲 突的主机从在线主机列表移除,保证了将容器部署在合适的主机上,以满足容器部署中对 设定特定映射端口和可写目录的需求,也避免了容器因内存不足而杀死进程的问题。同时, 通过将集群中的主机按剩余容器内存进行排序,实现了基于内存来进行部署容器的策略, 保证了主机集群中内存资源的平均分配。而将分配后的没有端口或目录冲突的潜在可再部 署主机移动至列表的末尾,在一定程度上防止了一个集群下主机资源的过分闲置或负载过 高的情况,保证了集群中主机资源的充分和平衡利用。
[0070] 以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可 以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单 元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其 中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性 的劳动的情况下,即可以理解并实施。
[0071] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可 借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上 述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该 计算机软件产品可以存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指 令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施 例或者实施例的某些部分所述的方法。
[0072] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
【主权项】
1. 一种用于容器部署的主机调度方法,其特征在于,包括: 获取待部署容器的配置信息和对应的主机集群; 获取所述主机集群中在线的主机列表; 根据所述配置信息和所述主机列表中的主机的资源信息,生成可部署的主机列表。2. 根据权利要求1所述的方法,其特征在于,还包括: 根据所述主机的资源信息对所述在线的主机列表排序。3. 根据权利要求2所述的方法,其中,所述配置信息包括目录映射信息、端口映射信 息、容器内存和需要部署的容器数量; 所述主机的资源信息包括主机的剩余容器内存、已占用的端口列表和已占用的可写目 录列表。4. 根据权利要求3所述的方法,其特征在于,所述根据所述主机的占用信息对所述在 线的主机列表排序包括: 将所述在线的主机列表按照主机的剩余容器内存由大到小进行排序。5. 根据权利要求3所述的方法,其特征在于,所述根据所述配置信息和所述主机列表 中的主机的资源信息,生成可部署的主机列表包括: 根据所述目录映射信息生成主机需要映射的可写目录列表; 根据所述端口映射信息生成主机需要开放的端口列表; 依次获取所述在线的主机列表中的主机的资源信息,进行匹配处理,将满足条件的主 机添加到所述可部署的主机列表,直到所述可部署的主机列表中的主机数量达到与所述需 要部署的容器数量相等。6. 根据权利要求5所述的方法,其特征在于,所述依次获取所述在线的主机列表中的 主机的资源信息,进行匹配处理,将满足条件的主机添加到所述可部署的主机列表包括: 判断主机的资源信息是否满足:剩余容器内存大于所述容器内存、已占用的可写目录 列表与所述主机需要映射的可写目录列表中不存在相互包含的目录、已占用的端口列表与 所述主机需要开放的端口列表中不存在相同的端口, 同时满足以上条件,则将满足条件的主机添加至所述可部署的主机列表,并修改所述 满足条件的主机的剩余容器内存,否则,从所述在线的主机列表中删除不满足条件的主机。7. 根据权利要求6所述的方法,其特征在于,在将满足条件的主机添加至所述可部署 的主机列表之后还包括: 判断所述主机需要开放的端口列表与所述主机需要映射的可写目录列表是否至少其 中之一的列表长度不为零,如果至少其中之一的列表长度不为零,则将所述满足条件的主 机从所述在线的主机列表中删除,否则将所述满足条件的主机移动至所述在线的主机列表 的末尾。8. -种用于容器部署的主机调度系统,其特征在于,包括信息获取模块和列表生成模 块, 所述信息获取模块配置为获取待部署的容器的配置信息和对应的主机集群,并获取所 述主机集群中的在线的主机列表; 所述列表生成模块配置为根据所述配置信息和所述在线的主机列表中的主机的资源 信息,生成可部署的主机列表。9. 根据权利要求8所述的系统,其特征在于,所述配置信息包括目录映射信息、端口映 射信息、容器内存和容器数量,所述资源信息包括剩余容器内存、已占用的端口列表和已占 用的可写目录列表; 所述信息获取模块包括排序单元,配置为根据所述资源信息对所述在线的主机列表排 序。10. 根据权利要求7所述的系统,其特征在于,所述信息获取模块还包括端口列表生成 单元和可写目录列表生成单元, 所述端口列表生成单元配置为根据所述端口映射信息生成主机需要开放的端口列 表; 所述可写目录列表生成单元配置为根据所述目录映射信息生成主机需要映射的可写 目录列表; 所述列表生成模块包括主机处理单元,所述主机处理单元配置为根据所述主机需要开 放的端口列表与所述主机需要映射的可写目录列表的长度,将可部署的主机从所述在线的 主机列表中删除或移动至所述在线的主机列表的末尾。
【文档编号】G06F9/44GK105893010SQ201510790410
【公开日】2016年8月24日
【申请日】2015年11月17日
【发明人】张 杰
【申请人】乐视云计算有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1