CN115039073A - 云基础设施上的自主terraform化 - Google Patents
云基础设施上的自主terraform化 Download PDFInfo
- Publication number
- CN115039073A CN115039073A CN202080094901.5A CN202080094901A CN115039073A CN 115039073 A CN115039073 A CN 115039073A CN 202080094901 A CN202080094901 A CN 202080094901A CN 115039073 A CN115039073 A CN 115039073A
- Authority
- CN
- China
- Prior art keywords
- cloud infrastructure
- availability
- subnets
- subnet
- readable medium
- 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
Images
Classifications
-
- 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
-
- 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/0803—Configuration setting
- H04L41/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
-
- 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
- H04L41/5003—Managing SLA; Interaction between SLA and QoS
- H04L41/5009—Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
-
- 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/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Environmental & Geological Engineering (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
在基础设施即代码(IaC)工具中定义云服务的处理被设计为在运行时动态确定集群、可用性域、计算节点和/或负载均衡器的数量。然后,这些值用于确定无类域间路由(CIDR)分割操作所需的子网级别的数量,以便为服务中的每个计算节点和负载均衡器节点生成子网。因为IaC语言不提供嵌套循环控制构造,因此可以使用标签元素的笛卡尔积生成和指派每个子网的标签。这些标签可以通过计数变量来修改,该计数变量每次在脚本中复制资源时递增,以模拟嵌套循环结构的效果。
Description
相关申请的交叉引用
本申请要求于2019年12月30日提交的标题为“AUTONOMOUS TERRAFORMING ONCLOUD INFRASTRUCTURES”的美国专利申请No.16/730,656的权益和优先权,该申请的全部内容通过引用并入本文。
背景技术
云计算可以提供基础设施即服务(IaaS)和平台即服务(PaaS),以允许客户在共享的基础设施上安全地运行任务关键型企业应用和数据库工作负载。这些云计算基础设施可以托管各种应用,并且该行业正在迅速转向基于微服务的框架来提供基于云的技术。例如,微服务项目可以托管在容器化项目的集群(诸如Kubernetes引擎)中,所有这些都通过保证租户之间的数据安全的共享的云基础设施进行托管和访问。
当客户开始将他们的计算基础设施移动到云的处理时,云基础设施可以为该客户创建新的租赁。一旦租赁被创建,客户就可以使用控制台web应用来创建所需的环境构建块,以实现托管在云环境中的任何微服务项目的期望功能。在现有技术中,新租户可以通过选择现有技术并将它们添加到他们的云足迹(footprint)来手动创建这些构建块。替代地,一些系统允许租户使用自动化脚本技术来组织其云足迹的构建块。自动化脚本可以用允许用户使用高级配置语言定义和供给数据中心基础设施的任何“基础设施即代码”软件工具编写。可以执行这些语言编写的脚本来生成云足迹的构建块,这可以大大简化供给处理。但是,由于这些脚本语言旨在表示云硬件/软件的实例,因此它们通常不提供可以用于编写跨许多不同应用的健壮、可重用代码的特征和代码构造。
发明内容
基础设施即代码(IaC)工具可以用于声明要作为云基础设施中服务的一部分供给的资源。但是,IaC工具使用指定要供给的资源的声明性语言,而不是执行一组命令和控制结构的命令式语言。因此,IaC脚本可以定义要为特定服务供给的特定资源和结构,并且如果不对脚本进行重大更改,那么脚本就不容易被重新用于不同的服务或供给任务。
本文描述的实施例呈现用于在IaC工具中定义云服务的处理,其被设计为在运行时动态确定集群、可用性域、计算节点和/或负载均衡器的数量。然后,使用这些值来确定无类域间路由(CIDR)分割操作所需的子网级别的数量,以便为服务中的每个计算节点和负载均衡器节点生成子网。因为IaC语言不提供嵌套循环控制构造,因此可以使用标签元素的笛卡尔积生成和指派每个子网的标签。这些标签可以通过计数变量来修改,该计数变量每次在脚本中复制资源时递增,以模拟嵌套循环结构的效果。
脚本可以接收或确定可以随着每个被供给的服务而改变的基线参数集。这些参数可以在脚本执行时在运行时被接收或确定,并且这些参数可以包括作为服务的一部分供给的集群的数量、每个集群中的可用性域的数量、每个可用性域中的计算节点的数量、每个集群中的负载均衡器的数量,等等。然后,脚本可以确定多个CIDR级别,这些CIDR级别将保证为要供给的计算节点和/或负载均衡器节点提供足够数量的子网,并为未来的扩展空间提供额外的子网。不是为每个不同的供给任务计算这些值并将其硬编码到脚本中,而是可以在运行时提供和计算这些值,使得脚本可以在不修改的情况下重复用于任何类似的供给任务。
将计算的子网和标签指派给每个声明的资源通常需要代码中的嵌套循环控制结构。但是,由于IaC工具通常不提供此类结构,因此脚本可以通过计算包含每个子网标签的部件的向量的笛卡尔积来模拟嵌套循环的操作。例如,使用可用性域和集群标签生成的子网标签可以通过将这些标签向量交叉乘在一起,以生成可用性域和集群的所有组合的列表来生成。还可以修改这些标签以包含用于在脚本中重现声明的资源的计数器值。
附图说明
可以通过参考说明书的其余部分和附图来实现对各种实施例的性质和优点的进一步理解,其中在几个附图中使用相同的附图标记来指代相似的部件。在一些情况下,子标签与附图标记相关联以表示多个相似部件之一。当引用附图标记而不指定现有子标签时,旨在引用所有此类多个相似部件。
图1图示了根据一些实施例的结构租赁和云环境的体系架构设计。
图2图示了根据一些实施例的单个网络地址如何可以被“分割”成多个不同的网络。
图3A图示了根据一些实施例的指定可以由算法确定和/或接收的集群的数量的第一输入。
图3B图示了根据一些实施例的指定可以由算法确定和/或接收的可用性域的数量的第二输入。
图3C图示了根据一些实施例的指定可以由算法确定和/或接收的工作者子网的数量的第三输入。
图3D图示了根据一些实施例的指定可以由算法确定和/或接收的负载均衡器子网的数量的第四输入。
图4图示了根据一些实施例的笛卡尔积可以如何用于从多个不同的变量形成单个标签列表。
图5图示了根据一些实施例的如何使用模算术来计算笛卡尔积。
图6A图示了根据一些实施例的用于在云基础设施中供给服务的方法的流程图以及伴随的伪代码的第一部分。
图6B继续根据一些实施例的在云基础设施中供给服务的方法的流程图。
图6C继续根据一些实施例的用于在云基础设施中供给服务的方法的流程图。
图6D继续根据一些实施例的用于在云基础设施中供给服务的方法的流程图。
图6E完成了根据一些实施例的用于在云基础设施中供给服务的方法的流程图。
图7图示了根据一些实施例的用于在运行时为可变数量的子网供给对应标签的方法的流程图,该方法可以以任何IaC语言实现。
图8图示了用于实现一些实施例的分布式系统的简化框图。
图9图示了系统环境的部件的简化框图,通过该系统环境,由实施例系统的部件提供的服务可以作为云服务来供应。
图10图示了其中可以实现各种实施例的示例性计算机系统。
具体实施方式
云计算环境可以包括数百个单独的构建块,每个构建块表示独特的硬件和/或软件技术。云计算基础设施的租户可能希望设计非常复杂的基于云的应用,这些应用可以处理大量web流量并为数百万个人用户存储大量信息。这些基于云的应用可以表示不同云技术之间交互的巨大复杂性。但是,为了简化复杂应用的设计和供给处理,许多现代的基于云的应用可以被设计为微服务应用。微服务应用使用单个、简单的微服务作为复杂技术的构建块。在设计大型应用时,租户可能会将许多单独的微服务构建块拼凑在一起,以形成应用的整体功能。这个处理可以简化大型复杂的设计任务,使得可以通过简单的构建块来组装它们。
当设计基于云的应用时,可以在云环境中供给设计的各个硬件/软件部件,并且可以使应用对用户可用。云供给是将云提供商的资源和服务分配给特定租户。本公开侧重于租户或提供商在云服务中自动供给应用的能力。例如,在此模型中,租户可以通过web界面或门户选择和组装其云应用的构建块。这种供给模型使用户可以直接控制应用在云环境中的构建和组织方式。这通常减轻了云提供商支持服务与客户之间交互的需求。替代地,客户可以自行供给云应用,然后云环境可以自动接收客户的指令并供给所需的资源,而无需与处理进行广泛的管理交互。
尽管在供给处理期间使用了微服务和简化的构建块,但一些应用的复杂性对于用户来说可能仍然非常困难。因此,一些实施例可以使用脚本语言来实现“基础设施即代码”(IaC)环境以管理和供给云应用。IaC语言通过机器可读的定义文件来供给计算机数据中心,作为物理硬件配置或交互式配置工具的替代或附加。IaC语言可以管理裸机服务器以及与配置资源相关联的虚拟机。这允许用户使用代码对基础设施进行建模,这进而使他们能够使用软件最佳实践和可重用的编码技术来设计、实现和部署应用基础设施。IaC可以被云计算体系架构摄取,云计算体系架构然后可以组装代码声明的构建块,并基于代码定义以连接的方式布置构建块。
尽管使用IaC技术具有明显的优势,但存在该语言固有的各种限制。由于IaC语言旨在表示云基础设施的实际部分及其互连性,因此这些语言通常被设计为使得它们缺少真正软件编程语言中常见的控制结构。IaC语言中的这些固有限制使得简单的脚本难以跨多个基础设施进行扩展。这些语言并非设计为适应于现有和不断发展的基础设施可能需要的新变化。例如,无类域间路由(CIDR)分割所需的值是在构建云基础设施时手动预先计算并硬编码到脚本中的。这种方法需要人工干预来重新计算更改、更改代码并重新执行脚本,然后才能将代码重用于新应用。这个处理非常耗时、需要人工干预,并且增加了将缺陷注入到供给处理中的机会。与本公开中描述的新算法相比,用于使IaC语言更通用和可重用的其它技术各自具有限制其有效性或可重用性的缺点。例如,大多数现有解决方案通过简单地编写冗余代码来解决这个问题。
本文描述的实施例图示了可以用于克服IaC语言的现有限制的新编码技术。例如,已经使用多个迭代器开发了新的CIDR分割算法,该算法可以生成任意大小的完整基础设施蓝图,无需任何手动计算或更改通用代码。输入变量的任何更改都会自动触发使用新算法的重新计算,并且脚本可以根据需要触发云基础设施的重新调整。这种类型的编程和执行是不可能通过以前的行业解决方案来解决这个技术问题的。该解决方案使用现有的IaC语言能力和新的编码技术来增强超出最初预期的语言能力。
图1图示了根据一些实施例的结构租赁和云环境的体系架构设计。体系架构100提供了可以使用IaC语言指定的体系架构的示例。当云基础设施接收并执行以IaC语言编写的脚本时,可以根据由IaC语言脚本定义的基础设施来供给体系架构100。因为IaC脚本是可以容易地解释并与云基础设施中的构建块技术匹配的正式语言(formal language),因此体系架构100可以由云基础设施自动供给而无需大量人工参与。IaC脚本可以将各个技术布置为体系架构,并且云基础设施可以将IaC脚本视为供给脚本中声明的每种技术的蓝图。
图1中的体系架构100仅作为示例提供,并不意味着限制。体系架构100中的部件可以提供可以由IaC脚本声明的技术构建块的示例。虽然在图1中图示了离散数量的每种技术,但应该理解的是,下面描述的算法允许图1中的每种技术以任意数量和任意组合进行缩放,而不受限制。体系架构100提供了对特定技术(例如,可用性域、负载均衡器、集群、工作者子网等)如何通过本文描述的实施例进行缩放的描述。
体系架构100包括多个可用性域102。每个可用性域102可以包括构建整个应用的微服务的一部分。可用性域102可以包括冗余服务,使得如果可用性域102之一变得不可用,那么可用性可以被维持。可用性域102可以彼此隔离、容错并且极不可能同时发生故障。另外,可用性域102可以对应于位于不同地理位置(诸如,不同区域)的不同物理硬件组件。替代地,同一区域内的可用性域可以通过低时延、高带宽网络相互连接,以便在多个区域中构建复制系统来实现高可用性和灾难恢复。
许多不同的技术可以是每个可用性域102的一部分。例如,每个可用性域102可以包括一个或多个子网104。每个子网104可以被指派特定的子网地址。确定子网104的精确数量可以被确定以便正确地分割顶级网络地址。这个称为CIDR分割的过程将在下面更详细地描述。每个子网104可以将指派的子网地址用于入站/出站网络访问和子网104之间的通信。
子网104可以托管在每个集群中找到的资源。虽然可以在子网104内托管许多不同的资源,但是在图1中作为示例图示了两个特定资源。一些子网104可以包括计算节点108。计算节点108也可以被称为工作者节点。计算节点108执行与对应的工作者子网相关联的动作。例如,工作者子网104a的网络地址可以用于调用由计算节点108a执行的服务。集群中的一些计算节点108可以被指定为节点池106。包括计算节点108的子网104可以被称为工作者子网。
除了保持计算节点108之外,子网104可以替代地包括负载均衡器112。负载均衡器112可以在每个可用性域102中的不同工作者子网之间接收和分发流量。这些子网可以被称为负载均衡器子网。
每个子网104也可以与安全节点114相关联。安全节点114可以管理每个工作者子网104的安全策略。在一些实施例中,安全节点114可以使用访问列表110来管理可以访问对应的安全节点114的系统和/或用户。
最后,图1中所示的体系架构100可以包含在单个集群中。可以形成与图1中所示相同的多个集群,以实现具有高可用性的服务。
可以通过向云基础设施提供IaC脚本来供给体系架构100。然后,该结构可以解释脚本中列出的技术,并自动供给这些技术。可以使用任何IaC语言,诸如Pulumi、Chef、Otter、Puppet SaltStack、CFEngine、DSC、Paco等。作为示例,本文描述的实施例可以使用由Hashicorp提供的Terraform工具150。这些工具中的每一个都可以使用声明性语言来定义应作为云基础设施的一部分供给的各种技术。作为声明性语言,这些IaC工具通常不支持可能在其它语言中使用的高级控制结构。例如,Terraform工具150不支持任何类型的循环机制。替代地,可以使用资源的count元参数将资源实例化定义的次数。这可以防止工具使用任何形式的嵌套循环,这些嵌套循环可能有助于使用多个变量进行赋值或计算。此外,Terraform工具没有提供对编写代码时未知的可变数量子网执行CIDR分割的直接方法。
图2图示了根据一些实施例的单个网络地址202可以如何被“分割”成多个不同的网络。CIDR分割使用地址聚合将单个网络地址转换成多个可寻址网络。如上面关于图1所描述的,每个子网104可能需要它们自己的网络地址,该地址作为顶级网络地址202的子网而存在。CIDR分割的概念基于需要的网络数量将顶级网络地址202细分为多个子网。在本公开之前,从顶级网络地址202导出多个子网地址是静态操作。换句话说,用户将确定所需的子网数量,然后相应地划分顶级网络地址202。在编写脚本时,这些值被硬编码到Terraform脚本中,并且该服务是为在云基础设施中进行供给而设计的。虽然未来的脚本可能基于现有的脚本,但硬编码的值总是需要在新的脚本中进行更改,以便扩展或缩小子网数量的大小。这需要人工干预,人工干预容易出错并降低了代码的整体可用性。它还增加了需要保存的脚本数量,因为每个脚本只能用于对应的特定供给项目。
本文描述的实施例通过使用将CIDR分割概念化为二叉树的新算法和方法解决了这些和其它技术问题,当用户更改可用性域、集群、工作者子网和/或要供给的负载均衡器的数量时,该二叉树可以被动态地增大和/或减小大小。图2图示了如何基于级别指定将顶级网络地址202分割成可变数量的子网。例如,如果供给的服务需要两个子网,那么可以执行级别1(211)分割操作。如果要使用多达四个子网,那么可以执行级别2(212)分割操作,依此类推。
可以基于所需的最小子网数量使用各种级别。图2中所示的级别211、212、213、214基于以2为底的指数。例如,级别3(213)对应于23=8个子网。类似地,级别4(214)对应于24=16个子网。为了确定分割操作所需的级别数量,Terraform脚本可以确定所需的最小子网数量,然后选择至少提供那么多子网的级别。例如,如果供给的服务需要六个子网,那么脚本可以动态地确定应在顶级网络地址202上进行级别3(213)分割操作。这保证将提供所需数量的子网,以及可以用于未来扩展的附加子网。
本文描述的实施例允许脚本在脚本被执行时动态地确定CIDR分割操作的级别。正如下面详细描述的,这不需要在脚本中包含任何硬编码值。而是,脚本可以使用期望数量的集群、可用性域、工作者子网、负载均衡器等,在运行时计算分割操作所需的级别。此外,随着项目的扩大和缩小,可以通过简单地更改项目中的例如可用性域的数量来重新计算子网地址。然后,脚本可以自动重新计算分割操作中要使用的级别数量。
这些技术不仅使代码在单个项目的生命周期内可扩展,而且它们还允许代码被重用于任何规模的未来项目。代码可以接受用户在服务设计处理期间指定的值。例如,用户通常指定应该成为其项目一部分的负载均衡器的数量或可用性域的数量。但是,用户没有指定应该用于生成正确数量的子网地址的CIDR分割操作的级别。这是用户不太可能理解的低级细节。替代地,子网地址必须硬编码到Terraform脚本中,从而使得代码无法用于没有相同特定体系架构的任何项目。本文描述的实施例允许用户动态地更改对脚本的输入,从而在图2中所示的不同级别211、212、213、214上下移动。简而言之,这些实施例实现了以前不可用的自动CIDR分割形式。
下面的图展示了可以由脚本确定和/或提供的不同输入。然后,本公开将描述用于确定分割级别并用于自动生成对应子网的算法。图3A图示了根据一些实施例的指定可以由算法确定和/或接收的集群302的数量的第一输入。如上文在图1中所描述的,每个集群302可以包括一个或多个可用性域,并且每个可用性域可以包括任意数量的工作者子网和/或负载均衡器。集群302的数量可以在本文中使用变量c作为下文描述的等式中的简写来指代。集群302的数量可以由用户明确指定为脚本的输入。替代地或附加地,集群302的数量也可以由用户提供的其它值和/或操作来确定。例如,用户可以为他们的项目从多个可用配置中选择预定配置。这些配置可以对应于预定数量的集群,并且脚本可以使用查找表、数据库等将配置转换成集群302的数量。
图3B图示了根据一些实施例的指定可以由算法确定和/或接收的多个可用性域304的第二输入。如上文在图1中所描述的,可以提供每个可用性域102来为正在供给的服务提供高可用性。可以跨可用性域102复制功能,使得如果一个可用性域202b变得不可用,那么仍然可以通过其它可用性域202a、202c来提供服务。可用性域304的数量可以使用变量a作为下文描述的等式中的简写来表示。可用性域304的数量可以由用户提供作为脚本的输入。例如,用户可以指定三个可用性域102作为输入。替代地,用户可以选择服务的可用性级别(例如,高、中、低)。然后脚本可以查找或计算对应于为该特定项目选择的可用性级别的可用性域102的数量。注意的是,可用性域304的数量不需要指定整个项目中可用性域的总数。替代地,可用性域304的数量可以替代地在每个集群的基础上提供。换句话说,可用性域的数量304可以表示每个集群中可用性域的数量。
例如,用户可以从多个预定义配置中选择配置。这些配置可以作为Terraform脚本运行时执行的一部分呈现给用户,使得可以在运行时输入值。每个配置可以与服务水平协议(SLA)相关联,该服务水平协议指定服务所需的可用性级别。系统可以导出满足SLA中要求的可用性级别可能需要的可用性域的数量。注意的是,该相同过程可以用于确定集群的数量、确定计算节点的数量和/或确定负载均衡器的数量。
在一些实施例中,可以在运行时动态地接收这些值作为脚本的输入。这允许重用脚本来定义具有不同特性的不同服务,这些服务需要不同数量的集群、可用性域、计算节点和/或负载均衡器。例如,在使用脚本来供给第一服务之后,可以使用相同的脚本来供给不同的第二服务。通过在运行时提供不同数量的集群、可用性域、计算节点和/或负载均衡器作为脚本的输入,可以供给具有不同子网级别、不同顶级网络地址和/或其它不同拓扑的不同服务。这允许重复使用相同的脚本来供给不同的服务,而无需编辑脚本。以前,如果这些参数中的任何一个参数不同,那么每个被供给的服务都需要不同的脚本。
在一些实施例中,这些值可以在供给处理已经发生之后动态地更改。例如,可以执行脚本以通过接收运行时值来供给服务。在服务供给之后,客户可能希望更改可用性级别、集群位置/数量和/或任何其它参数。可以再次执行相同的脚本,而不是生成新脚本,并且可以接收对输入的更改以重新计算子网级别的数量并基于可用性域、集群、计算节点、负载均衡器等的新数量重新生成子网。
图3C图示了根据一些实施例的指定可以由算法确定和/或接收的工作者子网104的数量的第三输入。如上文在图1中所述,可以为每个工作者子网104指派来自图2中描述的CIDR分割操作的子网地址之一。每个工作者子网104可以包括计算节点108。工作者子网306的数量可以使用变量w作为下文描述的等式中的简写来表示。与可用性域304的数量的情况一样,工作者子网306的数量可以在每个可用性域的基础上提供。换句话说,工作者子网306的数量可以表示每个可用性域中工作者子网的数量。例如,图3C中每个可用性域的工作者子网306的数量是一个工作者子网。工作者子网306的数量可以由Terraform脚本接收和/或确定。例如,用户可以提供每个可用性域的工作者子网306的数量作为脚本的输入。替代地,用户可以选择要在可用性域中执行的功能,并且脚本可以自动确定设计中应该包括哪些工作者子网,从而可以确定工作者子网306的数量。
图3D图示了根据一些实施例的指定可以由算法确定和/或接收的负载均衡器子网308的数量的第四输入。如上文在图1中所描述的,每个负载均衡器子网可以包括负载均衡器112,该负载均衡器112管理流量并将流量路由到工作者子网。负载均衡器子网的数量可以使用变量b作为下文描述的等式中的简写来表示。此数字可以指定每个集群的负载均衡器子网的数量。通常,用户不需要将负载均衡器子网组织到特定的可用性域中,而是只需指定每个集群中所需的负载均衡器总数。这个数字可以被指定为脚本的输入。替代地,负载均衡器子网308的数量可以由脚本在运行时确定。例如,用户可以为服务指定一个或多个预定义配置,并且脚本可以从这些配置中推导出所需负载均衡器的数量。
基于这些输入,可以使用以下算法来确定要用于供给的服务的子网的总数。在一个步骤中,算法可以计算要供给的工作者子网的总数。工作者子网的总数可以基于集群的总数302、每个集群的可用性域的总数304和每个可用性域的工作者子网的总数306来计算。例如,可以使用以下等式计算工作者子网的总数。
wt=w·a·c 等式1
在等式1中,wt表示要在整个服务中供给的工作者子网的总数。
在另一个步骤中,算法可以计算要供给的负载均衡器子网的总数。负载均衡器子网的总数可以基于集群的总数302和每个集群的负载均衡器的总数308来计算。例如,可以使用以下等式计算负载均衡器子网的总数。
bt=b·c 等式2
在等式2中,bt表示要在整个服务中配置的负载均衡器子网的总数。
在另一个步骤中,算法可以计算要在项目中供给的子网的总数。子网的总数可以基于工作者子网的总数和负载均衡器子网的总数来计算。例如,可以使用以下等式计算子网的总数。
s=wt+bt 等式3
在等式3中,s表示要在整个服务中指派的子网总数。
接下来,算法可以计算顶级网络地址应该被分割的级别。如上面关于图2所描述的,级别可以对应于以2为底的指数,该指数确定从顶级网络地址推导出的子网地址的数量。在一些实施例中,升高到与计算出的分割级别数量对应的幂的以2为底的指数可以大于或等于要在服务中指派的子网的总数(例如,2^(子网级别数量))。为了确定级别,可以计算子网总数的以2为底的对数,然后可以对以2为底的对数的结果进行上限操作(例如,四舍五入到下一个最大整数)以确定级别。例如,一个具体实施例可以使用以下等式来确定级别数量。
2n≥wt+bt 等式4
log2(2n)≥log2(w·a·c+b·c) 等式5
n≥log2(c(w·a+b)) 等式6
n≥log2(c)+log2(w·a+b) 等式7
由于n∈N,因此可以将上限操作应用于等式7以计算分割操作的最终级别n。
现在可以使用级别数量n来对顶级网络地址执行分割操作。在一些实施例中,算法可以通过将网络地址划分成2n个不重叠的子网来手动计算每个子网的正确IP地址。取决于用于定义体系架构的特定IaC工具,可能存在自动执行此操作的预定义函数。例如,Terraform工具提供cidrsubnet(prefix,newbits,netnum)函数,该函数可以用于对每个子网执行这种数学操作。在这个功能中,可以使用以下输入。
·prefix是从顶级网络地址推导出的预定值。
·netnum是值∈[0,2n-1],表示图2中第n级别的单个子网地址的索引。
·newbits是n的动态计算值,表示确保有足够的CIDR块被指派给每个子网的最小值。
在这个阶段,可用子网可以被指派给图1的体系架构中描述的每个资源。在Terraform工具中,这可以使用资源的单个count元参数来完成。例如,通过在Terraform代码中的资源声明之后插入count=num_worker_subnets行,可以为每个工作者子网复制一次资源。应该强调的是,IaC语言和工具通常提供有限的循环机制,该机制只允许复制单个级别的资源。
但是,在实践中,还基于各种变量的组合生成和/或指派标签给每个资源是有用的。例如,一些实施例可以根据每个子网的集群和可用性域的组合来标记每个子网。在处理需要迭代以便为每个资源生成标签的多个变量时,可能需要多个循环级别。但是,如上所述,IaC语言不提供这种嵌套循环结构控件作为语言的原生特征。因此,为了基于多个变量(例如,集群、可用性域等)指派标签,每个此类标签都必须手动计算并硬编码到脚本中。如上所述,脚本中的硬编码值限制了设计的可重用性和可扩展性,并且在任何时候更改设计时都需要人工干预。
本文描述的实施例通过将各种标签部件一起收集到标签向量中并执行模算术以生成笛卡尔积来解决该问题。然后笛卡尔积可以使用Terraform工具中的count元参数模仿的单循环特征。
图4图示了根据一些实施例的笛卡尔积可以如何用于从多个不同的变量形成标签的单个列表。包括集群标签列表402的第一向量可以包括被称为生产、开发、分级、质量保证等的集群。包括可用性域列表404的第二向量可以包括由数字标识符(例如,AD-1、AD-2等)引用的域。以前,脚本可以将这两个标签向量组合形成的所有对静态定义为硬编码的单个标签向量,然后可以将其应用于每个子网。但是,这限制了脚本的可重用性。这是必要的,因为虽然传统编程语言提供嵌套循环使得集群402可以在外循环中迭代并且可用性域404可以在内循环中迭代,但IaC工具通常不提供这样的控制结构。
如图4中所示,一些实施例通过使用模算术来近似嵌套循环控制结构。这允许脚本接收任意数量的集群、可用性域或其它标签作为输入,然后动态生成可以使用Terraform工具中的count元自变量应用的单个标签向量406。使用下面描述的算法,可以生成笛卡尔积,使得它包括用于两个输入标签向量中的每一个的一组所有有序对。应该强调的是,此处使用的两个标签向量仅作为示例。其它实施例可以使用多于两个向量标签,并且可以为每个标签组合计算笛卡尔积以形成可以在没有嵌套循环的情况下应用的单个标签向量。
在图4中,笛卡尔积已经生成了标签向量406,其包括来自集群402和可用性域404的标签的独特配对中的每一个。图5图示了根据一些实施例的如何使用模算术来计算笛卡尔积。在这个示例中,笛卡尔积被表示为具有二维坐标的网格。二维坐标表示将在嵌套循环中使用的索引。例如,生产集群将以索引0循环,循环内的开发集群以索引1循环,分级集群将以索引2循环,依此类推。对于内部循环,每个可用性域将使用从0递增到2的索引进行循环。
但是,代替使用该嵌套循环处理,可以使用图4中所示的结果标签向量406中的单个索引来索引来自笛卡尔积的每个结果对。单个索引与使用模操作的嵌套索引相关。例如,表示集群标签的外循环中的索引通过以下等式与索引相关。
变量a对应于输入向量中的值的数量,在这种情况下为3,并且indexc对应于集群索引。类似地,表示可用性域标签的内循环的索引可以通过以下等式与索引相关。
indexad=index mod a 等式10
indexad对应于可用性域索引。
图6A-图6E图示了实现上述算法的Terraform脚本的详细示例。该流程图和伪代码是作为示例提供的,并不意味着限制。上述算法可以使用本公开以任何IaC语言来实现。
图6A图示了根据一些实施例的用于在云基础设施中供给服务的方法的流程图以及伴随的伪代码的第一部分。该方法可以包括从云基础设施接收状态变量和收集数据(602)。如上所述,一些实施例可以接收定义要供给的资源的每个变量作为脚本的输入。在这个示例中,这包括可用性域的数量、每个域中的工作者子网的数量、每个集群的负载均衡器子网的数量等。在这个示例中,可以假设每个可用性域的工作者子网的数量为1,并且可以假设每个集群的负载均衡器子网的数量为2。用于接收这些值的伪代码601可以包括将这些值中的每个值指派给变量。伪代码601还使用FastConnect实用程序,它是使用公共互联网连接到云基础设施和其它在线服务的网络连接替代方案。
伪代码601还包括用于定义CIDR级别的数目的上述算法的实现。例如,上面的公式8在伪代码601的最后一行实现:
num_CIDR_levels=ceil(log(local.num_worker_subnets+local.num_lb_subnets,2)).
这行伪代码计算负载均衡器和工作者节点所需的子网总数。该总数作为以2为底的对数函数的输入提供,其结果被提供给上限函数以确定服务的CIDR级别的最小数量。
该方法还可以包括为服务供给网关(604)。伪代码603图示了如何定义服务网关、互联网网关、NAT网关等的示例。如上所述,伪代码603的语法可以特定于Terraform工具,并且因此在与其它工具一起工作时可能更改。
图6B继续根据一些实施例的在云基础设施中供给服务的方法的流程图。该方法可以附加地包括为服务配置路由表和安全规则(606)。伪代码605图示了用于声明默认路由表和负载均衡器安全列表的示例。注意的是,在实际项目中可能会声明许多附加的安全和/或路由资源。伪代码605中提供的示例仅是表示性的,并且可以用作为服务的不同方面生成其它安全规则、安全列表和路由表的模板。
图6C继续根据一些实施例的用于在云基础设施中供给服务的方法的流程图。该方法可以附加地包括确定是否所有工作者子网都已被供给(608)。如果有剩余的工作者子网要供给,那么该方法可以包括使用上述CIDR分割算法计算子网地址(610)。然后可以为每个子网供给对应的CIDR块(612)。可以为每个工作者子网重复此循环。
如在伪代码614中显而易见的,流程图中所示的循环构造不能在Terraform伪代码中实现。替代地,该代码提供了元自变量,该自变量将资源复制定义的次数。例如,资源声明后的第一行伪代码包括以下内容:
count=local.num_worker_subnets。
通过将工作者子网的数量指派给count变量,伪代码614可以指示Terraform工具为每个工作者子网生成oci_core_subnet资源。然后,伪代码614使用上述cidrsubnet()和用于在上面计算的指定级别对每个子网进行索引的count.index变量。
伪代码614还通过计算集群名称和可用性域名之间的笛卡尔积来实现上述嵌套循环算法。这些存储在由count.index变量索引的availability_domain数组中。例如,以下命令为每个子网生成标签数组:
availability_domain=setproduct(local.clusters,local.ads)[count.index][1].
这个笛卡尔积不是执行传统的嵌套循环,而是为子网生成标签列表。最后,可以使用伪代码614中所示和上面详细描述的模算法将标签指派给对应的子网。
可以执行图6C中所示的处理以指派项目中的每个工作者子网。虽然没有具体说明,但是可以针对每个负载均衡器子网重复图6C中所示的处理。例如,可以遵循类似的过程来基于上面计算出的级别对顶级网络地址进行分割,并且可以使用笛卡尔积生成标签列表。但是,可以移动cidrsubnet()函数的netnum参数,使得将负载均衡器子网指派给工作者子网之后的CIDR块。
图6D继续根据一些实施例的用于在云基础设施中供给服务的方法的流程图。该方法还可以包括基于上述集群的数量确定是否已经供给足够的集群(616)。如果仍要供给集群,那么该方法可以确定需要哪些负载均衡器子网(618),并为集群供给正确的负载均衡器(620)。如上所述,可以使用count变量在伪代码622中对该循环过程进行建模,以动态生成指定数量的集群。伪代码622的第二部分可以将负载均衡器子网指派给每个集群。
图6E完成了根据一些实施例的用于在云基础设施中供给服务的方法的流程图。该方法还可以包括确定是否已经供给足够的节点池(624)。只要需要供给附加的节点池,该方法就可以包括使用ChunkList操作来划分子网以指派到节点池中(626)。在伪代码630中,Terraform工具中的ChunkList函数可以用于将单个列表拆分为固定大小的块,从而返回列表的列表。该方法然后可以包括向节点池供给对应的工作者子网(628)。在伪代码630中,每个节点池具有在families映射中描述的每个子网的指定数量的节点。
虽然上面的流程图和描述特定于Terraform工具,但是用于生成和指派CIDR子网的算法和用于将标签应用于子网的模拟嵌套循环可以用任何IaC语言实现。图7图示了根据一些实施例的可以用任何IaC语言实现的用于在运行时为可变数量的子网供给对应标签的方法的流程图。该方法可以包括确定要作为云基础设施中的服务的一部分来供给的集群的数量(702)。该方法还可以包括确定每个集群中的可用性域的数量(704)、确定每个可用性域中的计算节点的数量(706)和/或确定每个集群中的负载均衡器的数量(708)。在这些步骤的每一个中,这些值可以通过作为脚本的输入被接收、通过在脚本中存储为常数来确定和/或通过脚本中的计算或函数来确定。例如,可以基于用户选择的预定配置来推导或查找每个值。在一些实施例中,这些值可以如上文关于图3A-图3B所述或图6A中所示来确定。
该方法还可以包括基于集群的数量、可用性域的数量、计算节点的数量和负载均衡器的数量来计算子网级别的数量(710)。计算节点可以对应于上述工作者子网。每个负载均衡器也可以被描述为负载均衡器子网。子网级别的数量可以如上文关于等式2-等式8和关于图6C所描述的那样计算。该方法还可以包括基于子网级别的数量生成多个子网(712)。该步骤可以使用上述cidrsubnet函数来执行。替代地或附加地,该步骤可以通过基于2n个细分在数学上细分顶级网络地址来执行。该方法还可以包括将多个子网指派给云基础设施中的计算节点和负载均衡器(714)。如上所述,工作者子网和负载均衡器子网中的每一个可以基于上述笛卡尔积和模算术算法被指派标签。
应该认识到的是,图7中所示的具体步骤提供了根据各种实施例在运行时供给具有对应标签的可变数量的子网的特定方法。根据替代实施例,也可以执行其它步骤序列。例如,本发明的替代实施例可以以不同的顺序执行上述步骤。此外,图7中所示的各个步骤可以包括多个子步骤,这些子步骤可以按照适合于各个步骤的各种顺序来执行。此外,取决于特定应用,可以添加或移除附加步骤。本领域普通技术人员将认识到许多变化、修改和替代。
本文描述的每个方法可以由计算机系统实现。这些方法的每个步骤可以由计算机系统自动执行,和/或可以设有涉及用户的输入/输出。例如,用户可以为方法中的每个步骤提供输入,并且这些输入中的每一个可以响应于请求这种输入的具体输出,其中输出是由计算机系统生成的。可以响应于对应的请求输出而接收每个输入。此外,输入可以从用户接收、作为数据流从另一个计算机系统接收、从存储器位置检索、通过网络检索、从web服务请求等。同样,可以将输出提供给用户、作为数据流提供给另一个计算机系统、保存在存储器中、通过网络发送、提供给web服务等。简而言之,本文描述的方法的每个步骤都可以由计算机系统执行,并且可以涉及与计算机系统之间可能涉及或可能不涉及用户的任何数量的输入、输出和/或请求。可以说不涉及用户的那些步骤是由计算机系统自动执行的,而无需人工干预。因此,根据本公开将理解的是,本文描述的每种方法的每个步骤可以被更改为包括去往和来自用户的输入和输出,或者可以由计算机系统自动地完成而无需人为干预,其中任何确定都是由处理器做出的。此外,本文描述的每个方法的一些实施例可以被实现为存储在有形的,非暂态的存储介质上以形成有形的软件产品的指令集。
图8描绘了用于实现实施例之一的分布式系统800的简化图。在所示的实施例中,分布式系统800包括一个或多个客户端计算设备802、804、806和808,每个客户端计算设备通过一个或多个网络810执行和操作客户端应用,诸如web浏览器、专有客户端(例如,Oracle Forms)等。服务器812可以经由网络810与远程客户端计算设备802、804、806和808通信地耦合。
在各种实施例中,服务器812可以适于运行由系统的一个或多个部件提供的一个或多个服务或软件应用。在一些实施例中,这些服务可以作为基于web的服务或云服务或者在软件即服务(SaaS)模型下被供应给客户端计算设备802、804、806和/或808的用户。操作客户端计算设备802、804、806和/或808的用户进而可以利用一个或多个客户端应用来与服务器812交互以利用由这些部件提供的服务。
在图中描绘的配置中,系统800的软件部件818、820和822被示出为在服务器812上实现。在其它实施例中,系统800的一个或多个部件和/或由这些部件提供的服务也可以由客户端计算设备802、804、806和/或808中的一个或多个来实现。然后,操作客户端计算设备的用户可以利用一个或多个客户端应用来使用由这些部件提供的服务。这些部件可以用硬件、固件、软件或其组合来实现。应该认识到的是,各种不同的系统配置是可能的,这些配置可能与分布式系统800不同。图中所示的实施例因此是用于实现实施例系统的分布式系统的一个示例,而不旨在是限制性的。
客户端计算设备802、804、806和/或808可以是便携式手持设备(例如,蜂窝电话、计算平板电脑、个人数字助理(PDA))或可穿戴设备(例如,Google头戴式显示器),运行诸如Microsoft Windows和/或各种移动操作系统(诸如iOS、Windows Phone、Android、BlackBerry 10、Palm OS等)的软件,并且启用互联网、电子邮件、短消息服务(SMS)、或其它通信协议。客户端计算设备可以是通用个人计算机,作为示例,包括运行各种版本的Microsoft的个人计算机和/或膝上型计算机。客户端计算设备可以是运行各种可商业获得的或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统,诸如例如Google Chrome OS)中的任何操作系统的工作站计算机。替代地或附加地,客户端计算设备802、804、806和808可以是能够通过(一个或多个)网络810进行通信的任何其它电子设备,诸如瘦客户端计算机、启用互联网的游戏系统(例如,具有或不具有手势输入设备的MicrosoftXbox游戏控制台)和/或个人消息传送设备。
虽然示出了具有四个客户端计算设备的示例性分布式系统800,但是可以支持任何数量的客户端计算设备。其它设备(诸如具有传感器等的设备等)可以与服务器812交互。
分布式系统800中的(一个或多个)网络810可以是本领域技术人员熟悉的、可以使用各种可商业获得的协议中的任何协议来支持数据通信的任何类型的网络,其中协议包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(系统网络体系架构)、IPX(互联网分组交换)、AppleTalk等。仅仅作为示例,(一个或多个)网络810可以是局域网(LAN),诸如基于以太网、令牌环等的LAN。(一个或多个)网络810可以是广域网和互联网。它可以包括虚拟网络,包括但不限于虚拟专用网络(VPN)、内联网、外联网、公共交换电话网(PSTN)、红外网络、无线网络(例如,依据电气和电子协会(IEEE)802.11协议套件、和/或任何其它无线协议的任何协议而操作的网络);和/或这些网络和/或其它网络的任何组合。
服务器812可以由一个或多个通用计算机、专用服务器计算机(作为示例,包括PC(个人计算机)服务器、服务器、中档服务器、大型计算机、机架安装的服务器等)、服务器场、服务器集群或任何其它适当的布置和/或组合组成。在各种实施例中,服务器812可以适于运行在前述公开中描述的一个或多个服务或软件应用。例如,服务器812可以与用于执行以上根据本公开的实施例描述的处理的服务器对应。
服务器812可以运行包括以上讨论的任何操作系统中的操作系统,以及任何可商业获得的服务器操作系统。服务器812还可以运行各种附加的服务器应用和/或中间层应用中的任何一种,包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(公共网关接口)服务器、服务器、数据库服务器等。示例性数据库服务器包括但不限于可从Oracle、Microsoft、Sybase、IBM(国际商业机器)等商业获得的那些数据库服务器。
在一些实施方式中,服务器812可以包括一个或多个应用,以分析和整合从客户端计算设备802、804、806和808的用户接收到的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于,馈送、更新或者从一个或多个第三方信息源和连续数据流接收到的实时更新,实时更新可以包括与传感器数据应用、金融价格收报机(financial ticker)、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车交通监视等相关的实时事件。服务器812还可以包括一个或多个应用,以经由客户端计算设备802、804、806和808的一个或多个显示设备来显示数据馈送和/或实时事件。
分布式系统800还可以包括一个或多个数据库814和816。数据库814和816可以驻留在各种位置。作为示例,数据库814和816中的一个或多个可以驻留在服务器812本地(和/或驻留在服务器812中)的非暂态存储介质上。可替代地,数据库814和816可以远离服务器812并且经由基于网络的连接或专用的连接与服务器812进行通信。在一组示例中,数据库814和816可以驻留在存储区域网络(SAN)中。类似地,用于执行服务器812所具有的功能的任何必要文件都可以适当地本地存储在服务器812上和/或远程存储。在实施例的一个集合中,数据库814和816可以包括适于响应SQL格式的命令而存储、更新和检索数据的关系数据库,诸如由Oracle提供的数据库。
图9是根据一些实施例的可以将由实施例系统的一个或多个部件提供的服务作为云服务提供的系统环境900的一个或多个部件的简化框图。在所示的实施例中,系统环境900包括可以由用户使用以与提供云服务的云基础设施系统902交互的一个或多个客户端计算设备904、906和908。客户端计算设备可以被配置为操作客户端应用,诸如web浏览器、专有客户端应用(例如,Oracle Forms)或某种其它应用,这些应用可以由客户端计算设备的用户用来与云基础设施系统902交互以使用由云基础设施系统902提供的服务。
应当认识到的是,图中描绘的云基础设施系统902可以具有与所描绘的部件不同的其它部件。另外,图中所示的实施例仅仅是可以结合本发明的实施例的云基础设施系统的一个示例。在一些其它实施例中,云基础设施系统902可以具有比图中所示更多或更少的部件,可以组合两个或更多个部件,或者可以具有部件的不同配置或布置。
客户端计算设备904、906和908可以是与上面针对802、804、806和808所描述的设备类似的设备。
虽然示例性系统环境900被示出具有三个客户端计算设备,但是任何数量的客户端计算设备可以被支持。其它设备(诸如具有传感器的设备等)可以与云基础设施系统902交互。
(一个或多个)网络910可以促进客户端904、906和908与云基础设施系统902之间的数据的通信和交换。每个网络可以是本领域技术人员所熟悉的可以使用各种商业上可获得的协议(包括上面针对(一个或多个)网络810所描述的那些协议)中的任何一种支持数据通信的任何类型的网络。
云基础设施系统902可以包括一个或多个计算机和/或服务器,其可以包括上面针对服务器812所描述的那些计算机和/或服务器。
在某些实施例中,由云基础设施系统提供的服务可以包括按需对云基础设施系统的用户可用的许多服务,诸如在线数据存储和备份解决方案、基于Web的电子邮件服务、被托管的办公室(office)套件和文档协作服务、数据库处理、受管理的技术支持服务等。由云基础设施系统提供的服务可以动态扩展以满足云基础设施系统的用户的需要。由云基础设施系统提供的服务的具体实例化在本文中被称为“服务实例”。一般而言,从云服务提供商的系统经由通信网络(诸如互联网)对用户可用的任何服务被称为“云服务”。通常,在公共云环境中,构成云服务提供商的系统的服务器和系统与客户自己的室内服务器和系统不同。例如,云服务提供商的系统可以托管应用,并且用户可以经由诸如互联网的通信网络按需订购和使用应用。
在一些示例中,计算机网络云基础设施中的服务可以包括对存储装置、被托管的数据库、被托管的Web服务器、软件应用或由云供应商向用户提供的其它服务的受保护的计算机网络访问,或者如本领域中另外已知的。例如,服务可以包括通过互联网对云上的远程存储装置进行密码保护的访问。作为另一个示例,服务可以包括基于Web服务的被托管的关系数据库和脚本语言中间件引擎,以供联网的开发人员私有使用。作为另一个示例,服务可以包括对在云供应商的网站上托管的电子邮件软件应用的访问。
在某些实施例中,云基础设施系统902可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式递送给客户的应用、中间件和数据库服务供应的套件。这种云基础设施系统的示例是由本受让人提供的Oracle公共云。
在各种实施例中,云基础设施系统902可以适于自动供给、管理和跟踪客户对云基础设施系统902供应的服务的订阅。云基础设施系统902可以经由不同的部署模型来提供云服务。例如,可以依据公共云模型提供服务,其中云基础设施系统902被销售云服务的组织拥有(例如,被Oracle拥有),并且服务对一般公众或不同行业的企业可用。作为另一个示例,可以依据私有云模型来提供服务,其中云基础设施系统902仅针对单个组织操作,并且可以为该组织内的一个或多个实体提供服务。还可以依据社区云模型来提供云服务,其中云基础设施系统902和由云基础设施系统902提供的服务由相关社区中的若干组织共享。云服务还可以依据混合云模型被提供,该混合云模型是两个或更多个不同模型的组合。
在一些实施例中,由云基础设施系统902提供的服务可以包括在软件即服务(SaaS)类别、平台即服务(PaaS)类别、基础设施即服务(IaaS)类别或包括混合服务的其它服务类别下提供的一个或多个服务。客户经由订阅订单可以订购由云基础设施系统902提供的一个或多个服务。云基础设施系统902然后执行处理以提供客户的订阅订单中的服务。
在一些实施例中,由云基础设施系统902提供的服务可以包括但不限于应用服务、平台服务和基础设施服务。在一些示例中,应用服务可以由云基础设施系统经由SaaS平台提供。SaaS平台可以被配置为提供落入SaaS类别的云服务。例如,SaaS平台可以提供在集成开发和部署平台上构建和递送按需应用套件的能力。SaaS平台可以管理和控制用于提供SaaS服务的底层软件和基础设施。通过利用由SaaS平台提供的服务,客户可以利用在云基础设施系统上执行的应用。客户可以获取应用服务,而无需客户购买单独许可证和支持。可以提供各种不同的SaaS服务。示例包括但不限于为大型组织提供销售绩效管理、企业集成和商务灵活性的解决方案的服务。
在一些实施例中,平台服务可以由云基础设施系统经由PaaS平台提供。PaaS平台可以被配置为提供落入PaaS类别的云服务。平台服务的示例可以包括但不限于使组织(诸如Oracle)能够在共享的公共体系架构上整合现有应用以及充分利用平台提供的共享服务来构建新应用的能力的服务。PaaS平台可以管理和控制用于提供PaaS服务的底层软件和基础设施。客户可以获取由云基础架构系统提供的PaaS服务,而无需客户购买单独的许可证和支持。平台服务的示例包括但不限于Oracle Java云服务(JCS)、Oracle数据库云服务(DBCS)等。
通过利用由PaaS平台提供的服务,客户可以采用由云基础设施系统支持的编程语言和工具,并且还控制所部署的服务。在一些实施例中,由云基础设施系统提供的平台服务可以包括数据库云服务、中间件云服务(例如,Oracle融合中间件服务)和Java云服务。在一个实施例中,数据库云服务可以支持共享服务部署模型,该模型使得组织能够汇集数据库资源并且以数据库云的形式向客户供应数据库即服务。中间件云服务可以为客户提供开发和部署各种商务应用的平台,并且Java云服务可以为客户提供在云基础设施系统中部署Java应用的平台。
各种不同的基础设施服务可以由云基础设施系统中的IaaS平台提供。基础设施服务促进底层计算资源(诸如存储装置、网络和其它基础计算资源)的管理和控制,以供客户利用由SaaS平台和PaaS平台提供的服务。
在某些实施例中,云基础设施系统902还可以包括基础设施资源930,用于向云基础设施系统的客户提供用于提供各种服务的资源。在一个实施例中,基础设施资源930可以包括预先集成和优化的硬件(诸如服务器、存储装置和联网资源)的组合,以执行由PaaS平台和SaaS平台提供的服务。
在一些实施例中,云基础设施系统902中的资源可以由多个用户共享并且根据需要动态重新分配。此外,可以将资源分配给在不同时区的用户。例如,云基础设施系统930可以使在第一时区中的第一组用户能够在指定的小时数内利用云基础设施系统的资源,并且然后使相同资源能够被重新分配给位于不同时区的另一组用户,从而使资源的利用率最大化。
在某些实施例中,可以提供由云基础设施系统902的不同部件或模块以及由云基础设施系统902提供的服务共享的多个内部共享服务932。这些内部共享服务可以包括但不限于:安全和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高可用性、备份和恢复服务、启用云支持的服务、电子邮件服务、通知服务、文件传输服务等。
在某些实施例中,云基础设施系统902可以提供云基础设施系统中的云服务(例如,SaaS、PaaS和IaaS服务)的综合管理。在一个实施例中,云管理功能可以包括用于供给、管理和跟踪由云基础设施系统902接收到的客户订阅等的能力。
在一个实施例中,如图中所描绘的,云管理功能可以由一个或多个模块提供,诸如订单管理模块920、订单编排模块922、订单供给模块924、订单管理和监视模块926,以及身份管理模块928。这些模块可以包括一个或多个计算机和/或服务器或者使用一个或多个计算机和/或服务器来提供,这些计算机和/或服务器可以是通用计算机、专用服务器计算机、服务器场、服务器集群或任何其它适当的布置/或组合。
在示例性操作934中,使用客户端设备(诸如客户端设备904、906或908)的客户可以通过请求由云基础设施系统902提供的一个或多个服务并且下订阅由云基础设施系统902供应的一个或多个服务来的订单来与云基础设施系统902交互。在某些示例中,客户可以访问云用户界面(UI)、云UI 912、云UI 914和/或云UI 916并经由这些UI下订阅订单。云基础设施系统902响应于客户下订单而接收到的订单信息可以包括识别客户以及客户想要订阅的云基础设施系统902供应的一个或多个服务的信息。
在客户下订单之后,经由云UI,912、914和/或916,接收订单信息。
在操作936处,订单存储在订单数据库918中。订单数据库918可以是由云基础设施系统918操作和与其它系统元件一起操作的若干数据库之一。
在操作938处,订单信息被转发到订单管理模块920。在一些情况下,订单管理模块920可以被配置为执行与订单相关的计费和记账功能,诸如验证订单,并且在验证后,预订订单。
在操作940处,将关于订单的信息传送到订单编排模块922。订单编排模块922可以利用订单信息为客户下的订单编排服务和资源的供给。在一些情况下,订单编排模块922可以使用订单供给模块924的服务来编排资源的供给以支持订阅的服务。
在某些实施例中,订单编排模块922使得能够管理与每个订单相关联的业务流程并应用业务逻辑来确定订单是否应该进行到供给。在操作942处,在接收到新订阅的订单时,订单编排模块922向订单供给模块924发送请求以分配资源并配置履行订阅订单所需的那些资源。订单供给模块924使得能够为客户订购的服务分配资源。订单供给模块924提供由云基础设施系统900提供的云服务和用于供给用于提供所请求的服务的资源的物理实现层之间的抽象层。因此,订单编排模块922可以与实现细节隔离,诸如服务和资源是否实际上即时供给或预先供给并仅在请求后才分配/指派。
在操作944处,一旦供给了服务和资源,就可以通过云基础设施系统902的订单供给模块924向客户端设备904、906和/或908上的客户发送所提供服务的通知。
在操作946处,订单管理和监视模块926可以管理和跟踪客户的订阅订单。在一些情况下,订单管理和监视模块926可以被配置为收集订阅订单中的服务的使用统计,诸如,所使用的存储量、传输的数据量、用户的数量,以及系统运行时间和系统停机时间量。
在某些实施例中,云基础设施系统900可以包括身份管理模块928。身份管理模块928可以被配置为提供身份服务,诸如云基础设施系统900中的访问管理和授权服务。在一些实施例中,身份管理模块928可以控制关于希望利用由云基础设施系统902提供的服务的客户的信息。这样的信息可以包括认证这些客户的身份的信息以及描述这些客户被授权相对于各种系统资源(例如,文件、目录、应用、通信端口、存储器段等)执行哪些动作的信息。身份管理模块928还可以包括对关于每个客户的描述性信息以及关于如何和由谁来访问和修改这些描述性信息的管理。
图10图示了其中可以实现各种实施例的示例性计算机系统1000。系统1000可以用于实现上述计算机系统中的任何一个。如图所示,计算机系统1000包括经由总线子系统1002与多个外围子系统通信的处理单元1004。这些外围子系统可以包括处理加速单元1006、I/O子系统1008、存储子系统1018和通信子系统1024。存储子系统1018包括有形计算机可读存储介质1022和系统存储器1010。
总线子系统1002提供用于让计算机系统1000的各种部件和子系统按意图彼此进行通信的机制。虽然总线子系统1002被示意性地示出为单条总线,但是总线子系统的替代实施例可以利用多条总线。总线子系统1002可以是若干种类型的总线结构中的任何类型,这些总线类型包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系架构中的任何体系架构的局部总线。例如,这种体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围部件互连(PCI)总线,这些总线可以被实现为按IEEE P1386.1标准制造的Mezzanine总线。
可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元1004控制计算机系统1000的操作。一个或多个处理器可以被包括在处理单元1004中。这些处理器可以包括单核处理器或多核处理器。在某些实施例中,处理单元1004可以被实现为一个或多个独立的处理单元1032和/或1034,其中在每个处理单元中包括单核处理器或多核处理器。在其它实施例中,处理单元1004也可以被实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
在各种实施例中,处理单元1004可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定的时间,要被执行的程序代码中的一些或全部代码可以驻留在(一个或多个)处理器1004中和/或存储子系统1018中。通过适当的编程,(一个或多个)处理器1004可以提供上述各种功能。计算机系统1000可以附加地包括处理加速单元1006,该处理加速单元1006可以包括数字信号处理器(DSP)、专用处理器等。
I/O子系统1008可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的指向设备、结合到显示器中的触摸板或触摸屏、滚动轮、点击轮、拨盘、按钮、开关、小键盘、具有语音命令辨识系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括,例如,运动感测和/或手势辨识设备,诸如Microsoft运动传感器,该运动传感器使得用户能够通过使用手势和语音命令的自然用户接口来控制诸如Microsoft360游戏控制器的输入设备并与输入设备交互。用户接口输入设备也可以包括眼睛姿势辨识设备,诸如从用户检测眼睛活动(例如,当拍摄照片和/或进行菜单选择时的“眨眼”)并且将眼睛姿势变换为进入输入设备(例如,Google)中的输入的Google眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音辨识系统(例如,导航器)交互的语音辨识感测设备。
用户接口输入设备也可以包括但不限于:三维(3D)鼠标、操纵杆或指向棒(pointing stick)、游戏面板和绘图板,以及音频/视觉设备,诸如扬声器、数码相机、数码摄录机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器3D扫描仪、3D打印机、激光测距仪和视线跟踪设备。此外,用户接口输入设备可以包括,例如,医学成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层显像、医疗超声设备。用户接口输入设备也可以包括,例如,诸如MIDI键盘、数字乐器等的音频输入设备。
用户接口输出设备可以包括显示子系统、指示灯,或者诸如音频输出设备的非可视显示器等。显示子系统可以是阴极射线管(CRT)、诸如使用液晶显示器(LCD)或等离子显示器的平板设备、投影设备、触摸屏等。一般而言,术语“输出设备”的使用旨在包括用于从计算机系统1000向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括但不限于:可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备以及调制解调器。
计算机系统1000可以包括包含软件元件的被示出为当前位于系统存储器1010内的存储子系统1018。系统存储器1010可以存储可加载并且可在处理单元1004上执行的程序指令,以及在这些程序的执行期间所生成的数据。
取决于计算机系统1000的配置和类型,系统存储器1010可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器等)。RAM通常包含可被处理单元1004立即访问和/或目前正在被处理单元1004操作和执行的数据和/或程序模块。在一些实施方式中,系统存储器1010可以包括多种不同类型的存储器,例如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实施方式中,诸如在启动期间,包含有助于在计算机系统1000内的元件之间传送信息的基本例程的基本输入/输出系统(BIOS)通常可以被存储在ROM中。作为示例但不是限制,系统存储器1010也示出了可以包括客户端应用、Web浏览器、中间层应用、关系数据库管理系统(RDBMS)等的应用程序1012,程序数据1014、以及操作系统1016。作为示例,操作系统1016可以包括各种版本的MicrosoftApple和/或Linux操作系统、各种可商业获得的或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、GoogleOS等)和/或诸如iOS、Phone、OS、10OS和OS操作系统的移动操作系统。
存储子系统1018也可以提供用于存储提供一些实施例的功能的基本编程和数据结构的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以被存储在存储子系统1018中。这些软件模块或指令可以被处理单元1004执行。存储子系统1018也可以提供用于存储根据本发明被使用的数据的储存库。
存储子系统1000也可以包括可被进一步连接到计算机可读存储介质1022的计算机可读存储介质读取器1020。与系统存储器1010一起并且可选地与系统存储器1010相结合,计算机可读存储介质1022可以全面地表示用于临时和/或更持久地包含、存储、发送和检索计算机可读信息的远程、本地、固定和/或可移动的存储设备加存储介质。
包含代码或代码的一部分的计算机可读存储介质1022也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于:以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。这可以包括有形的计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学储存器、磁带盒、磁带、磁盘储存装置或其它磁存储设备、或者其它有形计算机可读介质。这也可以包括非有形的计算机可读介质,诸如数据信号、数据传输,或者可以用于发送期望信息并且可以被计算系统1000访问的任何其它介质。
作为示例,计算机可读存储介质1022可以包括从不可移动的非易失性磁介质读取或写入到不可移动的非易失性磁介质的硬盘驱动器、从可移动的非易失性磁盘读取或写入到可移动的非易失性磁盘的磁盘驱动器、以及从可移动的非易失性光盘(诸如CD ROM、DVD和Blu-(蓝光)盘或其它光学介质)读取或写入到可移动的非易失性光盘的光盘驱动器。计算机可读存储介质1022可以包括但不限于:驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字音频带等。计算机可读存储介质1022也可以包括:基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如固态RAM、动态RAM、静态RAM,基于DRAM的SSD、磁阻RAM(MRAM)SSD)、以及使用基于DRAM和闪存存储器的SSD的组合的混合SSD。盘驱动器及其关联的计算机可读介质可以为计算机系统1000提供计算机可读指令、数据结构、程序模块以及其它数据的非易失性存储。
通信子系统1024提供到其它计算机系统和网络的接口。通信子系统1024用作用于从其它系统接收数据和从计算机系统1000向其它系统发送数据的接口。例如,通信子系统1024可以使计算机系统1000能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统1024可以包括用于访问无线语音和/或数据网络的射频(RF)收发器部件(例如,使用蜂窝电话技术、先进数据网络技术,诸如3G、4G或EDGE(用于全球演进的增强型数据速率)、WiFi(IEEE802.11系列标准)或其它移动通信技术、或者其任何组合)、全球定位系统(GPS)接收器部件和/或其它部件。在一些实施例中,作为无线接口的附加或者替代,通信子系统1024可以提供有线网络连接(例如,以太网)。
在一些实施例中,通信子系统1024也可以代表可以使用计算机系统1000的一个或多个用户来接收以结构化和/或非结构化数据馈送1026、事件流1028、事件更新1030等形式的输入通信。
作为示例,通信子系统1024可以被配置为实时地从社交网络和/或其它通信服务的用户接收数据馈送1026,诸如馈送、更新、诸如丰富站点摘要(RSS)馈送的web馈送和/或来自一个或多个第三方信息源的实时更新。
此外,通信子系统1024也可以被配置为接收以连续数据流形式的数据,该数据可以包括本质上可以是连续的或无界的没有明确终止的实时事件的事件流1028和/或事件更新1030。生成连续数据的应用的示例可以包括,例如,传感器数据应用、金融价格收报机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视等。
通信子系统1024也可以被配置为向一个或多个数据库输出结构化和/或非结构化的数据馈送1026、事件流1028、事件更新1030等,这一个或多个数据库可以与耦合到计算机系统1000的一个或多个流式数据源计算机进行通信。
计算机系统1000可以是各种类型中的一种类型,包括手持便携式设备(例如,蜂窝电话、计算平板电脑、PDA)、可穿戴设备(例如,Google头戴式显示器)、PC、工作站、大型机、信息站(kiosk)、服务器机架、或任何其它数据处理系统。
由于计算机和网络的不断变化的本质,在图中绘出的计算机系统1000的描述仅旨在作为具体的示例。具有比图中绘出的系统更多或更少部件的许多其它配置是可能的。例如,定制的硬件也可以被使用和/或特定的元素可以在硬件、固件、软件(包括小程序应用(applets))或其组合中实现。另外,可以采用到诸如网络输入/输出设备的其它计算设备的连接。基于本文提供的公开内容和教导,本领域普通技术人员将认识到实现各种实施例的其它方式和/或方法。
在前面的描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的各种实施例的透彻理解。但是,对于本领域技术人员将显而易见的是,可以在没有这些具体细节中的一些的情况下实践本发明的实施例。在其它情况下,以框图形式示出了众所周知的结构和设备。
前面的描述仅提供示例性实施例,并且无意于限制本公开的范围、适用性或配置。更确切地说,示例性实施例的前述描述将向本领域技术人员提供用于实现示例性实施例的使能描述。应当理解的是,在不脱离所附权利要求书所阐述的本发明的精神和范围的情况下,可以对元件的功能和布置进行各种改变。
在前面的描述中给出了具体细节以提供对实施例的透彻理解。但是,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实践实施例。例如,电路、系统、网络、处理和其它部件可能已经被示为框图形式的部件,以便不以不必要的细节使实施例晦涩难懂。在其它情况下,可以已经示出了众所周知的电路、处理、算法、结构和技术而没有不必要的细节,以避免使实施例晦涩难懂。
而且,要注意的是,各个实施例可以已经被描述为被描绘为流程图、流图、数据流图、结构图或框图的处理。虽然流程图可以已经将操作描述为顺序处理,但是许多操作可以并行或并发地执行。此外,可以重新布置操作的次序。处理在器操作完成时终止,但可以具有图中未包括的附加步骤。处理可以与方法、函数、过程、子例程、子程序等对应。当处理与函数对应时,其终止可以与该函数返回到调用函数或主函数对应。
术语“计算机可读介质”包括但不限于便携式或固定存储设备、光学存储设备、无线信道以及能够存储、包含或携带(一个或多个)指令和/或数据的各种其它介质。代码段或机器可执行指令可以表示过程、功能、子程序、程序、例程、子例程、模块、软件包、类或指令、数据结构或程序语句的任意组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容而耦合到另一个代码段或硬件电路。信息、自变量、参数、数据等可以经由任何合适的方式传递、转发或传输,包括存储器共享、消息传递、令牌传递、网络传输等。
此外,实施例可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现。当以软件、固件、中间件或微代码实现时,可以将执行必要任务的程序代码或代码段存储在机器可读介质中。(一个或多个)处理器可以执行必要的任务。
在前述说明书中,参考本发明的各方面的具体实施例对本发明的各方面进行了描述,但是本领域技术人员将认识到的是,本发明不限于此。上述发明的各个特征和方面可以被单独使用或联合使用。另外,在不脱离本说明书的更广泛精神和范围的情况下,实施例可以在除本文所述的那些环境和应用之外的任何数目的环境和应用中被使用。相应地,本说明书和附图应当被认为是说明性的而不是限制性的。
此外,出于说明的目的,以特定顺序描述了方法。应该认识到的是,在替代示例中,可以以与所描述的顺序不同的顺序执行方法。还应该认识到的是,上述方法可以由硬件部件执行,或者可以以机器可执行指令的序列被实施,机器可执行指令可以用于使机器(诸如编程有指令的通用或专用处理器或逻辑电路)执行方法。这些机器可执行指令可以被存储在一个或多个机器可读介质上,诸如CD-ROM或其它类型的光盘、软盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡、闪存、或适合于存储电子指令的其它类型的机器可读介质。替代地,可以通过硬件和软件的组合来执行方法。
Claims (20)
1.一种包括指令的非暂态计算机可读介质,所述指令在由一个或多个处理器执行时,使所述一个或多个处理器执行包括以下各项的操作:
确定要在云基础设施中作为服务的一部分供给的集群的数量;
确定要在云基础设施中供给的每个集群中的可用性域的数量;
确定要在云基础设施中供给的每个可用性域中的计算节点的数量;
确定要在云基础设施中供给的每个集群中的负载均衡器的数量;
基于集群的数量、可用性域的数量、计算节点的数量和负载均衡器的数量计算子网级别的数量;
基于子网级别的数量生成多个子网;以及
将所述多个子网指派给云基础设施中的计算节点和负载均衡器。
2.如权利要求1所述的非暂态计算机可读介质,其中所述操作还包括使计算节点中的每个计算节点和负载均衡器中的每个负载均衡器在具有所述多个子网的云基础设施中被供给。
3.如权利要求1所述的非暂态计算机可读介质,其中所述操作还包括:
接收对可用性域的数量、集群的数量、计算节点的数量或负载均衡器的数量的更改;
基于所述更改重新计算子网级别的数量;
基于子网级别的数量重新生成所述多个子网。
4.如权利要求1所述的非暂态计算机可读介质,其中所述操作还包括:
确定要作为云基础设施中的第二服务的一部分供给的集群的第二数量、可用性域的第二数量、计算节点的第二数量和负载均衡器的第二数量,其中第二服务与所述服务不同;
基于集群的第二数量、可用性域的第二数量、计算节点的第二数量和负载均衡器的第二数量计算子网级别的第二数量,这里子网级别的第二数量与子网级别的所述数量不同;以及
基于子网级别的第二数量生成第二多个子网。
5.如权利要求1所述的非暂态计算机可读介质,其中所述多个子网的数量等于基数2^(子网级别的数量)。
6.如权利要求1所述的非暂态计算机可读介质,其中确定可用性域的数量包括:
接收从服务的多个预定配置中选择的配置;以及
确定所述配置的服务水平协议(SLA),其中SLA定义可用性域的数量。
7.如权利要求1所述的非暂态计算机可读介质,其中确定可用性域的数量包括:
当所述指令由所述一个或多个处理器执行时,接收可用性域的数量作为运行时输入。
8.如权利要求1所述的非暂态计算机可读介质,其中所述可用性域中的可用性域包括所述计算节点中的至少一个和所述负载均衡器中的至少一个。
9.如权利要求1所述的非暂态计算机可读介质,其中基于子网级别的数量生成所述多个子网包括:
执行函数,该函数执行顶级网络地址的无类域间路由(CIDR)分割。
10.如权利要求9所述的非暂态计算机可读介质,其中所述函数接受子网级别的数量作为参数,使得可以在运行时计算子网级别的数量。
11.如权利要求1所述的非暂态计算机可读介质,其中所述操作还包括将多个标签指派给所述多个子网中的每个子网。
12.如权利要求11所述的非暂态计算机可读介质,其中所述多个标签基于可用性域和集群的组合。
13.如权利要求12所述的非暂态计算机可读介质,其中所述操作还包括通过计算笛卡尔积来生成可用性域和集群的组合。
14.如权利要求12所述的非暂态计算机可读介质,其中计算笛卡尔积包括在可用性域和集群之间生成向量叉积。
15.如权利要求14所述的非暂态计算机可读介质,其中所述多个标签中的索引与集群中的索引通过将所述多个标签中的索引除以集群的数量而相关。
16.如权利要求14所述的非暂态计算机可读介质,其中所述多个标签中的索引与可用性域中的索引通过执行所述多个标签中的索引与可用性域的数量的模除而相关。
17.如权利要求12所述的非暂态计算机可读介质,其中所述多个标签包括由每次声明计算节点或负载均衡器时递增的计数器修改的索引。
18.如权利要求12所述的非暂态计算机可读介质,其中所述多个标签是在不使用嵌套循环结构的情况下生成的。
19.一种系统,包括:
一个或多个处理器;以及
包括指令的一个或多个存储器设备,所述指令在由所述一个或多个处理器执行时,使所述一个或多个处理器执行包括以下各项的操作:
确定要在云基础设施中作为服务的一部分供给的集群的数量;
确定要在云基础设施中供给的每个集群中的可用性域的数量;
确定要在云基础设施中供给的每个可用性域中的计算节点的数量;
确定要在云基础设施中供给的每个集群中的负载均衡器的数量;
基于集群的数量、可用性域的数量、计算节点的数量和负载均衡器的数量计算子网级别的数量;
基于子网级别的数量生成多个子网;以及
将所述多个子网指派给云基础设施中的计算节点和负载均衡器。
20.一种用于执行具有运行时调整数量的资源声明的供给脚本的方法,所述方法包括:
确定要在云基础设施中作为服务的一部分供给的集群的数量;
确定要在云基础设施中供给的每个集群中的可用性域的数量;
确定要在云基础设施中供给的每个可用性域中的计算节点的数量;
确定要在云基础设施中供给的每个集群中的负载均衡器的数量;
基于集群的数量、可用性域的数量、计算节点的数量和负载均衡器的数量计算子网级别的数量;
基于子网级别的数量生成多个子网;以及
将所述多个子网指派给云基础设施中的计算节点和负载均衡器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/730,656 | 2019-12-30 | ||
US16/730,656 US11991041B2 (en) | 2019-12-30 | 2019-12-30 | Autonomous terraforming on cloud infrastructures |
PCT/US2020/067083 WO2021138224A1 (en) | 2019-12-30 | 2020-12-27 | Autonomous terraforming on cloud infrastructures |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115039073A true CN115039073A (zh) | 2022-09-09 |
Family
ID=74236281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080094901.5A Pending CN115039073A (zh) | 2019-12-30 | 2020-12-27 | 云基础设施上的自主terraform化 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11991041B2 (zh) |
EP (1) | EP4085331A1 (zh) |
JP (1) | JP2023508729A (zh) |
CN (1) | CN115039073A (zh) |
WO (1) | WO2021138224A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741993B (zh) * | 2022-04-18 | 2023-06-16 | 山东浪潮科学研究院有限公司 | 一种基于脚本的数据流图生成方法及装置 |
US11818055B1 (en) | 2022-05-31 | 2023-11-14 | Walmart Apollo, Llc | Systems and methods for automating resource deployment |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140189155A1 (en) * | 2012-12-27 | 2014-07-03 | Deep River Ventures, Llc | Methods, Systems, and Computer Program Products for Determining a Protocol Address For a Node |
US9317410B2 (en) * | 2013-03-15 | 2016-04-19 | International Business Machines Corporation | Testing functional correctness and idempotence of software automation scripts |
US20160081668A1 (en) * | 2013-08-27 | 2016-03-24 | The Johns Hopkins University | System and Method For Medical Imaging Calibration and Operation |
US9621428B1 (en) | 2014-04-09 | 2017-04-11 | Cisco Technology, Inc. | Multi-tiered cloud application topology modeling tool |
US9832078B2 (en) * | 2015-01-06 | 2017-11-28 | Netapp, Inc. | Stateless resource management |
US11223536B2 (en) * | 2016-04-04 | 2022-01-11 | At&T Intellectual Property I, L.P. | Model driven process for automated deployment of domain 2.0 virtualized services and applications on cloud infrastructure |
US20190052542A1 (en) * | 2017-08-11 | 2019-02-14 | Fugue, Inc. | System and method for providing visualizations of computing infrastructure using a domain-specific language for cloud services infrastructure |
KR101987661B1 (ko) * | 2018-07-19 | 2019-06-11 | 나무기술 주식회사 | 클라우드 플랫폼에서의 클러스터 리소스 할당 및 관리 방법 |
US10999163B2 (en) * | 2018-08-14 | 2021-05-04 | Juniper Networks, Inc. | Multi-cloud virtual computing environment provisioning using a high-level topology description |
US11129159B2 (en) * | 2019-04-11 | 2021-09-21 | Servicenow, Inc. | Programmatic orchestration of cloud-based services |
-
2019
- 2019-12-30 US US16/730,656 patent/US11991041B2/en active Active
-
2020
- 2020-12-27 JP JP2022540590A patent/JP2023508729A/ja active Pending
- 2020-12-27 CN CN202080094901.5A patent/CN115039073A/zh active Pending
- 2020-12-27 WO PCT/US2020/067083 patent/WO2021138224A1/en unknown
- 2020-12-27 EP EP20845731.7A patent/EP4085331A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021138224A1 (en) | 2021-07-08 |
JP2023508729A (ja) | 2023-03-03 |
US20210203549A1 (en) | 2021-07-01 |
US11991041B2 (en) | 2024-05-21 |
EP4085331A1 (en) | 2022-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109478266B (zh) | 对于数据库供应的资源分配 | |
US10372936B2 (en) | Shared identity management (IDM) integration in a multi-tenant computing environment | |
US9600342B2 (en) | Managing parallel processes for application-level partitions | |
EP3198420B1 (en) | Compartmentalizing application distribution for disparate electronic devices | |
US10462210B2 (en) | Techniques for automated installation, packing, and configuration of cloud storage services | |
US9535726B2 (en) | Reverse dependency injection in a system with dynamic code loading | |
US10192175B2 (en) | Navigating interactive visualizations with collaborative filtering | |
JP6871943B2 (ja) | モバイルクラウドサービスのための予め形成された命令 | |
US9600327B2 (en) | Process scheduling and execution in distributed computing environments | |
US9723025B2 (en) | Dependent entity provisioning | |
US20230325204A1 (en) | Techniques for managing dependencies of an orchestration service | |
US11836519B2 (en) | Decoupled push-down execution generator | |
US20150161547A1 (en) | Methods and systems to define and execute customer declarative business rules to extend business applications | |
JP2017526038A (ja) | 既存のサブスクリプションを用いたサービスのサブスクリプションの提供 | |
US20200125948A1 (en) | Machine learning from the integration flow metadata | |
EP4094155A1 (en) | Techniques for utilizing directed acyclic graphs for deployment instructions | |
CN115039073A (zh) | 云基础设施上的自主terraform化 | |
US20160019662A1 (en) | Methods and Systems for Performing Cost Comparisons | |
US20150199535A1 (en) | Organization-based policies | |
JP2023511111A (ja) | デプロイメントオーケストレータにおけるドリフトを検出するための技術 | |
US20150199625A1 (en) | Logical and physical organization management |
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 |