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

配置管理在容器化世界中的角色

  • 2015-12-10
  • 本文字数:1587 字

    阅读完需:约 5 分钟

Docker 已经作为基础自动化工具被广泛使用,越来越多的开发者开始争论 Docker 是否将最终替代配置管理工具这一问题。随着多数配置管理工具为 Docker提供支持,以上争论的结论似乎是二者将在使用中共存,而不是其中一个代替另一个。

配置管理工具需要确保一组服务器全部成员的初始状态与其所发生的结构变化都是一致的。配置管理所解决的问题还包括结构变化,即运行中的服务器结构变得与初始状态不一致。但前提条件是,每一项变化都必须通过配置管理工具实现。现代应用拥有成百上千的服务器,配置管理工具使得批量管理变得更便捷。

然而,在最近几年,开发者的工作变得更加灵活,应用结构中也引入了 API 主导服务导向架构。服务配置从整体到局部转化、及时发现实时的服务需求、规模变化速度加快等特性,使得开发者开始面对一个新问题,即配置管理的边界问题

容器技术使得根据配置需求建立稳定服务器的过程更加快捷,同时使得每次更改中放弃旧版本、重建一个新版本的过程更加方便。对比配置管理,容器看上去更贴近工作实际需求

——只需要将镜像与需求中的依赖关系相结合,输出服务节点。Netflix 早在其Amazon EC2 系统的AMI 中就应用了这个模型,其中, AMI 系统(Amazon 机器镜像)是一个可以启动服务器的镜像,通常被称作“金色镜像”。

容器技术使得子服务的体系架构工作更为便捷。任何服务导向的应用架构都将包含内部的服务依赖关系——多服务的复杂依赖关系。在这些服务的业务流程的设计中,拓扑结构与依赖关系同样重要。Docker 就能够很方便地对这种服务进行建模 Ernest Mueller ,DevOps 运动的长期成员、敏捷管理博客的合著者,说:

在服务依赖关系建立完成后,随之出现的是对子服务进行调整的需求。一些工具,如 Etcd Docker ,是通过将子服务紧密整合在容器环境中,来实现对其动态性的调整。在这些工具中,你可以定义一个多服务的环境,进而注册并通过编程来控制那些正在运行中的服务。

这是与纯配置管理相比较而言的,他还补充道:

你只需要改变软件程序,其余大部分工作就可以通过推动完成了,不需要直接建模。

那么金色镜像是否是一种“万金油”?容器是否将最终代替配置管理?

Ben Schwartz ,BancVue 的设计师、博客主,并没有认为这是个值得争辩的问题。他认为配置管理与容器所解决的根本问题是不同的。

对“容器与配置管理”的不休争论本质上就是错误的。我们从没有试图只通过使用一种技术就能解决全部的问题(你不会为了使用 Puppet 而放弃全部的 Java 库,也不会将负载平衡器设置在 Maven Central 中)。那么为什么我们要讨论容器与配置管理的问题呢?我建议我们应该集中精力去做我们经常做的事:选择正确的工具去做正确的事。

配置管理的目的是部署和变化管理。容器是虚拟机的轻量版,相比虚拟机,容器能更容易地连接现代应用中松散的子服务结构。这是容器的一个很明确的优势,但那并不意味着配置管理在这样的架构中没有价值。

配置管理能够用于集成环境下的很多工作:

Diego Zamboni 2014 年 UNIX 用户协会配置管理峰会发言中总结了二者的共存性:

在容器的时代,配置管理未来将是在那些小碎片中进行配置管理。

这里的“小碎片”指的是在容器化的系统中所构建的模块——应用、容器镜像与容器本身。他也提出警示,我们应该跳出“不变的基础服务”这个思维定式。他希望容器中配置管理系统的属性列表包括轻量化、分布式和弹性化,并牢记容器生命的短暂性。

查看英文原文: The Role of Configuration Management in a Containerized World


感谢张龙对本文的审校。

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

2015-12-10 18:002213

评论

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

悟了,应该都了解分布式架构下负载均衡器吧

知识浅谈

负载均衡 8月月更

五分钟给你的 gRPC 服务加上 HTTP 接口

万俊峰Kevin

Go 微服务 gRPC web开发 go-zero

迄今为止最完整的DDD实践

阿里技术

DDD 经验分享

我做了个《联机桌游合集: UNO+斗地主+五子棋》无需下载,点开即玩!叫上朋友,即刻开局!不看广告,不做任务,享受「纯粹」的游戏!

HullQin

CSS JavaScript html 前端 8月月更

直播商城系统——直播和电商的合理有效结合

开源直播系统源码

软件开发 直播系统源码 直播带货系统 直播商城系统 直播app系统

Go-Excelize API源码阅读(十三)—— GetSheetVisible、SetSheetFormatPr

Regan Yue

Go 开源 源码解析 8月日更 8月月更

腾讯发布第二季度财报,腾讯云数据库收入同比增长超过30%

科技热闻

Kubernetes Kruise Rollout

CTO技术共享

开源 签约计划第三季 8月月更

云原生(二十) | 深入了解Kubernetes(k8s)Service

Lansonli

云原生 k8s 8月月更

应用缺少POI数据,如何开发地点深度信息?

HarmonyOS SDK

自媒体代运营为何被诟病,代运营的水有多深

石头IT视角

文件管理-Linux系统压缩打包

Albert Edison

Linux centos 文件管理 tar命令 8月月更

Kubernetes 重大更改和删除

CTO技术共享

开源 签约计划第三季 8月月更

【React源码系列】React Context原理,为什么我建议尽可能少的使用React Redux管理状态 审核中

爱切图的木子老师

react源码 react context react redux

寻找海量数据集用于大数据开发实战(维基百科网站统计数据)

程序员欣宸

大数据 数据集 8月月更

基于CC2530(ZigBee)设计的景观照明控制系统+配套手机APP

DS小龙哥

8月月更

预约直播 | 基于预训练模型的自然语言处理及EasyNLP算法框架

阿里云大数据AI技术

深度学习 阿里云 算法框架

Kubernetes 云原生日志构建

CTO技术共享

开源 签约计划第三季 8月月更

付费会员之我见(43/100)

hackstoic

商业模式

计算机网络(二、物理层)

计算机网络 8月月更

低代码实现探索(四十八)后端服务

零道云-混合式低代码平台

圣庭医疗联合创始人谷红仓:高通量基因测序在药物研发和靶向治疗中的应用

阿里云弹性计算

HPC 高性能计算 生命科学 基因测序

3 分钟温故知新 RxJS 【创建实例操作符】

掘金安东尼

前端 函数式编程 8月月更

阿里云鲍文乐:基于事件的自动化运维最佳实践

阿里云弹性计算

事件 自动化运维 CloudOps

C++继承中的多继承语法与菱形继承

CtrlX

c c++ 面向对象 继承 8月月更

RocketMQ高可用设计之故障规避机制

急需上岸的小谢

8月月更

【LeetCode】课程表Java题解

Albert

LeetCode 8月月更

【精通内核】汇编下的C语言

小明Java问道之路

指针 C语言 结构体 汇编语言 8月月更

我眼中的无影云桌面‖云桌面使用者角度

乌龟哥哥

8月月更

【精通内核】深入理解汇编语言

小明Java问道之路

指令集 寄存器 汇编语言 8月月更 机器语言

Web登录很简单?开玩笑!

TimeFriends

8月月更

配置管理在容器化世界中的角色_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章