计算巢简介
计算巢服务是阿里云开放给企业应用服务商与其客户的服务管理PaaS平台。服务商在计算巢创建服务(可理解为云资源、软件编排后的集合)并发布上线后,用户便可通过此服务创建服务实例(基于计算巢服务创建的服务实体)以获取具体服务内容,即商家创建服务,用户通过商家发布的服务创建服务实例。
通过镜像部署是一种常见的部署方式。在计算巢中,需要在部署物管理中创建Ecs镜像部署物、分发部署物,然后在创建服务时关联镜像部署物,即可实现用户在创建服务实例时依据不同地域,自动部署对应地域的Ecs镜像。本文旨在说明ECS部署物的复制原理与创建服务实例时的关联原理。
ECS镜像部署物复制原理
页面介绍
如下图,为服务商创建部署物时的页面。
红色方框处选择镜像,当镜像类型为自定义镜像时,选择服务商账号中的自定义镜像;当镜像类型为云市场镜像时,选择云市场售卖的镜像。下方设置分发,为服务商所需镜像最终需要分发的目标地域,自定义镜像可以任意指定目标地域,云市场镜像指定地域需要与云市场可售卖的地域相同,即若云市场镜像售卖地域为北京、杭州,则指定上海地域将报错。
原理
服务商设置好地域后确认无误,即可点击分发部署物,此时,计算巢执行:
自定义镜像:
-
共享服务商选择的自定义镜像给计算巢官方账号;
-
计算巢官方账号将共享镜像复制为自定义镜像;
-
计算巢官方账号将自定义镜像复制至部署物中设置分发的地域;
-
等待复制完成;
-
设置权限等信息。
-
存储镜像ID,格式为 地域-镜像ID。
-
云市场镜像:
-
获取服务商选择的云市场镜像信息;
-
调用云市场接口查询分发地域的镜像ID;
-
存储镜像ID,格式为 地域-镜像ID 。
-
针对自定义镜像,复制镜像完成后,服务商账号中并没有分发后的镜像,究其原因是因为复制后不同地域的镜像存在在计算巢官方账号中。如此做的目的为:
-
个人账户镜像可能存在收费问题,计算巢官方账号统一管理规避费用问题;
-
个人账户复制存在镜像数量、大小的限额,计算巢账号统一管理规避此问题;
-
镜像权限管理由计算巢管理,防止服务商不会用导致漏权等问题。
针对云市场镜像,由于其已分发完毕,因此计算巢仅仅调用接口查阅具体地域-镜像ID关系并保存。
综上所述,本质上Ecs镜像部署物存储的是地域-镜像的映射关系。
计算巢镜像关联原理
具体使用方法参考文章:参考文章,本文只阐述原理。
原理
服务商设置镜像关联,本质上是将模板中的镜像ID(ImageId)和某一部署物做映射,计算巢通过此映射替换镜像ID为部署物中对应地域的镜像ID。用户部署时,需要选择具体的地域,计算巢在部署时执行:
-
解析模板版中存在的ImageId位置,查询其关联的Ecs镜像部署物;
-
获取服务实例部署地域,查询关联Ecs镜像部署物在该地域下分发的Ecs镜像ID;
-
将模板中的ImageID替换为部署物中的ImageId。
具体举例如下: 创建服务时模板中:
服务部署物关联:
部署物分发结果:
实际部署时,用户部署在北京地域,用户侧镜像ID处:
可见在部署时,计算巢替换了模板中的的镜像ID为部署物分发之后对应地域的镜像ID。因此,用户可以通过此镜像ID创建云资源。
综上所述,当服务商设置镜像关联后,计算巢便可通过此关联关系找到对应的Ecs镜像部署物,进而在用户部署时通过判断用户部署地域,从部署物中获取对应地域的镜像来创建云资源。镜像关联的优势在于自动替换镜像ID,否则服务商需要在模板中人工编写地域-镜像映射Mapping,这是一项繁琐而耗时的工作。