延续上一篇Oracle Cloud Infrastructure-Architecture(基础架构),这一篇介绍云基础设施中的Compute Service(计算服务)。通过0-1 图中提供的服务列表。Compute Service实际上使客户来置备和管理计算服务,可以看出有非常广泛的服务来满足特定工作负载和应用程序需求,包括裸金属实例(Bare Metal)、专用虚拟主机(Dedicated Virtual Hosts)、虚拟机(Virtual machines)、容器引擎(Container Engine)和函数(Functions)。一些专业名词会写成中英文以便帮助更好理解。
0-1
Bare Metal
Oracle’s bare metal instances support applications requiring high core counts, large amounts of memory, and high memory bandwidth. Users can build cloud environments with significant performance improvements over other public clouds and on-premise data centers. Bare metal compute instances provide customers with exceptional isolation, visibility, and control.
Bare Metal — Code, App Container, Language Runtime, OS, Virtualization; No virtualization
裸金属实例,无虚拟化(No virtualization),直接的硬件访问,在0-1中可以看出,裸金属必须将虚拟层之上的操作系统、运行时间等等管理起来,图1-1为裸金属服务器在其之上的解决方案,最左边有Oracle中有个叫做 off-box virtualization(开箱即用虚拟化),它将网络和存储卸载到服务器中的独立硬件卡,也称之为 定制硅(Custom Silicon),许多存储和服务由这张卡操作完成, 定制硅位于服务器之外,这就是称之为开箱即用的原因,这样服务器本身没有虚拟化,依然是裸机;图中间是模型在裸机中的虚拟环境实现,通过管理程序的虚拟化,虚拟机作为服务器,也就是说在OCI中,启用裸机服务器,然后在服务器上安装管理程序,就可以运行虚拟机环境了,通常这样是为多租户实现的方案;图中最右,称作专用虚拟主机,这种模型与上一种基于虚拟环境的产品一样,不过是属于单租户,用户可以控制整个框架,相对多租户,单租户确保只有一个客户在其中,而多租户是多个客户,单租户提供了最高的安全等级,可以自己管理整个环境,所有这三种方案,都是基于裸机服务提供的,所有方案能获取的API是非常一致的。
1-1
Bare Metal use cases 1-2图:
1-2
从左到右,分别是裸机服务的用例
性能密集型工作负载;
裸机上运行数据库,但不会虚拟化的工作负载;
工作负载需要的特定程序,引入自己的管理程序;
工作负载需要引入用户自己的工作许可证(BYOL Bring Your Own Licensing)
裸机实例产品特色:
1、低延迟块存储服务(Low Latency Block Storage Service):
可靠和高可用性(Reliable and High Performance):高可用性,持久性,网络连接的存储卷经过优化,可提供低延迟和高IOPS。
备份还原(Backup and Restore):卷可以备份到高度耐用,高可用性的对象存储中,甚至可以还原到新卷。
引导卷(Boot Volumes):Oracle Block Volumes提供了可管理,耐用且用途广泛的系统引导磁盘。
2、安全灵活的网络(Secure and Flexible Netword):
虚拟云网络(Virtual Cloud Network (VCN)):完全和可定制的专用网络可以轻松地将现有网络拓扑移动到云中。
网络隔离(Network Isolation):隔离的虚拟云网络与专用的物理服务器相结合,甚至与Oracle隔离。
本地扩展(Extension of On-Premises):企业数据中心和VCN之间的行业标准加密IPsec虚拟专用网(VPN)连接,或使用FastConnect与Oracle建立安全、不受限制的连接。
3、高可用(High Availbility):
故障隔离(Fault Isolation):可以在多区域(multi-region),多可用性域(AD或多故障域(FD))配置中部署应用程序。可用域(AD)是使用完全独立的基础结构(例如建筑物,电力,冷却设备,网络和服务器)构建的,而故障域则是分区的AD中的计算资源,以提供进一步保护。
高可用性(High Availability):区域(regions)可以包含多个由高速网络主干连接的可用性域,每个可用性域(AD)包含三个故障域(FD)。
低延迟(Low Latency):高速网络的骨干网使得跨可用性域(AD)运行高度可靠(highly reliable)的应用程序,这样的架构使得对应用程序的性能影响降至最低。
4、多层次的安全保障(Multi-Layered Security):
操作系统选择(Operating System Choice):支持不断增长的Microsoft Windows Server和企业Linux操作系统列表,例如Oracle Linux,CentOS,Ubuntu等等。
带上自己的映像(Bring Your Own Image (BYOI)):在计算实例上引入并运行自己的的操作系统的灵活性。
从Oracle和合作伙伴(Partners)启动映像:从在不断扩展的Oracle合作伙伴生态(ecosystem)系统中轻松探索发现并启动Oracle应用程序和第三方应用程序的映像。
Dedicated Virtual Hosts
Oracle Cloud Infrastructure Compute service's dedicated virtual machine host feature gives you the ability to run Compute virtual machine (VM) instances on dedicated servers that are a single tenant and not shared with other customers. This feature lets you meet compliance and regulatory requirements for isolation that prevent you from using shared infrastructure. You can also use this feature to meet node-based or host-based licensing requirements that require you to license an entire server.
Oracle 云基础设施服务中的专用虚拟主机,使客户能够作为单个租户,而且不与其他客户共享专用服务器上运行的虚拟机(VM)实例。此功能可以满足客户特定需求的关于合规性和法规要求来进行隔离,从而避免使用公共基础结构。也可以满足基于单节点或者基于主机的许可要求,前提是已经获得整个服务器许可。
我们主要理解的重点:
单租户架构。
在专用服务器主机上运行。
当前支持一种模型标准DVH.Standard2.52
模型标准基于X7的VM主机。
计费的OCPU和可用的OCPU区别。
可通过控制台(Console),CLI和REST API创建。
可以在专用服务器上创建多种VM模型。
通过实例分配进行容量优化。
支持和限制性(Support and Limitations):
创建专用虚拟主机时,必须为主机选择一个模型(shape),shape是确定分配给实例的CPU数量、内存量和其他资源的模板。有关模型概念和专用虚拟主机选择模型的详细信息,我将在后面单独一篇文章中叙述。
创建专用虚拟主机之后,客户将立即为其付费,但是不需要为放置在它上面的任何单个VM实例付费。如果有应用于VM实例上的映像,那么仍然需要支付此映像许可费用。
对于在专用虚拟机主机上启动的实例,支持所有VM.Standard2 shapes,此实例支持支持VM实例的大多数计算服务功能,暂不支持:
实例配置
实例池
自动缩放
管理专用虚拟主机(Managing Dedicated Virtual Machine Hosts):
所需要的IAM(Identity and Access Management)政策(Required IAM Policy)
使用Oracle Cloud Infrastructure,必须在策略中为用户提供所需要的访问类型,无论是控制台还是带有SDK(software development kit)、CLI或者其他工具的REST API,均由管理员(administrator)完成,如果尝试执行操作收到失败信息,表明此用户没有权限或者未被授权,此时需要和管理员确认被授权的访问类型以及用户该在哪个Compartment执行工作任务。
创建专用虚拟主机(Creating a Dedicated Virtual Machine Host):
先创建虚拟主机,才能将实例放置在其中,创建虚拟主机需要选择可用性域(Availability Domain )和故障域(Fault Domain)来启动,另外在创建时可以选择一个隔离专区(Compartment),以后可以整体将主机迁移至其他隔离专区,并且不会影响放置在主机上的任何实例。当然也可以在虚拟主机之外的不同隔离专区创建实例,也可以在启动后将它们迁移至不同的隔离专区。
使用控制台创建专用虚拟主机:
登录到Oracle Cloud Account:https://www.oracle.com/cloud/sign-in.html.
打开导航菜单,在Core Infrastructure下转到Compute,选择Dedicated Virtual Machine Hosts,如图2-1:
2-1
单击Create Dedicated Virtual Machine Host.
填写需要的收集的volume信息,如图2-2:
2-2
Compartment: The compartment for the dedicated virtual machine host.
Name: A user-friendly name or description.
Availability Domain: The availability domain for the dedicated virtual machine host.
Fault Domain(Optionally): The fault domain for the dedicated virtual machine host.
Shape: The shape to use for the dedicated virtual machine host.
Tags: Optionally, you can add tags. If you have permissions to create a resource, you also have permissions to add free-form tags to that resource. To add a defined tag, you must have permissions to use the tag namespace. For more information about tagging, see Resource Tags. If you are not sure if you should add tags, skip this option (you can add tags later) or ask your administrator.
单击 Create.
使用CLI(Command Line Inteface)创建专用虚拟主机:
Open a command prompt and run:
oci compute dedicated-vm-host create --dedicated-vm-host-shape DVH.Standard2.52 --wait-for-state ACTIVE --display-name <display_name> --availability-domain <availability_domain> --compartment-id <compartment_ID
复制
在创建的过程中可能需要最多15分钟。必须在处于ACTIVE状态时,才能在主机上启动实例。
使用CLI查询专用虚拟主机的当前状态,使用下面命令:
oci compute dedicated-vm-host get --dedicated-vm-host-id <dedicatedVMhost_ID>
复制
删除专用虚拟主机(Creating a Dedicated Virtual Machine Host):
使用控制台删除专用虚拟主机:
打开导航菜单,在Core Infrastructure下转到Compute,选择Dedicated Virtual Machine Hosts。
单击需要删除的虚拟主机。
单击删除,然后在出现提示时进行确认。
注意:如果有托管实例在主机上运行,则会删除失败,需要将实例终止。如果要检查是否有实例仍在运行,在虚拟主机的详细信息中,单击资源中的托管实例。租户中运行在虚拟主机上的实例的每个隔离专区都需要执行此步骤。如果要主机实例的隔离专区,在Table Scope 下拉列表中选择其他隔离专区。
使用CLI删除专用虚拟主机:
Open a command prompt and run:
oci compute dedicated-vm-host delete --dedicated-vm-host-id <dedicated_VM_host_ID>
复制
在删除专用虚拟主机之前,必须终止主机上运行的实例。
使用CLI列出在专用虚拟主机上运行的实例,使用下面命令:
oci compute dedicated-vm-host list --compartment-id <compartment_ID> --dedicated-vm-host-id <dedicatedVMhost_ID>
复制
API(使用API调用部署):
For information about using the API and signing requests, see REST APIs and Security Credentials. For information about SDKs, see Software Development Kits and Command Line Interface.
Use the following operations for working with dedicated virtual machine hosts:
CreateDedicatedVmHost
DeleteDedicatedVmHost
ListDedicatedVmHosts
ListDedicatedVmHostShapes
ListDedicatedVmHostInstances
ListDedicatedVmHostInstanceShapes
UpdateDedicatedVmHost
ChangeDedicatedVmHostCompartment
专用虚拟主机上的实例:
想把实例放虚拟主机上,在创建实例时指定虚拟主机即可,如图2-3:
2-3
如果使用CLI或REST API创建实例,请在dedicatedVmHostId
使用LaunchInstance操作时在可选参数中传递专用虚拟机主机OCID 。为避免创建实例的容量高于主机而创建时报错,可以使用如下CLI操作,例如:返回有足够容量的虚拟主机,供用户放置使用VM.Standard2.16 shape启动的实例:
compute dedicated-vm-host list --compartment-id <compartment_ID> --instance-shape-name VM.Standard2.16
复制
审核专用虚拟主机:
为了验证某些合规性,需要验证实例在专用虚拟主机上运行而非共享基础结构,甲骨文云基础架构查看审核日志事件中描述了如何访问,在此期间需要注意区分实例的隔离专区和虚拟主机的隔离专区以及主机的OCID(Oracle Cloud Identifier )确认。
在专用虚拟主机优化容量:
将实例创建在专用虚拟主机上时,Oracle Cloud Infrastructure以优化性能的方式启动实例。
Virtual Machines
A virtual machine (VM) is an independent computing environment that runs on top of physical bare metal hardware. The virtualization makes it possible to run multiple VMs that are isolated from each other. VMs are ideal for running applications that do not require the performance and resources (CPU, memory, network bandwidth, storage) of an entire physical machine.
虚拟机(VM)是在物理裸机硬件之上运行的独立计算环境,通过虚拟化,可以运行彼此隔离的多个虚拟实例,虚拟机是运行不需要整个物理机的性能和资源(CPU、内存、网络带宽、存储)的应用程序的理想选择。
例如虚拟机中我们可以运行代码、应用程序、应用程序容器、操作系统、具有虚拟机管理程序的虚拟客户服务系统等等。
VM use cases 3-0图:
3-0
作为多租户(Multi-tenant), 可以看出虚拟机适用的用例包括
如果希望控制部署环境的所有方面,包括CPU、内存、网络资源、存储大小等等,可以使用虚拟机;
当我们想把应用程序部署到基于Windows或者Linux 版本的环境时,可以使用虚拟机;
当然也可以将虚拟机环境当做交换环境,通过虚拟机将应用程序从本地迁移至OCI;
虚拟机实例产品特色:
总得来说,虚拟机使用够灵活,可提供不同的计算资源,以适用各种工作负载,如cpu自有扩展(1-24)、支持资源的远程Block storage、在密集型I/O负载(专用英特尔至强/铂金等处理器)场景中,为需要低延迟、数百万IOPS和极高的本地存储能力,提供最高可达25.6TB的本地NVMe SSD 存储,1PB的远程Block Volume。解释下什么是NVMe SSD:
NVMe:Non-Volatile Memory Express,SSD:Soild-state drive ,由包括英特尔,三星,Sandisk,戴尔和希捷在内的多家供应商专门为SSD开发的通信标准。它通过PCIe总线运行,这使驱动器的运载更像是它们的快速内存,而不是它们所模仿的硬盘。专门为高性能和非易失性存储介质而设计,在高计算要求和计算密集型企业,云计算和边缘数据生态中脱颖而出。3-1为基本设计原则,3-2为在与硬件驱动HDD和前几代SATA SSD 的性能对比图:
3-1
3-2
强隔离,VM实例与裸机在相同类型的服务器上运行,利用相同的云优化硬件,固件、软件堆栈和网络基础架构,可以在专用虚拟主机上运行虚拟实例,专门用于组织资源的物理服务器,这样为虚拟机提供了与裸金属机一样的隔离优势。
性价比,VM可选AMD EPYC处理器的实例部署,成本降低的同时有跟其他x86相差不多的性能。
1、低延迟块存储服务(Low Latency Block Storage Service):
高可用性(Reliable and High Performance):持久性,网络连接的存储卷经过优化,可提供低延迟和高IOPS。
备份还原(Backup and Restore):卷可以备份到高度耐用,高可用性的对象存储中,甚至可以还原到新卷。
引导卷(Boot Volumes):Oracle Block Volumes提供了可管理,耐用且用途广泛的系统引导磁盘。
2、安全灵活的网络(Secure and Flexible Netword):
虚拟云网络(Virtual Cloud Network (VCN)):完全和可定制的专用网络可以轻松地将现有网络拓扑移动到云中。
本地扩展(Extension of On-Premises):企业数据中心和VCN之间的行业标准加密IPsec虚拟专用网(VPN)连接,或使用FastConnect与Oracle建立安全,不受限制的连接。
3、高可用(High Availbility):
故障隔离(Fault Isolation):可以在多区域(multi-region),多可用性域(AD或多故障域(FD))配置中部署应用程序。可用域(AD)是使用完全独立的基础结构(例如建筑物,电力,冷却设备,网络和服务器)构建的,而故障域则是分区的AD中的计算资源,以提供进一步保护。
高可用性(High Availability):区域(regions)可以包含多个由高速网络主干连接的可用性域,每个可用性域(AD)包含三个故障域(FD)。
低延迟(Low Latency):高速网络的骨干网使得跨可用性域(AD)运行高度可靠(highly reliable)的应用程序,这样的架构使得对应用程序的性能影响降至最低。
4、灵活的镜像管理(Flexible Image Management):
操作系统选择(Operating System Choice):支持不断增长的Microsoft Windows Server和企业Linux操作系统列表,例如Oracle Linux,CentOS,Ubuntu等等。
带上自己的映像(Bring Your Own Image (BYOI)):在计算实例上引入并运行自己的的操作系统的灵活性。
从Oracle和合作伙伴(Partners)启动映像:从在不断扩展的Oracle合作伙伴生态(ecosystem)系统中轻松探索发现并启动Oracle应用程序和第三方应用程序的映像。
实例基本要素(Instance Basics):3-3和3-4 分别为创建实例时需要考虑的具体内容,包括实例本身形态(SHAPE)、实例组件(AVAILABILITY DOMAIN、VIRTUAL CLOUD NETWORK、KEY PAIR (FOR LINUX INSTANCES)、TAGS、PASSWORD (FOR WINDOWS INSTANCES)、IMAGE、SHAPE)。
3-3
3-4
实例类型:
标准shape: 专为通用工作负载而设计,适合各种应用和用例。标准形状提供了内核,内存和网络资源之间的平衡。Intel或AMD处理器提供标准。
DenseIO形态: 专为大型数据库,大数据工作负载以及需要高性能本地存储的应用程序而设计。DenseIO形状包括本地连接的基于NVMe的SSD。
GPU形态: 专为硬件加速的工作负载而设计。GPU形状包括Intel CPU和NVIDIA图形处理器。
高性能计算(HPC)形态: 专为需要高频处理器内核和群集网络以处理大规模并行HPC工作负载的高性能计算工作负载而设计。HPC形状仅适用于裸机实例。
基于以上多类型部署,灵活的形态选择可以自定义分配给实例的OCPU数量。内存量,网络带宽和VNIC数量与OCPU数量成正比。
实例存储(后续会专门讨论):
Block Volume: 允许您动态配置和管理可以附加到一个或多个Compute实例的块容量。
File Storage: 一种持久,可扩展,安全的企业级网络文件系统,您可以从虚拟云网络(VCN)中的任何Compute实例连接到该文件系统。
Object Storage: 一种Internet规模的高性能存储平台,可让您存储无限数量的任何内容类型的非结构化数据。此存储是区域性的,不与任何特定的Compute实例绑定。
Archive Storage: 一种存储平台,可让您存储无限数量的不需要即时数据检索的任何内容类型的非结构化数据。此存储是区域性的,不与任何特定的Compute实例绑定。
基础设施的垂直缩放和自动缩放(Vertical Scaling and Autoscaling):
如图3-5垂直缩放:
3-5
垂直缩放可以向上和向下扩展,例如如图可以选择1核到2核甚至4核和8核机器等,相反扩展同样支持,垂直缩放时,实例时需要停机然后进行操作扩展操作。
图3-6自动缩放:
3-6
自动缩放也是水平缩放(horizontal scaling),如图中所示,可以部署一个可自动扩展的映像,来启用大规模VM,如我们有一个VM,现在需要向外扩展到4个,反过来有4个实例,需要向内扩展至3个,向外扩展最终的目的其实是实现了高可用,一个VM发生故障,其他VM仍然正常运行保证用户业务的高可用性,向内扩展,通常会为了满足流量需求,自动缩放的设置过程是没有额外成本产生。以上扩展如果放在本地来实现将变得异常复杂和困难,在云中甚至可以进行设置自动缩放来实现,这也是云的一大好处。
图3-7自动缩放运行路线图:
3-7
实例运行-创建配置参数(操作系统映像、元数据、存储磁盘、子网)-创建实例池可以将实例置于不同可用性域中(便于管理),池化的好处可以将数百个VM当做一个单元来管理-最后进行缩放规则如:按照CPU使用率超过百分之七十则添加实例,否则移除实例,自动缩放可以满足流量负载和无缝缩放应用程序规模。
Container Engine
OS-level virtualization(操作系统级虚拟化)是一种操作系统范例,其中内核允许存在多个隔离的用户空间实例。这样的实例称为容器(LXC, Solaris containers, Docker),Zones(Solaris containers), virtual private servers (OpenVZ), partitions, virtual environments (VEs), virtual kernels (DragonFly BSD), or jails (FreeBSD jail or chroot jail),,从其中运行的程序的角度来看,看起来像真实的计算机。在普通操作系统上运行的计算机程序可以查看该计算机的所有资源(connected devices, files and folders, network shares, CPU power, quantifiable hardware capabilities)。但是,在容器内部运行的程序只能看到容器的内容和分配给该容器的设备。
在类似Unix的操作系统上,此功能可以看作是标准chroot机制的高级实现,该机制可以更改当前正在运行的进程及其子进程的明显根文件夹。除了隔离机制外,内核还经常提供资源管理功能,以限制一个容器的活动对其他容器的影响。
(来自WIKI)
容器可以虚拟打包和隔离应用程序来进行部署,容器可以共享操作系统内核访问,这样不需要对传统上虚拟机的需求,后者和前者有什么区别,如图4-0:
4-0
简单来说容器不同于虚拟机在于容器不需要安装完整的操作系统,也不需要主机服务器硬件副本。能够以最少的资源运行执行在其上面设计的任务,易移植的特性也使得在云技术领域大量容器技术需求。2013年问世的Docker是迄今为止最大和最流行的的容器平台。对于容器管理、监视、日志记录和预警等,则需要一个管理工具来统一托管和编排,Kubernetes(K8s)作为最常用的共有、私有云来提供托管容器服务,使得云中容器部署简单化、可扩展和管理统一化。图4-1展示了Oracle Kubernetes Engine 特点和功能:
4-1
图4-2展示了部署容器的三种方法:
4-2
Functions
Oracle Functions is a fully managed, multi-tenant, highly scalable, on-demand, Functions-as-a-Service platform. It is built on enterprise-grade Oracle Cloud Infrastructure and powered by the Fn Project open source engine. Use Oracle Functions (sometimes abbreviated to just Functions) when you want to focus on writing code to meet business needs.
The serverless and elastic architecture of Oracle Functions means there's no infrastructure administration or software administration for you to perform. You don't provision or maintain compute instances, and operating system software patches and upgrades are applied automatically. Oracle Functions simply ensures your app is highly-available, scalable, secure, and monitored. With Oracle Functions, you can write code in Java, Python, Node, Go, and Ruby (and for advanced use cases, bring your own Dockerfile, and Graal VM). You can then deploy your code, call it directly or trigger it in response to events, and get billed only for the resources consumed during the execution.
Oracle Functions is based on Fn Project. Fn Project is an open source, container native, serverless platform that can be run anywhere - any cloud or on-premises. Fn Project is easy to use, extensible, and performant. You can download and install the open source distribution of Fn Project, develop and test a function locally, and then use the same tooling to deploy that function to Oracle Functions.
You can access Oracle Functions using the Console, a CLI, and a REST API. You can invoke the functions you deploy to Oracle Functions using the CLI or by making signed HTTP requests.
Oracle 函数,有Fn Project开源引擎提供支持,功能强大但占用空间很小,通常使用它来完成简单的事情,Docker 映像部署,调用CLI(Command Line Interface),HTTP请求,通过REST API访问,使用Java、Python、Go等语言编写和部署代码,并且通过触发器调用代码响应事件等。
Oracle Functions Quicks Start(https://www.oracle.com/webfolder/technetwork/tutorials/infographics/oci_faas_gettingstarted_quickview/functions_quickview_top/functions_quickview/index.html)
图5-0列出了Oracle Functions一些通用功能
5-0