报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

使用 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:3710710

评论

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

融云「百幄」之数字人,升级交互体验的「新同事」

融云 RongCloud

AI 通信 数字化

2022下半年《软考-系统架构设计师》备考经验分享

劼哥stone

软考 系统架构师

OSPF路由协议一

初学者

11月月更

2022昇腾AI创新大赛圆满收官,看这届评委怎么说?

极客天地

Flowable 外置的 HTML 表单怎么玩?

江南一点雨

Java spring flowable JavaEE

动态路由协议(二)

我叫于豆豆吖.

11月月更

为什么要做用户留存分析

穿过生命散发芬芳

用户留存 11月月更

L1、L2范数理解--Ridge以及Lasso回归

Studying_swz

深度学习 11月月更

东方通Tongweb中间件Linux环境部署

@下一站

技术 中间件 linux 文件权限控制 Java core 11月月更

一次zuul版本升级产生的问题排查记录

骑牛上青山

Java spring 源码 Zuul 生产环境

通过阅读源码解决项目难题:GToken替换JWT实现SSO单点登录

王中阳Go

Go golang 高效工作 学习方法 11月月更

JAVA concurrency -- ArrayBlockingQueue源码详解

骑牛上青山

Java 源码

jvm(二)内存管理与虚拟机执行子系统

想要飞的猪

java对象内存布局 jvm加载子系统

简单时序逻辑电路

芯动大师

Verilog 11月月更 锁存器

算法题学习---单链表的排序

桑榆

算法题 11月月更

对于Ajax在MUI框架中的用运以及单 webview 模式中的下拉刷新功能探究

恒山其若陋兮

mui 11月月更

重塑感知,荣耀金洋!金洋奖两项用户体验奖项公布

易观分析

App 手机银行

HIFIVE音加加:多场景音乐版权解决方案,让「用音乐」更便捷

曲多多(嗨翻屋)版权音乐

版权保护 视频后期 数字版权保护

Redis LRU 内存淘汰算法大有玄机

码哥字节

LRU Redis 6.0

JAVA concurrency -- ThreadLocal 源码详解

骑牛上青山

Java 源码

使用gitflow时如何合并hotfix

Geek_pwdeic

JAVA concurrency -- ReentrantLock 源码详解

骑牛上青山

Java 源码

JAVA concurrency -- CyclicBarrier 与 CountDownLatch 源码详解

骑牛上青山

Java 源码

一场算力集结令,国产芯片如何开启冲刺跑?

脑极体

爬虫基本原理介绍、实现以及问题解决

石臻臻的杂货铺

爬虫

[力扣] 剑指 Offer 第三天 - 替换空格

陈明勇

Go 数据结构与算法 力扣 11月月更

动态路由协议(一)

我叫于豆豆吖.

11月月更

链路状态路由协议 OSPF (一)

我叫于豆豆吖.

11月月更

流程表单初体验

江南一点雨

Java spring springboot flowable

助力车路云一体化,EMQ在车路协同领域的应用实践

EMQ映云科技

物联网 IoT emq 11月月更 车路协同

分布式系统中的哈希算法

骑牛上青山

数据结构 分布式 算法 哈希

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