QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

Firecracker,无服务器计算的轻量级虚拟化

  • 2019-10-15
  • 本文字数:2255 字

    阅读完需:约 7 分钟

Firecracker,无服务器计算的轻量级虚拟化

我最喜欢的一条 Amazon 领导力原则就是以客户为中心。在我们推出 AWS Lambda 之时,我们专注于为开发者提供安全的无服务器体验,让他们可以不必管理基础设施。为了达到理想的隔离状况,我们为每位客户使用了专用的 EC2 实例。这种方法使我们能够实现安全目标,但也迫使我们在后台管理 Lambda 时做出一些取舍。此外,与任何新的 AWS 服务一样,我们不知道客户会如何使用 Lambda,甚至不知道他们对整个无服务器模型的看法。我们的计划是专注于提供卓越的客户体验,同时使后端随着时间的推移变得更加高效。


仅仅四年之后(Lambda 最初发布于 2014 年的 re:Invent 大会),我们就可以明确无服务器模型的市场价值了。如今,Lambda 每月为数十万活跃客户处理数万亿次执行。去年,我们将无服务器技术的优势延伸到了容器,推出了 AWS Fargate,它如今每周为客户运行数千万个容器。


随着我们的客户越来越多地采用无服务器,是时候重新考虑效率问题了。我们秉承“发明”和“简化”的原则扪心自问:为当今的容器和函数世界设计的虚拟机究竟该是什么样子?


Firecracker 简介


今天,我要为大家隆重介绍 Firecracker,这是一种使用 KVM 的新型虚拟化技术。您可以在不到一秒的时间内在非虚拟化环境中启动轻量级微型虚拟机 (MicroVM),充分利用传统虚拟机提供的安全性和工作负载隔离,以及容器带来的资源效率。


以下是有关 Firecracker 的一些需知信息:


安全 – 这始终是我们的头等要务! Firecracker 利用多层隔离和保护,暴露的攻击面极小。


高性能 – 您现在可以在短至 125 毫秒的时间内启动 microVM(2019 年这个速度还会进一步加快),这使其成为多种工作负载的理想选择,包括瞬态或短期工作负载。


经过广泛测试 – Firecracker 经过广泛测试,已经在为多种高容量 AWS 服务提供支持,包括 AWS Lambda 和 AWS Fargate。


低开销 – 使用 Firecracker,每个 microVM 仅占用大约 5MiB 内存。您可以在同一实例上运行数千个采用截然不同的 vCPU 和内存配置的安全 VM。


开源 – Firecracker 是一项活跃的开源项目。我们已经准备好审核并接受拉取请求,并期待与来自世界各地的贡献者合作。


Firecracker 采用极简构建风格。我们从 crosvm 入手,设置了一种极简化的设备模型,以降低开销,实现安全多租户。Firecracker 采用 Rust 编写,这种现代编程语言可以确保线程安全性,并防范可能导致安全漏洞的多种类型的缓冲区溢出错误。


Firecracker 安全性


正如我先前提到的,Firecracker 融合了大量安全功能! 下面列出了其中一部分:


简单访客模型 – Firecracker 访客将获得非常简单的虚拟化设备模型,以最大限度地缩减攻击面:网络设备、块 I/O 设备、可编程的间隔定时器、KVM 时钟、串行控制台和部分键盘(刚好足以允许 VM 重置)。


进程监禁 – Firecracker 进程使用 cgroups 和 seccomp BPF 进行监禁,而且可以访问一小部分受到严密控制的系统调用。


静态链接 – Firecracker 进程以静态形式链接,可以通过 jailer 启动,以尽可能确保托管环境安全干净。


Firecracker 实际操作


为了体验 Firecracker,我启动了一个 i3.metal 实例,下载了三个文件(firecracker 二进制文件、根文件系统映像和 Linux 内核):



我需要设置适当的权限以便访问 /dev/kvm:


$  sudo setfacl -m u:${USER}:rw /dev/kvm
复制代码


我在一个 PuTTY 会话中启动了 firecracker,随后在另一个会话中发出了命令(进程侦听 Unix 域套接字,并实施 REST API)。第一条命令设置我的第一台访客机器的配置:


$ curl --unix-socket /tmp/firecracker.sock -i \    -X PUT "http://localhost/machine-config" \    -H "accept: application/json" \    -H "Content-Type: application/json" \    -d "{        \"vcpu_count\": 1,        \"mem_size_mib\": 512    }"
复制代码


第二条命令设置访客内核:


$ curl --unix-socket /tmp/firecracker.sock -i \    -X PUT "http://localhost/boot-source" \    -H "accept: application/json" \    -H "Content-Type: application/json" \    -d "{        \"kernel_image_path\": \"./hello-vmlinux.bin\",        \"boot_args\": \"console=ttyS0 reboot=k panic=1 pci=off\"    }"
复制代码


第三条命令设置根文件系统:


$ curl --unix-socket /tmp/firecracker.sock -i \    -X PUT "http://localhost/drives/rootfs" \    -H "accept: application/json" \    -H "Content-Type: application/json" \    -d "{        \"drive_id\": \"rootfs\",        \"path_on_host\": \"./hello-rootfs.ext4\",        \"is_root_device\": true,        \"is_read_only\": false    }"
复制代码


一切准备就绪后,我就可以启动访客机器了:


# curl --unix-socket /tmp/firecracker.sock -i \    -X PUT "http://localhost/actions" \    -H  "accept: application/json" \    -H  "Content-Type: application/json" \    -d "{        \"action_type\": \"InstanceStart\"     }"
复制代码


这样我的第一个虚拟机就开始运行了:



在现实世界中,我可以使用 Firecracker 编写所有交互的脚本和程序,这样可以用更多时间设置网络和其他 I/O。但我还要参加 re:Invent 大会,我还有许多工作要去做,所以我把这部分作为练习留给各位读者。


与我们协作


您可以看到,这是一次重大飞跃,但也仅仅是我们迈出的第一步。敬请关注更多信息,并期待与您携手前行,共谋未来。收藏代码库、加入社区,与大家分享您的代码!


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/firecracker-lightweight-virtualization-for-serverless-computing/


2019-10-15 11:09839
用户头像

发布了 1854 篇内容, 共 121.7 次阅读, 收获喜欢 78 次。

关注

评论

发布
暂无评论
发现更多内容

第3周 代码重构:代码重构能力是架构师最基本的能力

陆不得

设计模式

丿淡忘

单例模式 极客大学架构师训练营 组合模式

week03 学习总结

Safufu

第三周总结

丿淡忘

极客大学架构师训练营

Week3-Homework

架构师训练营-第三章-总结

而立

极客大学架构师训练营

架构师第三周总结

跨域刀

极客大学架构师训练营

架构师训练营作业 (第三周)

默默

架构师训练营第三周作业

15359861984

浅析常用设计模式及应用场景

kk

架构师训练营week03总结

小高

小结3

Kiroro

设计模式的一些感想

紫极

架构师训练营-第三周-学习总结

狂奔嘀兔纸

极客大学架构师训练营

关于代码重构的感触

极客

作业3

annie

极客大学架构师训练营

架构师训练营第 3 周学习总结

Season

设计模式 极客大学架构师训练营

代码重构能力是架构师最基本的能力(第 3 周学习总结)

李德政

极客大学架构师训练营

架构学习(三)作业

漫步跑小鸡

架构师第三周作业

跨域刀

极客大学架构师训练营

架构师-第三周-命题作业

兔狲

架构师训练营 - 第三周作业

kk

第三周作业

嘻哈

第3周作业

uangguan

架构师训练营第三周总结

W_T

第三周学习总结

嘻哈

【架构师训练营】第 3 周作业

花生无翼

极客大学架构师训练营

常用的设计模式

stars

设计模式

张瑞浩

架构师训练营作业 (第三周)

小遵

架构师训练营(第 3周作业)

李德政

极客大学架构师训练营

Firecracker,无服务器计算的轻量级虚拟化_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章