CN111800452A - 在输入/输出设备集群中的服务部署 - Google Patents
在输入/输出设备集群中的服务部署 Download PDFInfo
- Publication number
- CN111800452A CN111800452A CN202010268753.6A CN202010268753A CN111800452A CN 111800452 A CN111800452 A CN 111800452A CN 202010268753 A CN202010268753 A CN 202010268753A CN 111800452 A CN111800452 A CN 111800452A
- Authority
- CN
- China
- Prior art keywords
- container
- service
- devices
- stack
- cluster
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000007246 mechanism Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 9
- 230000007613 environmental effect Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 239000012190 activator Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0209—Architectural arrangements, e.g. perimeter networks or demilitarized zones
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种用于在输入/输出设备(103.1‑103.5)的集群中部署服务的方法,该输入/输出设备的集群包括几个包含容器引擎(202)的I/O设备。该方法可以经由容器客户端来执行。获得(302)标识至少一个服务并指定至少一个设备约束的堆栈文件。然后,如果集群的I/O设备当中的至少一个第一I/O设备与设备约束相匹配,则基于堆栈文件发送(306)命令,以在该至少一个第一I/O设备的容器堆栈上部署服务。
Description
技术领域
本发明涉及设备中服务的部署,特别是但不限于工业输入/输出(Input/Output,I/O)设备。
背景技术
I/O设备是具有作为传感器/致动器的输入/输出的计算实体。
例如,输入设备可以包括传感器,传感器是将环境或真实物理数据上的事件或变化转换成数字信息的单元/模块。输入设备可以涵盖任何包括用于获取、复制、转换、管理或混合数字信息的计算能力的设备。
输出设备可以包括致动器(actuator),致动器是将数字信息转换成任何动作/变化或真实物理数据的单元/模块。输出设备可以涵盖任何包括用于混合、管理、转换、复制或应用/实施数字信息的计算能力的设备。
因此,I/O设备涵盖上述两种机制中涉及的任何设备,并且包括数据计算能力。
要在I/O设备中部署的服务可以涵盖配置数据、调整数据、校准过程、可应用程序、运行时间和/或固件。
基于工业自动化系统的机器和工厂一般使用这样的I/O设备。在工厂或机器中实施I/O设备需要定义一组信息,诸如配置数据、调整数据、校准过程、可应用程序、运行时间和/或固件。I/O设备可以部署在不同的地点,也可以具有在云中的镜像部分。
根据现有技术方法,I/O设备的部署包括将不同的软件、文件系统或应用中的所有信息/服务分开,并单独部署该信息。
因此,I/O设备的更新可能既长又麻烦,尤其是当I/O设备被拆分到不同的地点或具有兼容性痛点时。
因此,需要促进在工业I/O设备中的服务的部署。
发明内容
本发明的目的是减轻上述缺点中的至少一些。本发明的第一方面涉及一种用于在输入/输出设备的集群中部署服务的方法,该输入/输出设备的集群包括几个包含容器引擎的I/O设备。该方法包括经由容器客户端执行的以下操作:
-获得堆栈文件,其中,该堆栈文件标识至少一个服务并指定至少一个设备约束;
-如果在集群的I/O设备当中的至少一个第一I/O设备与设备约束相匹配,则基于堆栈文件发送命令以在至少一个第一I/O设备的容器堆栈上部署服务。
因此,本发明利用最初专用于IT系统的容器技术而在工业系统的I/O设备中部署服务。
根据一些实施例,该方法还包括以下操作:
-由集群的I/O设备的容器引擎接收命令,以及
-当接收到命令时,至少一个第一I/O设备的容器引擎从至少一个注册表中取得服务的至少一个镜像(image),以在容器堆栈的容器中部署服务的镜像。
根据一些实施例,容器引擎可以是Docker引擎,容器客户端可以是Docker客户端,并且该方法可以还包括在选择服务之前的以下操作:
-通过指定至少一个管理器来创建Docker蜂群(swarm);
-由至少一个管理器并且从几个I/O设备的容器引擎接收加入集群的相应的请求。
进行部署的命令可以被发送到至少一个管理器,然后由管理器转发给集群的I/O设备的容器引擎。
Docker蜂群模式可以使得能够控制多个I/O设备,这些I/O设备最终可以位于不同的工业现场。
作为补充,管理器可以是通过相应的防火墙与I/O设备隔开的网络实体。
可替换地或作为补充,可以由管理器或经由容器客户端将标识符分配给从其接收请求的几个I/O设备中的每一个,并且至少一个第一I/O设备具有与设备约束相匹配的唯一标识符。
因此,可以基于设备标识符、设备类型或其他类型的约束来区分所部署的服务。
根据一些实施例,设备约束是第一设备类型,并且如果第一I/O设备与第一设备类型相匹配,则可以在至少一个第一I/O设备的容器引擎上部署服务。
这允许在具有相同类型的几个I/O设备中部署服务(例如,在工业系统/现场的所有泵中)。
根据一些实施例,服务是以下中的一个或多个:
-自动化应用的一部分;
-运行时间;
-固件;
-配置数据;
-调整数据;和/或
-校准过程。
根据一些实施例,命令还包括环境数据,并且可以基于环境数据来配置在至少一个第一I/O设备的容器引擎上部署的服务。
作为补充,环境数据可以定义经由堆栈文件部署的几个服务之间的发布/订阅机制。
作为补充,发布/订阅机制可以是根据MQTT协议的,并且在第一I/O设备之一的容器堆栈中部署的服务之一可以是MQTT代理服务。
本发明的第二方面涉及一种可由处理器运行并且包括指令的计算机程序,该指令用于当由处理器运行时执行根据本发明的第一方面的方法的步骤。
本发明的第三方面涉及一种容器客户端设备,包括:
-用户接口,被配置用于接收用户输入;
-处理器和存储器,被配置用于运行容器客户端,并且用于基于用户输入来获得标识至少一个服务并指定至少一个设备约束的堆栈文件;
其中,处理器还被配置为基于堆栈文件来生成命令,并且其中,容器客户端还包括网络接口,网络接口被配置用于:如果在包括相应的容器引擎的I/O设备的集群当中的至少一个第一I/O设备与设备约束相匹配,则发送命令以在至少一个第一I/O设备的容器堆栈上部署服务。
本发明的第四方面涉及一种系统,该系统包括根据本发明的第三方面的容器客户端,并且包括I/O设备的集群,其中每个I/O设备包括致动器或传感器、操作系统和容器堆栈。
参考附图,在以下对多个示例性实施例的详细描述中描述了本发明的进一步的目的、方面、效果和细节。
附图说明
仅作为示例,将参考附图描述本公开的实施例,附图中:
图1示出了根据本发明的一些实施例的系统;
图2示出了根据本发明的一些实施例的I/O设备的软件/硬件结构;
图3是示出根据本发明的一些实施例的方法的步骤的流程图;
图4示出了根据本发明的一些实施例的容器客户端设备的结构。
具体实施方式
参考图1,示出了根据本发明的一些实施例的系统。
该系统包括容器客户端100,容器客户端100可以由用户110(例如,经由图形用户界面GUI或文本用户界面TUI)访问。可替换地,容器客户端可以改由诸如SAP(用于数据处理的系统、应用和产品(Systems,Applications and Products,SAP))的自动化系统、实施“生产配方”的系统、维护管理系统、“开发”系统来访问,或者由可编程逻辑控制器PLC来访问。在下文中,仅出于说明的目的,考虑用户可以经由TUI访问容器客户端100的示例。
容器是服务镜像的可运行实例,其包含服务运行所需的环境。服务可以部署在一个I/O设备的至少一个容器中,但也可能涉及在不同的I/O设备中创建几个容器。
例如,在分布式应用中,应用的不同部分可以被称为服务。不同的部分(服务)可以部署在堆栈中,如下文所述。
可以使用诸如应用/运行时间/固件(当前诸如Docker的容器技术所允许的)的容器来部署任何类型的服务,但是也可以使用配置数据、调整数据和校准过程来部署服务,配置数据、调整数据和校准过程也可以在孤立的环境中开发以在I/O设备中进行容器化和部署。
容器客户端100可以在包括计算能力的设备(诸如台式计算机、膝上型电脑、智能手机等)上运行,并且使得能够与服务器(诸如Docker技术中的守护程序(daemon))进行通信。
如将进一步描述的,容器客户端100允许用户选择或创建部署文件。部署文件可以是YAML格式的。作为第一种替代方案,部署文件可以是JSON格式的。然而,部署文件不限于这两种格式,并且还可以采用与容器技术兼容的任何其他格式。具体地,可以将其推广到任何表示数据的格式,优选地是以结构化的方式,这是图1所示的所有实体或大多数实体所共有的,或者是可互操作的(可以将其翻译成系统的其他实体所使用的另一种格式)。
在下文中,出于说明的目的,考虑了Docker的示例。然而,本发明适用于任何容器技术,而不仅仅是Docker。
Docker使得能够将服务/应用的部署自动化为可以在云上或预置地(on-premises)运行的便携式自给自足的容器。
与服务相对应的容器可以经由Dockerfile来创建,Dockerfile定义了容器内部环境中发生的事情。对于如网络接口和磁盘驱动器的资源的访问在该环境中被虚拟化,该环境与托管容器的系统的其余部分孤立开来。然后,基于Dockerfile,服务的镜像被建立并且可以被存储在本地或远程的注册表104中,随后作为容器化服务被部署在I/O设备中。
注册表可以是公共的或私有的。例如,默认情况下,镜像可以存储在公共注册表中,诸如Docker公共注册表。注册表可以被看作存储库的集合,存储库是镜像的集合。
根据本发明的一些实施例,该系统还包括至少一个管理器,例如两个管理器101.1和101.2,特别是用于实施Docker蜂群模式。蜂群模式是提供内置容器布置(orchestration)可能性的Docker特征。Docker蜂群允许将服务部署到几个节点的集群(cluster)上,在多个机器(根据本发明的I/O设备)上运行该服务。这个集群叫做蜂群。
因此,蜂群是运行Docker守护程序的一组机器,它们在配置阶段作为几个节点加入到集群中,参考图3将会更好地理解这一点。
图1的系统还包括几个I/O设备,这几个I/O设备可以被分组在集群/蜂群中,诸如五个I/O设备103.1、103.2、103.3、103.4和103.5。I/O设备103.1、103.2和103.3由管理器101.1管理,I/O设备103.4和103.5由管理器101.2管理。然而,对以下各项没有加以限制:
-管理器101的数量;
-I/O设备103的数量;
-每个管理器103的I/O设备101的数量。
Docker蜂群为Docker容器提供本地集群功能,这将一组Docker引擎(诸如安装在I/O设备103上的那些)转变成单个虚拟Docker引擎。根据Docker蜂群,与管理器101.1和101.2相比,I/O设备103.1至103.5上的Docker引擎可以被指定为“工蜂(worker)”。
蜂群管理器是蜂群中唯一能够运行来自客户端100的命令或者能够授权其他I/O设备加入蜂群的节点。
该系统还可以包括用于I/O设备103.1至103.5中的每一个的相应的防火墙102.1至102.5。
I/O设备可以经由诸如本地网络或扩展网络(例如,IP网络)的网络与客户端100以及管理器101.1和101.2进行通信。
根据本发明的一些实施例的系统还可以包括注册表,该注册表也可以经由网络访问,并且存储与相应的服务相对应的几个镜像105.1-105.n,诸如Docker镜像。这些镜像可以是基于Dockerfile而获得的。当请求服务时,可以使用镜像的名称来标识服务。
客户端可以使得用户能够在一些I/O设备中部署服务。这可能涉及使用堆栈文件,这将在下文中进一步描述。堆栈文件被用来请求一些I/O设备从寄存器中取得镜像,以便将它们存储在相应的容器中。
参考图2,示出了根据本发明的一些实施例的I/O设备103的软件/硬件布置。
容器引擎202,诸如Docker引擎,安装在操作系统(Operating System,OS)201上,而不需要具有中间虚拟机。OS 201可以访问I/O设备103的输入/输出接口204以及I/O设备的(多个)网络接口,从而允许I/O设备容器引擎与诸如蜂群管理器101.1-101.2的外部实体进行通信。还允许更一般地将I/O设备与所有外部实体连接起来,特别是在实施所部署的服务时,并且这些服务涉及不同容器之间的通信,这些容器可能存储在不同的I/O引擎上。如下文所解释的,服务可以意味着发布/订阅机制,发布/订阅机制引导不同I/O设备上的容器化服务经由它们相应的网络接口一起通信。
OS 201例如可以是LinuxTM。然而,没有对OS加以限制,OS可以是允许使用容器技术的任何现有或未来的操作系统。
与相应服务相对应的几个容器203.1-203.2可以部署在容器引擎202上。
根据本发明,“服务”或“微服务”是指小规模且彼此独立的服务。服务可以是诸如自动化应用的应用的一部分,或者是运行时间,或者可以是已经描述过的任何其他类型的数据。应用或对应的运行时间的示例可以是:
-IEC 61131-3;
-IEC 614499;
-Node-RED;
-MQTT代理;
-其他服务。
每个服务都具有不同的计算机代码,计算机代码可以由开发团队独立于其他服务来开发。如前所述,计算机代码可以编排(compose)在Dockerfile中。团队可以更新现有的服务,而不需要重新创建和重新部署整个应用。更新Dockerfile,并且基于Dockerfile的新版本来更新存储在注册表中的镜像。然后,可以使用与例如YAML格式的部署文件相关联的“Docker堆栈部署”类型的命令,将更新的镜像部署在I/O设备的容器中。
容器化服务之间的通信可以使用专用的应用编程接口来执行。关于每个服务的内部组织的详细信息不会显示给其他服务。这些服务不需要共享公共的技术堆栈、库或框架。
因此,根据本发明的服务/微服务的部署提供了以下优点:
-独立的部署;
-独立的开发;
-专业的开发团队:开发团队可以专注于单个服务;
-孤立的错误。如果服务出现故障,它不会影响其他服务;以及
-技术堆栈可以混合。
参考图3,示出了根据本发明的一些实施例的方法。
在步骤300,通过经由客户端100指定至少一个Docker蜂群管理器101.1或101.2来初始化蜂群网络。这可以包括创建网络密钥,并且该步骤可以经由容器客户端100使用“Docker蜂群初始化”命令来执行。
在步骤301,至少一个I/O设备103通过向Docker蜂群管理器101.1或101.2发送加入网络的请求来加入所初始化的蜂群网络。这可以经由“Docker蜂群加入”命令来执行,包括将网络密钥返回给Docker蜂群管理器101.1或101.2。由I/O设备发送的请求(或“Docker蜂群加入”命令)可以基于访问I/O设备的操作者输入来生成。为此,操作者可以经由例如I/O设备的接口输入Docker蜂群管理器101.1或101.2的标识符和网络密钥。
在步骤301期间,加入蜂群网络的I/O设备103中的每一个可以由唯一网络标识符来标识。“唯一网络标识符”意味着该标识符唯一地标识蜂群网络中托管工蜂节点/容器引擎的I/O设备103,或者唯一地标识I/O设备的可通过其访问工蜂节点的一个或多个端口号。唯一网络标识符可以是例如I/O设备103的IP地址(并且作为补充,可以是端口号或一系列端口号)。
用户110可以另外定义设备标识符,设备标识符可以被映射到唯一网络标识符,并且可以便于用户110进一步标识I/O设备。用户110还可以定义I/O设备的类型。
这可以通过在步骤300和301之后并且在步骤302之前执行的配置阶段期间定义标签来实现。例如,用户110可以使用客户端100来定义标签,诸如定义I/O设备的类型的“Node.labels.type”,或者定义I/O设备的设备标识符的“Node.labels.name”,其优选地不同于网络标识符。例如,设备标识符可以是“描述符+数字”的形式,诸如“模块01”、“模块02”、“泵1”、“阀3”等。类型标签可以是类型名称,诸如“泵”、“阀”、“PLC”等。也可以为托管在I/O设备上的每个节点定义其他补充标识符。
“Docker蜂群初始化”命令可以包含预配置的Docker蜂群加入命令,以将I/O设备添加到集群,从而可以使用单个命令来执行步骤301和302。
要注意的是,步骤300和301是在Docker蜂群的上下文中描述的,因此,它们是可选的,特别是如果使用另一种容器技术来实施本发明的话。
并行地,并且优选地在步骤300和301之前,该方法可以包括使用例如如前所述的Dockerfile来开发服务(诸如服务计算机代码)的步骤。然后,在步骤321,获得服务的镜像,并将其存储在公共或私有注册表中。
在随后的步骤302,用户可以使用容器客户端100(诸如Docker客户端100)生成命令,以使用I/O设备103.1至103.5的一个或多个中的容器堆栈来部署服务。命令可以基于部署文件(或堆栈文件),并且可以使用“Docker堆栈部署”命令来执行部署。堆栈可以包括一个服务或一组相互依赖或独立的几个服务。例如,堆栈可以是一组相互关联的服务,它们共享依赖关系,并且可以被布置(orchestrate)在一起。尽管非常复杂的应用可能使用多个堆栈,但是单个堆栈可能能够定义和协调整个应用的功能。根据本发明,可以仅使用一个部署文件来部署完整的堆栈。
步骤302可以包括获得和部署堆栈文件的几个子步骤。用户可以通过编排新的堆栈文件(例如使用Docker compose)、选择现有堆栈文件或者修改存储在本地或远程存储装置中的现有堆栈文件来开始步骤302。
服务可以已经在堆栈文件中被标识,或者可以由用户输入。使用名称/标识符来标识服务,这使得能够在注册表104中取得服务的镜像。如上所述,标识服务的标识符可以是注册表104中的镜像105之一的名称。作为补充,标识服务的标识符可以标识镜像的版本,或者可以指示要部署最新版本。
在子步骤304,用户可以指定至少一个设备约束。然后,设备约束可以被I/O设备103用来标识它们是否与服务部署有关。对设备约束没有加以限制。例如,设备约束可以基于上面标识的设备标签,诸如I/O设备的类型(例如,“泵”),或者可以替代地是如上所述的I/O设备103的设备标识符。
在子步骤305,用户可以定义至少一个环境数据项。“环境数据”指定与以下内容相关的任何数据:
-由I/O设备获取/接收/传输的数据。如果I/O设备103是泵,则该数据可以对应于由I/O设备103测量的速度值、流量值、功率值和/或压力值。此外,环境数据可以标识与由I/O设备获取/感测的不同类型的数据相对应的几个发布通道。例如,这可以在不同I/O设备上的容器化服务通过发布/订阅机制进行连接时被使用。订阅和发布可以由描述在其上部署容器化服务的I/O设备的任务、任务名称和/或任务槽的数据来定义;
-标识节点、节点标识符、节点主机名(诸如托管节点的I/O机器的IP地址)的数据;
-标识服务、服务标识符、服务名称、服务标签的数据;或者
-与部署在同一I/O设备或其他I/O设备的其他容器上的其他服务的兼容性规则。
一些环境数据可以由Docker蜂群管理器101.1-101.2注入,而不需要用户将其添加到堆栈文件中。例如,如果用户指定设备标识符(诸如“泵2”)作为约束,则环境数据可以包括与“泵2”相对应的节点标识符,并且可以由Docker蜂群管理器101.1-101.2注入,Docker蜂群管理器101.1-101.2可以存储(在配置阶段之后)设备标识符和节点标识符(诸如唯一网络标识符)之间的对应关系。
环境数据还可以定义集群的几个I/O设备103之间的发布/订阅机制。发布/订阅机制可以是根据MQTT协议的。在这种上下文中,在堆栈文件中标识并打算部署在容器堆栈中的服务可以是MQ遥测传输(Message Queue Telemetry Transport,MQTT)代理服务。堆栈文件的其他容器化服务可能经由发布/订阅机制与MQTT代理服务进行通信。
更一般地,堆栈文件可以标识要在一个或多个I/O设备上的容器中部署的几个服务,并且可以定义这些服务之间的通信机制。
例如,在堆栈文件中标识的第一服务可以是要在I/O设备103.1的第一容器中部署的MQTT代理服务。堆栈文件的第二服务可以是这样的服务:向在I/O设备103.1的第一容器中容器化的MQTT代理服务发布由I/O设备103.2感测到的数据。为此,第二服务的环境数据可以标识要作为任务发布的数据,并且可以指定包括第一容器的I/O设备103.1的标识符(网络地址或设备标识符)。
更一般地,堆栈文件使得能够指定要在蜂群中部署的不同服务之间的发布/订阅机制。不同的服务可以部署在同一I/O设备103的不同容器中,每个容器与I/O设备的不同端口号相关联。
如上所述,服务名称、设备约束和环境数据可以在堆栈文件中预先定义,可以由用户在堆栈文件中输入,或者可以由用户在现存的堆栈文件中修改,或者可以已经存在于现存的堆栈文件中。
下文给出了Yaml堆栈文件的一个示例:
该堆栈文件的目标是在两个不同的I/O设备的两个容器中(I/O设备103.1上的模块01和I/O设备103.2上的模块02)部署两个服务(注册表1的服务“pump:latest”和注册表2的服务“pump:latest”)。因此,尽管图1中仅示出了一个寄存器104,但是根据本发明的系统可以包括存储相应的镜像的几个寄存器。应当注意,根据本发明,几个服务可以仅部署在一个I/O设备中,或者部署在几个I/O设备中。
根据上面的示例,第一服务被部署在托管了由“模块01”标识的容器引擎的I/O设备103.1中,因为在堆栈文件中指定了约束“node.labels.Type==Pump;node.labels.Name==module01”。类似地,第二服务被部署在托管了由“模块02”标识的容器引擎的I/O设备103.2中,因为在堆栈文件中指定了约束“node.labels.Type==Pump;node.labels.Name==module02”。
在该示例中,I/O设备103.1和103.2都是泵。考虑I/O设备103.3是另一种类型,例如阀,则通过指定“node.labels.Type==Pump”作为约束(不指定任何设备标识符“node.labels.Name”),可以在I/O设备103.1和103.2(而不是I/O设备103.3)中部署服务。
可替换地,通过不指定与要部署的服务相关联的任何约束,可以在集群/蜂群的所有I/O设备中部署服务。
在步骤306,一旦堆栈文件已经被用户选择/编排/修改,用户就可以经由客户端100生成命令来部署至少一个包括所标识的服务之一的容器堆栈。要注意的是,如上例所示,对使用一个堆栈文件部署的容器堆栈的数量(对应于服务的数量)没有加以限制。命令可以基于Docker的“Docker堆栈部署”命令,该命令可以是:
docker stack deploy-c File.yaml
其中,File.yaml对应于在步骤302编排/选择/修改的堆栈文件。
在下文中,仅出于说明的目的,考虑部署与第一服务相对应的容器堆栈,第一服务与注册表104中的镜像105.i相关联(i是包括在1和n之间的整数),并且要被部署在I/O设备103.2和103.4中。
在步骤307,客户端100经由管理器101.1和101.2向I/O设备103.1-103.5发送基于堆栈文件的至少一个命令/请求,并且该命令/请求由集群的所有I/O设备103.1-103.5(网络节点)接收。可以基于单个堆栈文件生成和发送多个命令/请求。命令/请求包括堆栈文件的服务标识符、约束和环境数据,或者触发I/O设备103.1-103.5访问管理器中的这些数据。I/O设备103.1-103.5中的每一个都包括如图2所示的Docker引擎,Docker引擎被配置用于读取命令并确定I/O设备是否与命令中描述的服务之一的设备约束相匹配。例如,如果唯一的设备约束是“node.labels.Type==Pump”,并且如果I/O设备103不是泵,则它忽略堆栈文件。相反,如果I/O设备103与堆栈文件的服务的(多个)设备约束相匹配,则I/O设备103的容器引擎在步骤308向注册表104发送请求,该请求标识与一服务相对应的镜像105.i,I/O设备103与该服务的设备约束相匹配。
在本文考虑的示例中,I/O设备103.2和103.4的容器引擎因此向注册表发送请求,标识镜像105.i。
在步骤309,I/O设备103.2和103.4的容器引擎从注册表104中取得镜像105.i。镜像105.i然后被容器化在I/O设备103上。
在随后的步骤310,用户经由客户端100输入运行命令,例如,该命令被转发给设备103.2上的Docker守护程序以运行包括镜像105.i的容器。运行命令包括与镜像105.i相关联的服务的标识符和I/O设备103.2的标识符。
然后在I/O设备103.2上执行/运行包括镜像105.i的容器。如果在步骤305已经描述了环境数据,则可以基于环境数据来运行该容器。
要注意的是,堆栈文件的目标可以是在几个I/O设备中或在单个设备I/O中部署几个服务。在这种情况下,上面的步骤308至310是针对每个服务无区别地执行的。
图4示出了根据本发明的一些实施例的运行容器客户端100的设备或容器客户端设备的结构。如上所述,容器客户端设备可以是台式计算机、膝上型电脑、智能手机或包括以下结构的任何设备。
该设备包括:
-用户接口401,被配置用于接收用户输入。对用户接口没有加以限制,用户接口可以是键盘、触摸板、计算机鼠标等的任意组合;
-处理器400和存储器402,被配置用于运行容器客户端,并且用于基于用户输入来获得标识至少一个服务并指定至少一个设备约束(以及可选的环境数据)的堆栈文件。存储器402可以是随机存取存储器RAM、闪存、只读存储器ROM和/或任何其他类型的存储器;处理器还被配置为基于堆栈文件来生成命令;
-网络接口,被配置用于向蜂群模式中的管理器101.1和101.2发送命令,或者向I/O设备103的容器引擎发送命令。对网络接口没有加以限制,它可以是允许连接到本地或扩展网络(诸如IP网络)的任何接口。
尽管上面已经参考特定实施例描述了本发明,但是本发明并不局限于本文阐述的特定形式。相反,本发明仅由所附权利要求限定,并且在这些所附权利要求的范围内,除了上述具体实施例之外的其他实施例同样是可能的。
此外,尽管上面已经以组件和/或功能的一些示例性组合描述了示例性实施例,但是应当理解,在不脱离本公开的范围的情况下,可以通过构件和/或功能的不同组合来提供替代实施例。此外,特别考虑到单独描述或作为实施例的一部分描述的特定特征可以与其他单独描述的特征或其他实施例的一部分进行组合。
Claims (13)
1.一种用于在输入/输出I/O设备(103.1-103.5)的集群中部署服务的方法,所述I/O设备的集群包括几个包含容器引擎(202)的I/O设备,所述方法包括经由容器客户端执行的以下操作:
-获得堆栈文件(302),其中,所述堆栈文件标识至少一个服务并指定至少一个设备约束;
-如果所述集群的I/O设备当中的至少一个第一I/O设备与所述设备约束相匹配,则基于所述堆栈文件发送(306)命令,以在所述至少一个第一I/O设备的容器堆栈上部署服务。
2.根据权利要求1所述的方法,还包括:
-由所述集群的I/O设备的容器引擎接收(307)所述命令,以及
-在接收到所述命令时,所述至少一个第一I/O设备的容器引擎从至少一个注册表中取得(308)服务的至少一个镜像,以在所述容器堆栈的容器中部署服务的镜像。
3.根据权利要求1和2中的一项所述的方法,其中,所述容器引擎(202)是Docker引擎,其中,所述容器客户端是Docker客户端,并且其中,所述方法还包括在选择服务之前的以下操作:
-通过指定至少一个管理器来创建(300)Docker蜂群;
-由所述至少一个管理器并且从几个I/O设备(103.1-103.5)的容器引擎接收(301)加入所述集群的相应的请求;
其中,进行部署的所述命令被发送到所述至少一个管理器,然后由所述管理器转发给所述集群的I/O设备的容器引擎。
4.根据权利要求3所述的方法,其中,所述管理器是通过相应的防火墙(102.1-102.5)与所述I/O设备(103.1-103.5)隔开的网络实体。
5.根据权利要求3或4所述的方法,其中,由所述管理器(101.1-101.2)或经由所述容器客户端将标识符分配给从其接收请求的所述几个I/O设备(103.1-103.5)中的每一个,并且其中,所述至少一个第一I/O设备具有与设备约束相匹配的唯一标识符。
6.根据前述权利要求之一所述的方法,其中,所述设备约束是第一设备类型,并且其中,如果所述第一I/O设备与所述第一设备类型相匹配,则在所述至少一个第一I/O设备的容器引擎上部署服务。
7.根据前述权利要求之一的方法,其中,所述服务是以下中的一个或多个:
-自动化应用的一部分;
-运行时间;
-固件;
-配置数据;
-调整数据;和/或
-校准过程。
8.根据前述权利要求之一所述的方法,其中,所述命令还包括环境数据,并且其中,基于所述环境数据来配置在所述至少一个第一I/O设备的容器引擎上部署的服务。
9.根据权利要求8所述的方法,其中,所述环境数据定义了经由所述堆栈文件部署的几个服务之间的发布/订阅机制。
10.根据权利要求9所述的方法,其中,所述发布/订阅机制是根据MQTT协议的,并且其中,在所述第一I/O设备之一的容器堆栈中部署的服务之一是MQTT代理服务。
11.一种能够由处理器运行并且包括指令的计算机程序,所述指令用于在由所述处理器运行时执行根据权利要求1至10之一所述的方法的步骤。
12.一种容器客户端设备,包括:
-用户接口(401),被配置用于接收用户输入;
-处理器(400)和存储器,被配置用于运行容器客户端,并且用于基于所述用户输入来获得标识至少一个服务并指定至少一个设备约束的堆栈文件;
其中,所述处理器还被配置为基于所述堆栈文件来生成命令,并且其中,所述容器客户端还包括网络接口,所述网络接口被配置用于:如果在包括相应的容器引擎的I/O设备的集群当中的至少一个第一I/O设备与所述设备约束相匹配,则发送所述命令以在所述至少一个第一I/O设备的容器堆栈上部署服务。
13.一种系统,包括根据权利要求12所述的容器客户端,并且包括I/O设备(103.1-103.5)的集群,其中,每个I/O设备包括致动器或传感器、操作系统和容器堆栈。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP19305454.1A EP3722951A1 (en) | 2019-04-08 | 2019-04-08 | Service deployment in a cluster of i/o devices |
EP19305454.1 | 2019-04-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111800452A true CN111800452A (zh) | 2020-10-20 |
Family
ID=66349467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010268753.6A Pending CN111800452A (zh) | 2019-04-08 | 2020-04-08 | 在输入/输出设备集群中的服务部署 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11157434B2 (zh) |
EP (1) | EP3722951A1 (zh) |
CN (1) | CN111800452A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596741B (zh) * | 2020-11-16 | 2022-08-30 | 新华三大数据技术有限公司 | 一种视频监控服务部署方法及装置 |
US11846929B2 (en) * | 2020-12-04 | 2023-12-19 | Rockwell Automation Technologies, Inc. | Automation visualization content delivery via container orchestration systems |
JP2022091301A (ja) * | 2020-12-09 | 2022-06-21 | オムロン株式会社 | 制御システムおよび制御方法 |
CN112799778A (zh) * | 2020-12-31 | 2021-05-14 | 山东浪潮通软信息科技有限公司 | 一种容器应用启动方法、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070118496A1 (en) * | 2005-11-21 | 2007-05-24 | Christof Bornhoevd | Service-to-device mapping for smart items |
US20170116042A1 (en) * | 2015-10-23 | 2017-04-27 | Futurewei Technologies, Inc. | Extension of Resource Constraints for Service-Defined Containers |
CN106790483A (zh) * | 2016-12-13 | 2017-05-31 | 武汉邮电科学研究院 | 基于容器技术的Hadoop集群系统及快速构建方法 |
CN108293049A (zh) * | 2015-11-25 | 2018-07-17 | 阿卡麦科技公司 | 在不受控制的网络中对设备的唯一识别及与其进行安全通信 |
US20180270124A1 (en) * | 2017-03-17 | 2018-09-20 | Verizon Patent And Licensing Inc. | Configuring a back-end container and a corresponding front-end proxy container on a network device |
US20190004779A1 (en) * | 2017-06-29 | 2019-01-03 | General Electric Company | Deployment of environment-agnostic services |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10691514B2 (en) * | 2017-05-08 | 2020-06-23 | Datapipe, Inc. | System and method for integration, testing, deployment, orchestration, and management of applications |
EP3418933A1 (de) * | 2017-06-19 | 2018-12-26 | Siemens Aktiengesellschaft | Edge-gerät und verfahren zum betrieb eines edge-geräts |
US10855531B2 (en) * | 2018-08-30 | 2020-12-01 | Juniper Networks, Inc. | Multiple networks for virtual execution elements |
-
2019
- 2019-04-08 EP EP19305454.1A patent/EP3722951A1/en not_active Withdrawn
-
2020
- 2020-04-02 US US16/838,336 patent/US11157434B2/en active Active
- 2020-04-08 CN CN202010268753.6A patent/CN111800452A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070118496A1 (en) * | 2005-11-21 | 2007-05-24 | Christof Bornhoevd | Service-to-device mapping for smart items |
US20170116042A1 (en) * | 2015-10-23 | 2017-04-27 | Futurewei Technologies, Inc. | Extension of Resource Constraints for Service-Defined Containers |
CN108293049A (zh) * | 2015-11-25 | 2018-07-17 | 阿卡麦科技公司 | 在不受控制的网络中对设备的唯一识别及与其进行安全通信 |
CN106790483A (zh) * | 2016-12-13 | 2017-05-31 | 武汉邮电科学研究院 | 基于容器技术的Hadoop集群系统及快速构建方法 |
US20180270124A1 (en) * | 2017-03-17 | 2018-09-20 | Verizon Patent And Licensing Inc. | Configuring a back-end container and a corresponding front-end proxy container on a network device |
US20190004779A1 (en) * | 2017-06-29 | 2019-01-03 | General Electric Company | Deployment of environment-agnostic services |
Non-Patent Citations (1)
Title |
---|
THOMAS GOLDSCHMIDT ET AL.: "Container-based architecture for flexible industrial control applications", pages 28 - 36 * |
Also Published As
Publication number | Publication date |
---|---|
US11157434B2 (en) | 2021-10-26 |
US20200320034A1 (en) | 2020-10-08 |
EP3722951A1 (en) | 2020-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11157434B2 (en) | Service deployment in a cluster of I/O devices | |
CN112119374B (zh) | 使用替代服务器名称选择性地提供相互传输层安全 | |
US11868797B2 (en) | Methods and systems for converting a related group of physical machines to virtual machines | |
Bakshi | Microservices-based software architecture and approaches | |
US8762986B2 (en) | Advanced packaging and deployment of virtual appliances | |
US11171913B2 (en) | Systems and methods for implementing address translation services | |
US8954859B2 (en) | Visually analyzing, clustering, transforming and consolidating real and virtual machine images in a computing environment | |
US20210004270A1 (en) | Scalable centralized internet-of-things manager | |
KR20170048797A (ko) | 인프라의 설치와 구성을 자동화하는 장치 및 그 방법 | |
Da Silva et al. | Internet of things out of the box: using TOSCA for automating the deployment of IoT environments | |
US20150089408A1 (en) | Method and framework for content viewer integrations | |
CN113900670B (zh) | 集群服务器应用部署系统 | |
US20230126168A1 (en) | Scalable visualization of a containerized application in a multiple-cluster and multiple deployment application environment | |
US11900089B2 (en) | Automatically configuring and deploying a software operator in a distributed computing environment from a package | |
US20220398077A1 (en) | Application to container conversion and migration | |
CN113342464A (zh) | 一种基于容器服务的应用构建部署方法 | |
KR102131669B1 (ko) | 데이터 연계 시스템 | |
CN113568755B (zh) | 一种分布式编译系统及分布式编译方法 | |
CN113608744B (zh) | 一种用于执行分布式编译的环境构建单元的建立方法及分布式编译系统 | |
Telang | Containerizing Microservices Using Kubernetes | |
US11711315B1 (en) | Dynamic endpoint resources discovery in Kubernetes clusters via stable URI locator for workflow services | |
JP7153942B2 (ja) | 情報処理装置、方法、コンピュータプログラム、及び、記録媒体 | |
US20240095006A1 (en) | Image assembly | |
US20240095002A1 (en) | Updated driver installation | |
US20230367627A1 (en) | Seamless Multi Asset Application Migration Between Platforms |
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 |