通过提前bake Docker镜像加快基础设施的启动速度
作者:DockOne 发布时间:2022-06-14 06:01:46
我之前概述过加速AWS基础设施启动的方法。本文中谈到的方法可以进一步减少大约50%的时间,即在应用运行前,预先bake(pre-bake)所需服务。
我们的微服务应用托管于Docker容器,可以从Docker仓库或私有仓库中拉取(pull)。不像在Ubuntu服务器上使用bash脚本进行安装和配置,每个应用所对应的独立Docker镜像可以单独复制到所需实例。这意味着在处理较大负载时可以快速添加实例,如果此方法可行,值得在组织中推广应用。
用户体验的头一件事是演示流程,展示应用如何为团队的Github 分支(branches)创建环境。我们预先为应用demo在EC2 AMI创建单独镜像。这样,我们仅为需要运行应用的用户启动Docker容器。
可扩展IT自动化工具Ansible可以完成大部分工作。我们用它运行各种简单任务,如更新服务器host文件,生成证书,拉取需要的Docker镜像。举个例子,我们可以运行指定命令以及使用在Ansible YAML设置文件中的指定变量。在bake镜像时,Ansible拉取Docker镜像方法如下:
- name: pulling docker images
become: true
command: docker pull {{ item }}
with_items:
- "registry.runnable.com/runnable/image-builder:{{ IMAGE_BUILDER_VERSION }}"
- "swarm:{{ SWARM_VERSION }}"
- "google/cadvisor:{{ CADVISOR_VERSION }}"
考虑到bake到EC2镜像的东西必须是唯一的,否则如果每个镜像都有相同的标志文件,就没有办法加以区分。为了将Docker安装到AMI以及将容器bake到AMI,我们需要删除Docker key.json文件和Docker pid file。Docker在下次启动时还会生成这些文件,所以删掉也没关系。
实例必须和用户链接,这样我们才能协助他们的应用以及确定他们所使用的资源量。为了使实例在部署之后更加个性化,我们将亚马逊SSM代理bake到镜像中,这样就可以实现在第一时间与实例进行交互。为用户分配和配置实例的速度越快,内部DNS和路由配置允许应用访问的速度也就越快。
对于预先bake Docker镜像到亚马逊AMI这种做法,尽管目前支持它的理由还比较有限,但还是值得推广到几乎所有的架构。特别是Runnable这种一个实例可以对应各种应用、数据库和服务的情况,只要你知道实例在部署时需要什么,就可以使用上述方法。可以使用多个AMI来填补所有角色需要,或者只用一个有多个Docker镜像的实例,这些镜像不被运行也没有资源消耗。这种做法对高可用基础设施的扩展速度非常有帮助,可以将其缩短到数秒钟。
需要运行什么,就bake什么,这种做法理解起来很简单。由于存在重复的问题,我们还不能做到先发制人的准备好证书和指定配置,不过这些都是不计算在等待时间内的小进程。网络传输,也可能有磁盘I/O通常在服务器创建和启动新的Docker容器的过程中耗费较多时间,因此减少这类时间消耗能显著的提高启动速度。另外,这些考虑并非只针对特定产品。创建预先bake的AMI这种做法对任何团队来说,都能在创建新实例的时候节省等待时间。


猜你喜欢
- 本文介绍了使用Docker部署 spring-boot maven应用,分享给大家,具体如下:部署过程分为以下几个步骤:创建一个简单的spr
- 大家都知道做网站推广很关键,现在我想谈谈如何利用特殊时段的热门关键词为网站带来流量。春节前,我上搜搜问问和百度知道等知道(问题)系统逛的时候
- “我们将围绕B2B企业客户,建立中小企业“人才+能力提升”需求动态系统,逐步开发
- ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的低层协议,负责将某个IP地址解
- 文件名称简介accwiz.exe辅助功能向导append.exe打开指定文件夹中的数据文件arp.exe显示和修改“地址
- 拷贝数据远程拷贝数据的时候,我们一般使用rsync命令,但是如果拷贝大量的小文件,会导致rsync的传输速度慢。使用tar pv lz4打包
- 怎样设置Godaddy的企业邮局呢?今天就教大家设置企业邮局。首先,要把域名的MX记录做一下解析:MX 0 – smtp.secureser
- 11月12日消息,世界著名的搜索引擎服务提供商Google与国内最大的电子商务软件及服务提供商ShopEx正式达成合作伙伴关系,双方将在目前
- linux下的C\C++多进程多线程编程实例详解1、多进程编程#include <stdlib.h> #include <
- 在本系列文章第二十八篇:Windows2003服务器安装及设置教程——IIS优化篇二(使用eAccelerator加速PHP)和本系统文章第
- 网站备案很无奈,上网搜索了些关于备案的攻略不知道对各位有没有帮助.由于国家信产部一纸奇怪的规定,国内所有的网站都需要做备案了,不备案,搞不好
- 投放 AdSense 广告以后,通过对网站和广告的优化,可以有效提高您的广告收入,同时提升网站的用户体验。首先,广告收入最根本的是展示量,所
- 内容摘要:“注册”这个行为,在基本层面上搭建了网络平台与用户之间的联系通道;在细分受众的层面上发挥了门槛作用,将一部分不太可能应用该平台的网
- 话说某日暴某站菊花,发现Web目录权限极小,除了基本的上传功能健全,几乎没有任何权限,修改,删除,替换等都不奏效.心想此站权限设置果然牛B,
- Discuz!论坛的积分设置很灵活和详细,在论坛后台的工具 => 积分策略向导能够完成论坛所有的积分设置,打开积分策略向导页面,如下图
- CentOS下RabbitMq高可用集群环境搭建教程分享给大家。准备工作1、准备两台或多台安装有rabbitmq-server服务的服务器我
- 今天在用想在自己的机器上测试几个程序,结果报Service Unavailable,关于这方面的资料倒是有一些,但是没有个全的,这里整理一下
- 今天下午在上蓝色理想时在首页,点击论坛的页面时就出现了页面无法打开的问题,接着想进入论坛(http://bbs.blueidea.com )
- 10月16日消息,据国外媒体报道,谷歌计划推出一个在线商店,为任何配置网络浏览器功能的设备提供电子图书,从而打乱亚马逊的Kindle占统治地
- 前言linux权限多设的比较松的其实,但有的虚拟机还是不能跨目录访问的。在提不了权的情况下,试试如下代码吧。运气好的话说不定就跨过去了。下面