Java虚拟机生态技术及其7种编程语言探秘(下)
878
2022-05-28
首先,我们通过一个有趣的栗子来认识什么是镜像。
假如我来到一片空地,想要建一座房子,那么我需要砍木头、搬石头、画图纸等等,一顿忙活后,房子终于盖好了。这时,我发现地址选的不好,想迁到另外一处。按照之前的方法,我必须重新砍木头、搬石头、画图纸,想想都头大。我幻想拥有一种超能力,将盖好的房子复制一份,做成“镜像”,装在口袋里,等到了另一片空地,用这个“镜像”复制一座房子,拎包入住。
在云计算界,镜像就是这么神奇的存在。让我们从镜像的前世开始谈起,慢慢揭开它的神秘面纱~
温馨提示:本文干货较多,阅读可能需要二十分钟。
镜像的前世
说到镜像,不得不提起云计算业界大佬OpenStack。OpenStack是一个开源的云计算管理平台项目,旨在为公共及私有云的建设与管理提供软件,这个项目由几个主要的组件组合起来完成一些具体的工作。Glance组件负责虚拟机镜像的上传、注册、查找、编辑、删除等功能,它提供了一个REST API,允许用户查询虚拟机镜像元数据来获取实际的镜像文件。您可以将Glance提供的镜像存储在各种位置,从简单的文件系统到对象存储系统。OpenStack各组件关系及Glance所扮演的角色见下图。
在OpenStack整个云环境中,如果没有虚拟机镜像,就无法在计算节点上生成虚拟机,OpenStack也就失去了它的意义,所以说镜像服务是OpenStack的一个核心服务。
1、Glance组成
Glance包括以下服务:
Glance API
Glance API是系统后台运行的服务进程,对外提供REST API,接受最终用户或Nova Compute对镜像的请求,诸如镜像创建、检索、存储。
Glance API不会真正处理请求。如果是与镜像元数据相关的操作,Glance API会把请求转发给Glance Registry;如果是与镜像自身存取相关的操作,Glance API会把请求转发给该镜像的Store Backend。
Glance Registry
Glance Registry是系统后台运行的服务进程,负责处理和存取镜像的元数据,例如镜像的大小、格式和名称。Glance支持多种格式的镜像,包括AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD和VMDK,下次课程将着重介绍镜像格式的相关知识,敬请期待。
Database
镜像的元数据会保存到Database中,使用比较广泛的是MySQL和SQLite。
Store Backend
Glance自己并不存储镜像,真正的镜像是存放在Backend中的。Glance支持多种Backend,包括普通的文件存储、Swift、Amazon S3等。
2、Glance的操作方式
可以通过OpenStack Web UI、命令行和OpenStack CLI三种方式操作Glance,例如镜像的增删改查。对于Glance的镜像管理命令举例如下:
glance image-create
glance image-delete
glance image-update
glance image-show
镜像的今生
云计算从初创时的牛刀小试,到现如今成长为一个庞大的行业和生态,各云厂商不断为其注入能量。为了提升用户的云上体验,华为云在镜像服务产品能力和生态能力方面也做了很多工作,下面将从两个方面介绍镜像服务 IMS:
镜像产品能力:镜像有哪些类型?IMS提供了哪些产品能力?
镜像生态能力:围绕镜像衍生出了哪些产品?这些产品对用户有什么价值?
1、镜像产品
镜像分类
镜像是云服务器运行环境的模板,在购买云服务器时,镜像是必填项,有四个分类,分别是公共镜像、私有镜像、共享镜像和市场镜像。
他们有什么区别?实际该如何选择呢?下面我们将这四种类型做个对比:
在实际选择时,有一个简单的判断原则:
如果需要一个纯净版OS,则选择公共镜像
如果需要一个完整的软件环境,比如Magento电子商务系统,则选择市场镜像
如果希望基于当前云服务器实例复制新实例,则选择私有镜像
如果想使用别人共享的镜像,则选择共享镜像
镜像产品能力
1、创建镜像
流程
为了满足用户多种业务场景的需求,华为云将私有镜像再次分类为:系统盘镜像、数据盘镜像和整机镜像,从字面即可理解这几种镜像的含义,整机镜像也叫全镜像,可以包含系统盘和数据盘。整机镜像基于差量备份制作,相比同样磁盘容量的系统盘镜像和数据盘镜像,创建效率更高。
以系统盘镜像为例,下图展示了从ECS实例创建镜像的过程:从现有镜像开始,创建一个实例,自定义该实例,从该实例创建新的镜像,并最终创建新的实例。
用途
创建镜像可用于将ECS实例环境信息打包,快速复制新的ECS实例,常见于应用扩容场景。也可用于混合云部署场景,为了实现云上及线下资源同步,可以借助镜像导入导出功能。以将公有云资源同步到私有云为例,实现过程如下:
a. 基于ECS制作私有镜像,可以为系统盘镜像或数据盘镜像(不建议制作整机镜像,因其不支持导出)
b. 将私有镜像导出到OBS桶
c. 下载OBS桶中的镜像文件,上传到私有云使用
更多指导,请参阅“通过云服务器创建系统盘镜像”。
2、导入镜像
流程
支持将本地或者其他云平台的镜像文件导入到华为云使用,依据镜像文件类型可用来创建ECS实例或EVS数据盘。包括四个步骤,详细流程如下:
用途
上云,将计算资源从线下迁移到云上。
更多指导,请参阅“通过外部镜像文件创建系统盘镜像”。
3、导出镜像
流程
用途
将云上的ECS系统及软件环境复制到线下集群或私有云环境使用。
更多指导,请参阅“导出镜像”。
4、共享镜像
假设Jack要将自己的镜像共享给Rose,流程如下:
同样的镜像,又需要共享给Alice,可以通过为镜像添加共享租户实现:
Rose已经使用Jack共享的镜像完成业务部署,不再需要该镜像,可以拒绝已经接受的共享镜像:
Jack也可以单方向取消共享给其他人的镜像:
更多指导,请参阅“共享指定镜像”。
5、复制镜像
流程
区域内复制:实现加密镜像与非加密镜像的转换
跨区域复制:实现镜像在不同区域间迁移
用途
典型场景为系统环境多区域部署,以应对系统高可用及国际化的趋势,部署方式通常需要多区域+海外节点部署,快速实现跨区域复制ECS实例的方法之一便是通过复制镜像将一个镜像复制到多个区域,然后使用私有镜像快速创建实例。
更多指导,请参阅“跨区域复制镜像”。
2、镜像生态
除了上文介绍的镜像产品能力,华为云也建立了比较完善的镜像生态体系,比如Cloud-Init开源组件、用户数据、镜像的商品管理能力。
Cloud-Init是开源的云初始化工具,本质上是一系列Python脚本及组件,用来在云服务器启动时配置自定义信息。华为云公共镜像默认都已安装Cloud-Init,建议您在创建私有镜像时也进行安装。
用户数据注入,是华为云提供的一种自定义实例启动行为及传入数据的功能。当您有如下需求时,可以考虑使用用户数据注入:
通过脚本简化实例配置
通过脚本初始化系统
已有脚本,在创建实例时一并上传
其他可以使用脚本完成的功能
举个栗子,通过以下脚本为Linux ECS实例更新系统软件包,并且开启httpd相关服务。用户数据将会在ECS启动时由Cloud-Init进行调度配置。注入成功后,您的ECS就可以使用httpd服务了。
#!/bin/bash
yum update -y
service httpd start
chkconfig httpd on
迁移服务,即华为云主机迁移服务SMS,是一种P2V/V2V迁移服务,可以帮您把x86物理服务器或者私有云、公有云平台上的虚拟机迁移到ECS上,轻松实现服务器上的应用和数据迁移到华为云。更多信息,请参阅“主机迁移服务”。
镜像商品管理能力
华为云支持第三方ISV上架市场镜像,市场镜像通常由具有丰富云服务器维护和配置经验的服务商提供,并且市场镜像经过服务商和华为云的严格测试,可保证镜像内容的安全性。
今天小课就为大家分享到这里,希望对您认识镜像有所帮助。后续课程会展开介绍镜像前世今生中的某些知识点,比如Cloud-Init和用户数据注入技术,敬请期待。
镜像服务 IMS 镜像服务
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。