写点什么

使用 Terraform 与 Consul 自动化现代数据中心

  • 2015-05-25
  • 本文字数:2493 字

    阅读完需:约 8 分钟

2015 年 CraftConf 大会上, Mitchell Hashimoto 提出,当前的提供(provisioning)和配置(configuration)工具不足以成为“现代数据中心”的编排工具。现代数据中心的特点是敏捷和弹性,并为部署其上的应用提供所需的“服务”,如计算资源、DNS 和可跨不同厂商平台的 CDN。Hashimoto 介绍了两款 Hashicorp 公司的工具, Terraform Consul ,可用于在这些有挑战性的环境中提供自动化。

Hashimoto 是 Hashicorp 公司的创始人,同时也是 Vagrant Packer 两个项目的领导者。Hashimoto 首先回顾了数据中心技术的历史。从企业的角度来看,一个典型的数据中心的资源使用是从单物理服务器发展而来的,经历了使用多个裸物理服务器,并最终发展成为使用多个虚拟机实例。这一进化的最新趋势是走向容器化。配置、部署和维护的复杂性一直随着这一演进而增加,人们对自动化的需求变得极为重要。 CFEngine Chef Puppet Ansible 等工具的出现,正是为了满足这些原始需求。

Hashimoto 说,随着公共云和私有云技术的流行,我们现在运作的“现代数据中心”面临着新的挑战。曾经被集成在核心基础设施堆的技术,现在转向以服务为基础的产品,例如,DNS 的 CDN 和数据库。企业也越来越多地使用多个不同厂商的产品来构建自己的基础架构平台。这两个变化在传统配置的基础上,增加了额外的复杂性,Hashimoto 认为,当前的工具不能满足这种要求:

当你想要搭建你的应用程序时,你尽可编写足够多的 Chef 和 Puppet 自动化脚本,但是如果你没有一个自动化的方式来搭建所有需要的服务,那这有什么意义呢?你的应用程序将无法正常工作……

数据中心的核心工作通常包括获取(acquisition)、提供(provision)、更新(update)和销毁(destruction)资源(比如服务器、数据存储和负载平衡器等)。回首过去,这些进程是缓慢的,而结果是相对静态的,但是现在这些活动是快速的,并且输出是弹性可伸缩的。例如当我们要提供计算资源的时侯,这将一目了然。对于传统的数据中心来说,必须购买物理服务器、上机架、配置,并部署为一个固定的单位。然而,对于现代数据中心来说,通过调用 API 获得计算实例,指定启动时的相关配置即可,并且实例通常可以就地水平扩展,或者很容易为水平扩展添加多个实例。

Hashimoto 认为,手动是无法利用起现代数据中心所提供的速度和弹性的——我们必须实现自动化。自动化的现代数据中心的需求体现为:

  • 一条命令部署
  • 弹性分布式系统
  • 自动伸缩、自动健康监测
  • 经过知识梳理获得更好的团队合作

Hashimoto 介绍了 Hashicorp 的 Terraform ,这一款可以有效地构建、结合并启动跨数据中心和不同供应商的基础设施的工具。例如,Terraform 可以启动一个 Amazon Web 服务(AWS) EC2 计算实例和一个 DigitalOcean Droplet 计算实例,然后通过访问 Dyn DNS 服务配置这些实例。Terraform 使用人类友好的文本格式,声明式定义基础设施,而且 Terraform 模块能够执行指定的较低级别的配置操作。

Terraform 可由“terraform apply”一条命令来激活,可以使用“terraform plan”命令来预览活跃的实例。该命令的运行输出是一个有序列表,描述了声明式定义的当前基础设施的状态变更。同时,还能表明变更是就地执行的,还是销毁的性质的(例如,重新启动服务器)。这个信息可用于确定操作是否适用于特定的时间点,例如,维护窗口是否打开。

plan 命令的输出也可以保存到文件中,以便日后决定执行基础设施的变更。Hashimoto 认为,预览基础设施变更的能力是 Terraform 的最重要的特征之一。可以在目前开发的工作流程中,组合基础设施代码的变更和配置计划,如创建 pull 请求、审查 diff 和接受变更。

Hashimoto 讲到,在 Terraform 出现之前,运维团队负责管理生产环境的技术栈是令人难以置信的,因为他们需要深刻地理解当前云平台、确定当前基础设施的状态,并且计算出由此产生的状态转换的结果。 Hashimoto 认为,运维工程师和 DevOps 工程师希望能在技术栈之上工作,像 Terraform 这样的工具可以实现他们的愿望,在很大程度上,这同很多开发工程师已经从汇编语言转到第三代编程语言上工作的情境类似。

这就是我对核心运维工程师与应用运维工程师之间的区别的定义。 在每家公司中都有这样的运维工程师,他们知道如何部署一套高可用的数据库集群,当然也有不知道这些,但是想要知道如何去搭建高可用数据库集群的运维工程师。我们可以选择教他们如何去具体实现,或者为他们提供抽象的封装 [一如 Terraform 所提供的]。

演讲的第二部分介绍了 Hashicorp 的 Consul ,这是一款以跨数据中心、高可用的方式提供服务发现、配置和编排的工具。Hashimoto 表示,Consul 可以用来回答一个企业的基础设施中,诸如下列这些问题:“服务 X 在哪里”、“服务Ÿ的实例是否健康”、“当前正在运行的服务是什么”、“服务 Z 的配置是怎样的”,以及“在我的平台上是否还有其他人在执行操作 A?”。

Consul 通过 DNS 或 HTTP API 提供服务发现功能,同时支持跨数据中心的内部服务或外部服务的发现。 使用shell 脚本实现了健康检查,并允许创建自定义的服务验证协议。 Consul 还提供了高可用的键值对存储,由此可以暴露一致的存储值,用于配置参数的调优,而不必非要执行配置管理工具。 可调优的操动实例包括指定服务的位置、指明系统处于维护模式,或者设置服务的 QoS 参数。

Hashimoto 说,Consul 还提供了一套编排原语、通过 UDP 协议跨数据中心广播异步“事件”、
通过 TCP 协议让指定的计算机同步执行“exec”指令,以及通过实现长轮询、react、事件机制或者其他操作实现定制化的监控。

关于 Mitchell Hashimoto 中 CraftConf 的演讲,“自动化现代数据中心,从开发到生产”,包括视频等更多详细信息,请参阅大会网站 Terraform v0.5 的下载地址在 Terraform.io 网站,Consul v0.5 的下载地址在 Consul.io 网站。

查看英文原文: Automating the Modern Datacenter with Terraform and Consul


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者)。

2015-05-25 10:3710735

评论

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

DataWorks赋能企业一站式数据开发治理能力

阿里云大数据AI技术

一位年薪 180 万的蚂蚁金服大佬扔给我的笔记,建议看完

Java架构师迁哥

智邦国际ERP系统31.99版本发布,解锁精准高效协同管理模式!

叶落便知秋

一周信创舆情观察(6.28~7.4)

统小信uos

KDD CUP 2021首届图神经网络大赛放榜,百度飞桨PGL获得2金1银

百度大脑

神经网络 百度

前端性能优化实践 | 百度APP个人主页优化

百度开发者中心

大前端 百度app

Hightopo可视化入局“智慧工厂”,助力企业改革创新

一只数据鲸鱼

数据可视化 绿色工业 3D数据可视化 高炉炼铁 智慧工业

我删库跑路失败了

程序员鱼皮

Java c++ Python Linux 服务器

吹水、面试、进阶齐飞!Github霸榜的阿里分布式设计实录也太香了

Java架构师迁哥

【工作感悟】2021最值得加入的互联网公司有哪些

欢喜学安卓

android 程序员 面试 移动开发

【工作感悟】Android大厂高级面试题灵魂100问

欢喜学安卓

android 程序员 面试 移动开发

GitHub星标70K阿里大佬手写的Spring Boot实战手册

Java架构师迁哥

DataPipeline实时数据融合平台V3.0里程碑版发布!澎湃新动能

DataPipeline数见科技

大数据 数据融合 数据管理

4轮技术面+1轮HR面,成功拿到腾讯40k*16的Offer ,详解面试流程和真题解析

Java 程序员 架构 面试

腾讯二面:Linux操作系统里一个进程最多可以创建多少个线程?

白亦杨

底层技术支撑智慧出行,汽车智能化发展下区块链大放异彩

旺链科技

区块链产业

永续合约交易所开发,虚拟币合约交易系统源码

教你给场景添加天空盒,超简单!

ThingJS数字孪生引擎

大数据 大前端 开发 可视化 数字孪生

2021年,BAT接连入局!“低代码”为何能备受资本追捧?

优秀

低代码

北鲲云超算平台——让科技更好地服务于用户

北鲲云

使用tar 命令进行文件的归档和压缩

学神来啦

云计算 Linux 运维 linux运维

越学越有趣:『手把手带你学NLP』系列项目07 ——机器翻译的那些事儿

百度大脑

机器学习 nlp

32岁的我裸辞了,八年Java老鸟,只因薪水被应届生倒挂,在闭关三个月后拿到阿里Offer,定级P7!

Java架构师迁哥

统一缓存帝国 - 实战 Spring Cache

悟空聊架构

缓存 passjava 悟空聊架构 7月日更 Spring Cache

什么?C语言也能try...catch!

实力程序员

GNURadio报错Unable to create context(windows10环境)

allu

问题总结

金九银十面试必备,“全新”突击真题宝典,阿里腾讯字节都稳了

Java 编程 程序员 架构 面试

不愧是阿里内部“SpringCloudAlibaba学习笔记”看完直接斩获12家offer

Java 编程 架构 面试 微服务

免费分享JDBC与MyBatis的优秀图书

Java入门到架构

Java

HashMap从入门到精通,原创好文,值得收藏!

wljslmz

Java hashmap java8 HashMap底层原理

TDengine JDBC整合Druid

山石道人

涛思数据 tdengine Druid Spring MVC taos-jdbc

使用Terraform与Consul自动化现代数据中心_亚马逊云科技_Daniel Bryant_InfoQ精选文章