云社区 博客 博客详情
云社区 博客 博客详情

【云小课】基础服务第47课 谈谈镜像的前世今生

云小沫 发表于 2020-06-16 15:55:55 06-16 15:55
云小沫 发表于 2020-06-16 15:55:55 2020/06/16
5
7

【摘要】 从OpenStack Glance组件介绍,到华为云镜像服务 IMS产品和生态,你想要的,这里都有。

首先,我们通过一个有趣的栗子来认识什么是镜像。

假如我来到一片空地,想要建一座房子,那么我需要砍木头、搬石头、画图纸等等,一顿忙活后,房子终于盖好了。这时,我发现地址选的不好,想迁到另外一处。按照之前的方法,我必须重新砍木头、搬石头、画图纸,想想都头大。我幻想拥有一种超能力,将盖好的房子复制一份,做成“镜像”,装在口袋里,等到了另一片空地,用这个“镜像”复制一座房子,拎包入住。

在云计算界,镜像就是这么神奇的存在。让我们从镜像的前世开始谈起,慢慢揭开它的神秘面纱~

温馨提示:本文干货较多,阅读可能需要二十分钟。

镜像的前世

说到镜像,不得不提起云计算业界大佬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开源组件、用户数据、镜像的商品管理能力。


  1. Cloud-Init是开源的云初始化工具,本质上是一系列Python脚本及组件,用来在云服务器启动时配置自定义信息。华为云公共镜像默认都已安装Cloud-Init,建议您在创建私有镜像时也进行安装。

  2. 用户数据注入,是华为云提供的一种自定义实例启动行为及传入数据的功能。当您有如下需求时,可以考虑使用用户数据注入:

    通过脚本简化实例配置

    通过脚本初始化系统

    已有脚本,在创建实例时一并上传

    其他可以使用脚本完成的功能

    举个栗子,通过以下脚本为Linux ECS实例更新系统软件包,并且开启httpd相关服务。用户数据将会在ECS启动时由Cloud-Init进行调度配置。注入成功后,您的ECS就可以使用httpd服务了。

    #!/bin/bash
    yum update -y
    service httpd start
    chkconfig httpd on

  3. 迁移服务,即华为云主机迁移服务SMS,是一种P2V/V2V迁移服务,可以帮您把x86物理服务器或者私有云、公有云平台上的虚拟机迁移到ECS上,轻松实现服务器上的应用和数据迁移到华为云。更多信息,请参阅“主机迁移服务”。

  4. 镜像商品管理能力

    华为云支持第三方ISV上架市场镜像,市场镜像通常由具有丰富云服务器维护和配置经验的服务商提供,并且市场镜像经过服务商和华为云的严格测试,可保证镜像内容的安全性。

今天小课就为大家分享到这里,希望对您认识镜像有所帮助。后续课程会展开介绍镜像前世今生中的某些知识点,比如Cloud-Init和用户数据注入技术,敬请期待。






登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 7
点赞
分享文章到微博
分享文章到朋友圈

评论 (5)


胖豆

1楼2020-06-16 16:16:56
全篇干货,没有丁点废话,跟着镜像大神学习了!

泥巴。

2楼2020-06-16 16:19:28
厉害了~~收藏起来慢慢看

云小萌

3楼2020-06-16 16:23:16

还没想好叫什么

4楼2020-06-16 16:36:44

小墨

5楼2020-06-16 16:39:25
架构图清晰易懂,操作流程描述的生动有趣,好文
0/1000
评论

登录后可评论,请 登录注册

评论

您还没有写博客的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消