ECS镜像(一)镜像产品及生态概览-阿里云开发者社区

开发者社区> 竹涧> 正文

ECS镜像(一)镜像产品及生态概览

简介: ECS 镜像(Image)是云服务器ECS运行环境的模版,其重要性不言而喻。为了更好的提升用户云上体验,阿里云在镜像服务能力及生态能力方面做了很多工作,下文将整体上从两个方面介绍ECS镜像: 镜像产品能力,可以通过镜像做什么?ECS针对镜像提供了哪些服务能力? 镜像产品生态,围绕镜像和ECS衍生了哪些产品?通过这些产品可以对用户产生哪些价值? 带着这些问题,让我们开始ECS镜像之旅。
+关注继续查看

ECS 镜像(Image)是云服务器ECS运行环境的模版,其重要性不言而喻。为了更好的提升用户云上体验,阿里云在镜像服务能力及生态能力方面做了很多工作,下文将整体上从两个方面介绍ECS镜像:

  1. 镜像产品能力,可以通过镜像做什么?ECS针对镜像提供了哪些服务能力?
  2. 镜像产品生态,围绕镜像和ECS衍生了哪些产品?通过这些产品可以对用户产生哪些价值?

带着这些问题,让我们开始ECS镜像之旅。

镜像产品

ECS镜像.png | center | 745x714

镜像分类

image.png | left | 748x138

如上图所示,在新购ECS的选择镜像的时候有四个分类,分别为系统镜像,市场镜像,自定义镜像,共享镜像。那么它们有何区别?我们该如何选择镜像呢?下面我们先对四种镜像类型做一个对比:

镜像类型
可用性
安全性
费用
限制
系统镜像
阿里云官方维护,经过严格的测试及
生产验证,可用性非常高。
免费
市场镜像
优质的第三方服务商提供,经过阿里云审核后上架,同时有售后技术支持,可用性通常较高。
较高
收费/免费
自定义镜像
由用户基于快照创建或者通过镜像导入方式上传,质量完全由用户自己把控,可用性稍差。
免费(基于市场镜像做的自定义镜像除外)
quota限制
共享镜像
共享镜像源不会经过阿里云官方审核,稳定性及安全性得不到保证。
免费(基于市场镜像做的自定义镜像除外)
quota限制

如果从从实践方面考虑,选择镜像建议是:

  1. 只需要一个纯净的OS环境,选择官方系统镜像。
  2. 需要一个完整的软件环境,比如PHP架构 LAMP,选择镜像市场。
  3. 希望基于当前实例配置复制新实例,使用自定义镜像。
  4. 希望将镜像共享给其它云账号,使用共享镜像。

镜像产品能力

阿里云镜像为了满足用户多种业务场景的需求,从OpenAPI到控制台均提供了完备的产品能力。

创建镜像

用途:通过创建镜像将ECS系统及软件环境打包,从而实现快速复制ECS的能力;实现云上及线下镜像资源的同步。

目前​用户制作镜像有两种方式,一种为基于阿里云的ECS实例及快照制作,另外一种是线下制作通过镜像导入上传到阿里云。

在线:通过ECS实例或系统盘快照制作

通过 CreateImage 创建镜像 , 支持三种方式

  • 基于ECS实例创建
  • 基于系统盘快照创建
  • 基于系统盘+数据盘快照创建(全镜像)
离线:线下制作通过镜像导入上传
典型场景
  • 应用扩容,扩容是最常见的运维操作之一,使用ECS做应用扩容的典型方式之一就是通过自定义镜像快速创建弹性ECS,大致过程如下:

    • 用户基于一台运行中了其扩容应用的ECS的实例制作自定义镜像,镜像完成后,用户将会得到一份完整的包含了系统+软件的镜像数据。
    • 使用自定义镜像创建所需的ECS,ECS启动成功后,引流到扩容ECS,比如挂载到类似slb的负载均衡设备。
  • 混合云部署,典型的混合云场景是单一公有云+私有云,为了实现云上及线下资源同步,这个时候可以借助镜像导入导出能力,以公有云镜像导出到私有云为例,大致过程如下:

    • 基于ECS或者系统盘镜像制作自定义镜像
    • 将自定义镜像导出到OSS
    • OSS下载镜像到私有云环境使用

导入镜像

用途:将线下的镜像导入到阿里云环境用于创建ECS
步骤:
  1. 建议参考 导入镜像注意事项 ,检测镜像是否满足需求。
  2. 建议安装cloud-init以保证镜像的hostname,yum源等配置正确,参考cloud-init安装手册
  3. 检测镜像格式是否为vhd或者raw(qcow2格式即将支持),如果不是先将格式转换为vhd或者raw, 镜像转换可以参考 使用qemu-img转换镜像格式
  4. 将​镜像上传至同一地域的OSS,参考镜像导入手册进行导入操作。
  5. 控制台查看导入进度,进度100%后镜像可用,通常镜像的导入时间取决于镜像大小,请耐心等待。

为了保证导入镜像创建ECS的成功率,导入前需特别关注导入镜像注意事项

典型场景
  • 上云,从计算资源从线下迁移到云上,可以借助导入自定义镜像到云上到方式,导入成功后即可通过镜像创建ECS。

导出镜像

用途:将阿里云自定义镜像在线下集群或者私有云环境使用,可以使用镜像导出功能。
步骤:
  1. 首先通过在线创建自定义镜像
  2. 镜像状态可用时,通过镜像导出 功能将其导出到同一地域到OSS中
  3. 将OSS文件下载到线下环境使用
典型场景

将云上ECS的系统及软件环境复制到线下环境。

复制镜像

用途:跨地域使用相同的自定义镜像创建ECS
步骤:
  1. 创建自定义镜像
  2. 通过控制台/API将自定义镜像复制到指定地域

    1. 只支持复制到本地域外到其它中国大陆地域
    2. 复制到海外地域需要 提工单申请
  3. 复制操作成功后需耐心等待复制任务进度完成,耗时通常取决于镜像大小及地域。

镜像复制的本质是快照的复制,所以会占用用户快照容量quota,且快照目前已收费,会产生一定的快照费用。

典型场景
  • 应用多地域部署,随之应用高可用及国际化的趋势,部署方式上通常需要多地域+海外节点部署,快速实现跨地域克隆ECS的方式之一就是通过镜像复制将一个镜像复制到多个地域,通过自定义镜像快速创建ECS。

共享镜像

用途:将镜像共享给其它阿里云账号
步骤:
  1. 镜像owner将镜像授权给指定阿里云账号,最多授权50个用户。
  2. 授权用户可以查询到共享镜像且使用其创建ECS

共享镜像本质上是自定义镜像,阿里云不保证完整性及安全性,用户使用共享镜像要谨慎!

修改镜像

目前仅支持镜像名称与描述的修改。

镜像生态

镜像生态.png | center | 748x300

上文介绍了镜像的创建,导入,导出,复制等基础能力,下文将重点介绍ECS镜像生态体系。

用户数据与Cloudinit

用户数据

__用户数据即UserData(下文了为了简化统一使用UserData)__,是阿里云 ECS 提供的一种自定义实例启动行为及传入数据的功能,该功能兼容 Windows 实例及 Linux 实例,主要有两种用途:

  • 作为实例自定义脚本,在启动实例时执行。
  • 作为普通数据,将一定的信息传入实例中,您可以在实例中引用这些数据。

举个例子,使用UserData配置yum源,DNS,NTP,脚本如下。

#!/bin/sh
# Modify DNS
echo "nameserver 8.8.8.8" | tee /etc/resolv.conf
# Modify yum repo and update
rm -rf /etc/yum.repos.d/*
touch myrepo.repo
echo "[base]" | tee /etc/yum.repos.d/myrepo.repo
echo "name=myrepo" | tee -a /etc/yum.repos.d/myrepo.repo
echo "baseurl=http://mirror.centos.org/centos" | tee -a /etc/yum.repos.d/myrepo.repo
echo "gpgcheck=0" | tee -a /etc/yum.repos.d/myrepo.repo
echo "enabled=1" | tee -a /etc/yum.repos.d/myrepo.repo
yum update -y
# Modify NTP Server
echo "server ntp1.aliyun.com" | tee /etc/ntp.conf
systemctl restart ntpd.service

UserData将会在ECS启动时由Cloudinit进行调度配置。

当然我们在vm内部也可以访问到UserData,有以下两种方式:

  • 访问 100.100.100.200/latest/user-data 获取
  • 查看文件 /var/lib/cloud/instance/user-data.txt

Cloudinit

__Cloudinit组件__,开源项目,本质上是一系列python脚本及组件用来在云主机启动时配置ECS, 阿里云的系统镜像默认都安装了Cloudinit组件,我们也建议用户自定义镜像安装cloudinit。

可以理解为Cloudinit是UserData的执行引擎。

更多可以参考 userdata for ECS使用场景

实例标识

实例标识提供了一种验证ECS身份的机制,用户可以通过验证ECS身份为阿里云ECS来做一些事情,比如镜像或者软件的license控制,更多可以参考 ECS实例标识介绍及实践

迁云工具

可以帮助用户完成从线下物理资源或者其它云厂商到阿里云云资源到迁移,即同时支持p2v,v2v。同时迁云工具同时支持windows及linux系统,具体操作可以参考:使用迁云工具将服务器迁移至阿里云。

镜像商品

阿里云2014年5月开始支持第三方ISV上架镜像商品,镜像商品通常由行业内拥有丰富云服务器维护配置到服务商提供且经过阿里云的审核,无论从可用性及安全性均可以得到很好的保障,有以下优势:

  • 按需定制软件环境,可以实现一键部署。
  • 可用性及安全性高,阿里云审核保障镜像安全性。
  • 镜像商品有完善的售后技术支持。
  • 计费模式灵活,目前支持:后付费,按量计费;包月;包周

其它

后续我们还会陆续提供镜像检测,修复的能力,来帮助用户提升自定义镜像的成功率及降低制作成本。

下期看点

镜像制作工具Packer实践,我们一起来制作镜像!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
运维编排场景系列----更新ECS镜像
运维编排场景系列----更新ECS镜像 场景介绍       为了保证ECS实例的运行环境始终是安全的,包括安装最新补丁,或者更新所依赖的组件等。我们需要从一个源镜像开始逐步更新,最终生成一个新镜像,然后用于测试和生产。
16858 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4482 0
镜像格式二十年:从 Knoppix 到 OCI-Image-v2
Docker 始于2013年的 dotCloud,最初的 Docker = LXC + aufs,前者就是所谓的 Linux 容器,而后者则是本文的主角:镜像。
165 0
Confluence 6 从生产环境中恢复一个测试实例
请参考 Restoring a Test Instance from Production 页面中的内容获得更多完整的说明。
1011 0
云服务器 ECS 镜像迁移:应用迁云之镜像迁移-(4)迁移流程和实践方法
应用迁云之镜像迁移-(4)迁移流程和实践方法 迁移流程 1.镜像迁移可行性评估 当您选择镜像迁移前,需要对被迁移的服务器主机详细信息进行调研,并按照镜像迁移可行性评估小节中描述的要求及限制进行评估。
7354 0
+关注
竹涧
极简主义工程师一名,阿里云弹性计算从事研发工作,聚焦分布式系统、DevOps、SRE等领域。
16
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载