微信号:infoqchina

介绍:有内容的技术社区媒体

systemd和容器的姻缘;Google抢占式虚拟机GA版发布

2015-10-01 08:20 Q新闻

1
细说systemd
与容器的关系与结合


systemd是Linux平台下的一款系统和服务管理器,兼容SysV和LSB(Linux Standard Base)启动脚本。近日,CoreOS团队采访了systemd项目的创始人 Lennart Poettering,探讨了systemd的历史,以及与容器结合、未来的规划等问题。目前,Arch Linux、CoreOS、Debian、Fedora、openSUSE、Ubuntu等Linux发行版已经将systemd作为默认的服务管理器。


systemd历史


Lennart描述,在创建systemd项目之前,他们曾经非常关注由Canonical公司(Ubuntu发行版维护公司)创建的Upstart项目。Upstart是严格事件驱动,代码比较简洁,当时已经被Ubuntu和Fedora等发行版采用。但是经过细致了解,Lennart发现Upstart的基础设计是倒退的。他认为系统管理器应该计算到启动时的细节,而不是像Upstart那样只计算一个大概的工作,将细节留给开发者和系统管理员。因为这些区别,systemd项目开始创建。


在systemd项目的创建之初,这些创建者们从系统管理员和其他系统启动器中汲取灵感。最初systemd被设计成仅仅是一个初始化(init)系统,即作为一个独立的启动进程,完成Linux用户空间启动的基础工作。然后,启动并不是systemd需要解决的唯一问题,后续,systemd主要在Linux用户空间的创建和运行时维护上进行了大量工作。


目前,systemd已经可以被看做是操作系统构建过程中需要的基础构建模块集,它除了是一个初始化系统之外,还包括了设备管理、登录管理、网络管理、日志模块等等。


systemd和容器的关系


现代系统和服务管理中越来越多的应用到了容器。容器本身包含了应用需要的所有依赖,systemd的作用,就是作为粘合剂,将容器和操作系统结合起来。


目前,在systemd中,一些命令已经能够直接感知到容器。这些命令的控制和信息获取,除了针对当前主机,也能够针对主机上的所有容器。例如journalctl命令,除了支持显示主机日志之外,还能显示主机上运行的容器输出的日志,并且可以将所有容器、主机的日志合并和一个日志流。


对于systemd来说,除了能够支持管理容器的运行,同时也能够运行在容器中。目前对systemd的大部分测试本身就是在容器中完成的,这是因为和物理机器相比,容器有着更快的启动速度,并且更容易进行测试。


systemd现在也包含了一个命令systemd-nspawn用于管理容器。起初编写这个命令的目的是为了测试systemd,但是现在它已经可以作为生产用途。事实上,CoreOS的rkt容器工具,已经在使用这个命令作为底层容器后段。


更多systemd和容器、操作系统相关内容,可以观看Lennart在CoreOS Fest上的演讲:systemd at the Core of the OS。


systemd和其他容器工具的结合


目前systemd和rkt的结合已经基本上完成,rkt使用systemd-nspawn作为它的容器后端。对于systemd的开发者来说,他们更加希望systemd能够专注于单机的管理,而上层的工具,如rkt,可以基于systemd,提供诸如分布式、网络感知高级等功能。


2
Google发布抢占式虚拟机
价格上有绝对优势,但随时可能被关机


在测试版推出了几个月之后,Google发布了作为其Google Compute Engine云的一部分-抢占式虚拟机全面上市。抢占式虚拟机相比于Google所提供的其它虚拟机有着价格上的绝对优势,但是它随时可能被关机,Google只会提前发出30秒的警告。


除了随时可能被终止之外,抢占式虚拟机还有更多的限制:


  • 它们的最大的连续运行时间为24小时;

  • 它们可能不总是可用的;

  • 它们不能够进行在线迁移,而且在维护事件之后也不能重新启动。


必须要注意的是,抢占式实例并不会影响到收费操作系统到价格计算。例如,如果你安装了红帽企业版Linux,且在运行抢占式实例之前运行了35分钟,你就要付一个小时的费用。另外一方面,SUSE和Windows服务器镜像,均是以分钟来计算付费的,最少为10分钟。


来自Google云平台的高级产品经理Paul Nash如是说:


我们在Beta版和正式发布之间所做的主要工作就是优化平衡性以及看它们在生产环境是如何工作的。所以我们不会自动的突然将某个实例分离出来,所以我们能够保持非常低的中断率。


根据 最初的基准测试,它的表现为在一个拥有50个实例的池中,大约每5分钟就会有一个实例被终止。而根据另外一篇早期的报告,"一个虚拟机通常的运行时间为10-20分钟"。


在infoQ的采访中,Paul Nash 解释说,当一台虚拟机称为抢占式的时候,它只是可能随时被终止,但是它的磁盘却可以永久的保留,所以不会造成数据丢失,而且稍后当抢占资源可用时还可恢复到正常工作。然而,目前还不能做到将抢占式的虚拟机在线迁移到非抢占虚拟机。


在他们的发布长文中,Google还提到了在测试期间,整合了一些框架和产品到Google抢占式虚拟机中,包括Cycle Computing,一家提供目标为管理和扩展大型计算负载的产品套件,原来仅支持AWS;以及[Zync] ,一家提供渲染解决方案的公司。


Google的抢占式虚拟机进入的是和6年前AWS Spot 实例相同的领域,AWS Spot 实例的特点是根据竞价机制而不断变化的价格,根据一些相关的早期的分析,Spot 实例仅仅比所有的其它AWS 实例价格低5%。目前还没有数据公布关于Google抢占式虚拟机进入这个领域相关的内容,然而,Nash号称“系统已经被大量的使用”有成千上万个任务已经启动。


版权归属InfoQ,禁止私自抄袭转载。

回复关键词React | 架构师 | 运维 | 云 | 开源 | 物联网 | Kubernetes | 架构 | 人工智能 | Kafka | Docker | Netty | CoreOS | QCon | Github | Swift | 敏捷 | 语言 | 程序员


相关文章推荐


Twitter如何构建高性能分布式日志 !

Airbnb副总裁细说Airbnb的架构要点

当当开源elastic-job 分布式作业调度框架

荐文|九月十篇精选干货技术文章

互联网金融核心业务系统的技术思考


投稿可勾搭:

邮箱:editors@cn.infoq.com

合作QQ:1073600161

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 携程App网络服务通道治理和性能优化@2016 做个App到底需要多少钱?到底多少钱!!! IT 江湖(二)之 数据库篇 程序猿通用版:“教你”如何写出不可维护的服务端程序 西安校区(第03期)0816android就业班