写点什么

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

评论

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

OpenManus:开源版 Manus,无需邀请码,5 分钟极速体验!

阿里巴巴云原生

阿里云 云原生

蚂蚁数科开源虚拟机DTVM 开启区块链AI开发时代

科技热闻

AI智上 | 智能会计:某大型商业地产管理公司领先实践

用友智能财务

新闻速递丨Altair 与 Databricks 达成合作,加速数据驱动型创新

Altair RapidMiner

人工智能 机器学习 数据分析 RapidMiner 数据准备

白鲸开源WhaleStudio与崖山数据库管理系统YashanDB完成产品兼容互认证

白鲸开源

数据库 认证 崖山数据库 白鲸开源 WhaleStudio

12种API认证全场景解析:从Basic到OAuth2.0,哪个认证最适合你的业务?

数据追梦人

Sentieon软件发布V2020503版本

INSVAST

版本更新 基因检测 Sentieon 变异检测 生物信息分析服务

月薪3K测试 vs 30K测开:差距在这3个技能​

测试人

软件测试

浅谈国产数据库多租户方案:提升云计算与SaaS的资源管理效率

猫头虎

数据库

《Operating System Concepts》阅读笔记:p777-p777

codists

操作系统

大模型向量数据库去重的N种实现方案!

王磊

金仓数据库同城双中心灾备方案

金仓技术

KingBase 金仓数据库

Apipost免费版、企业版和私有化部署详解

数据追梦人

HCLSoftware推出解决方案

财见

NocoBase 本周更新汇总:联动规则条件左侧支持变量

NocoBase

开源 低代码 零代码 无代码 版本更新

得物业务参数配置中心架构综述

得物技术

业务架构 构架

CSSBuy 淘宝代购系统搭建攻略

tbapi

淘宝代购系统 反向海淘系统

Full GC 频率优化实战

vivo互联网技术

Java 后端 垃圾回收 系统优化

AI与智能能源管理:如何通过AI优化能源分配和消耗?

天津汇柏科技有限公司

人工智能 AI

政企产品经理AI工作流分享:需求->产品的敏捷实现(深度长文)

Ben的AI实验室

AI 产品经理 工作流 GPT DeepSeek

KubeEdge边缘设备管理系列(六):Mapper-Framework开发示例

华为云原生团队

云计算 容器 云原生

征程 6 VIO Frame buffer管理

地平线开发者

自动驾驶; 算法工具链 地平线征程6

十几行代码实现 Manus,Spring AI Alibaba Graph 快速预览

阿里巴巴云原生

阿里云 云原生

什么是安全密钥,它是如何工作的

运维有小邓

单点登录 多因素身份验证 安全密钥

户外全彩LED广告屏安装的注意要点

Dylan

LED LED display LED显示屏 户外LED显示屏 LED屏幕

MES系统数据采集功能:自动化设备数据采集

万界星空科技

数据采集 mes 设备 设备管理 设备数据采集

Amazon Q 从入门到精通 – 集成企业代码库

亚马逊云科技 (Amazon Web Services)

PowerVerse:利用Web3激励机制实现算力去中心化

PowerVerse

NFT web3 去中心化云算力

观测云产品更新 | 用户访问、基础设施、监控和事件等

观测云

产品迭代

立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务

阿里云大数据AI技术

大数据 spark 阿里云 Serverless EMR

CST表面等离子极化激元SPP --- 光脊波导与缝隙波导的转换

思茂信息

cst CST软件 CST Studio Suite

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