CTO指南 -- 为什么说超过2台ECS就要考虑如何避免“配置飘移”问题

简介: 本文我们探讨了在云原生时代,云上开发和运维应用时(超过2台ECS)的配置飘移问题,以及探讨了如何通过引入集中管理配置的配置中心帮助消解配置飘移的问题。

CTO指南 -- 为什么说超过2台ECS就要考虑如何避免“配置飘移”问题

摘要 本文探讨了业务系统多台ECS多实例运行时,基于配置文件管理配置会遇到的著名的“配置漂移”问题,以及如何基于类似阿里云ACM的配置中心集中化管理方案来帮助解决这个问题

各位CTO/CIO,你为系统准备时光机了么?

“配置飘移”这个问题其实不是什么新鲜玩意,国外早在业界提了很多年了,业界每年因配置飘移而产生的故障和系统失效问题带来的经济损失那是相当的可观,但是国内业界关注和重视甚至“意识”到这个问题存在的人都相当的少。配置飘移,简单来说就是各位CTO逼自己回答下面2个问题

config_drift_1

“设置” - 恢复出厂设置

config_drift_2

上图操作大家应该不陌生,生产系统配置就好比我们手机上的“设置”,要知道我们的手机“专人”维护配置,VIP待遇,尚且随着随着时间的推移,安装的APP越来越多,某天可能不得不需要恢复出厂设置,更何况我们的生产系统?如果上一次做“配置”的那个哥们离职了,他曾经对系统做的那些“神”操作还如何恢复往日荣光?

创业艰难百战多,十万旌旗斩阎罗

所谓千里之行,始于足下,一个伟大的激动人心的创业项目可能是下面这个最典型的基本高可用(无单点)的技术架构开始的

config_drift_3

我们后文就以这个典型的场景为例来阐释一下什么是配置飘移问题,其给生产可能带来的伤害。

配置飘移(Configuration Drift)

配置漂移指的是随时间做出的引起计算机或服务偏离所希望的配置的改变。

差不多一半的不定期系统停机时间可归因于配置问题。配置指的是标识和设置硬件和软件的属性的值的过程,使得系统按特定的行为匹配运行环境。当开发和运维一天一天的对发生的需求和问题做出响应时,服务器和系统可逐渐地变得以偏离于策略或标准的方式配置,该过程被称为配置漂移。

如果计算机和应用部署不是类似地被配置,则管理多个机器和应用运行实例可快速地变得复杂。即使对于最初被完全相同地配置的计算机和应用副本,配置改变也可能随时间发生。配置漂移越大,就变得越难以调试问题,使得对系统的有效管理和维护更困难。

上面的概念好枯燥,还可以更枯燥么?答案是可以, 参见 有效管理配置漂移!

理论是枯燥无味的,我们以上文中的典型架构场景具体看一下一些可能会导致配置飘移的案例帮助你更好的理解问题所在。

Web 服务器配置

随着业务的发展,应用服务器压力越来越大,在某个时间点,你可能发现其中一台机器的Heap被打爆了,修复很简单--临时增加最大堆大小。假设堆大小是运维人员登录到服务器时一次性更改,增加堆大小并重新启动Web服务器。然后在有些地方指出了Web服务器所在的机器正在进行维护。但不幸的是增加堆大小这个临时配置并没有被反馈到Web服务器配置基线里面,这样在未来新的Web服务器扩容进来并投产进来时,可能会面对因较低的堆设置,导致用尽内存从而带来的意外的故障。

计划的数据库密码变更

作为定期维护的一部分,生产数据库的密码可能需要被定期更新。这将导致应用服务器的数据源配置需要关联的更新。这可能可以通过手工或者自动化脚本以在生产上应用这些变更。

这个过程中脚本中的编程错误可能导致不正确的数据源配置从而导致某台应用服务器无法连上数据库,从而带来意外的系统宕机时间。或者,如果脚本需要手动运行每个服务器,管理员忘记将更改应用于其中一个服务器。

数据库URL变更

让我们考虑另外一个可能导致数据源变更的例子,随着业务的拓展,一个新的数据库投产,这样应用服务器上的数据源配置需要变更JDBC URL以便指向新的数据库。
为了让事情更有趣,让我们假设旧的数据库服务器保持运行,也许它会用于备份。假设再次的,组织通过手工或者自动化脚本以在生产上应用这些变更,这个过程中产生的错误带来的问题可能比上一个更难以发现,因为可能运行了一段时间后才发现,有些应用服务器居然连的还是老的数据库。

版本管理带来配置管理的焦油坑

一个好汉三个帮,现代软件开发,我们会在应用中引入各种组件依赖,而这些组件各有版本,在各条业务系统上,会根据自己的需求和问题,以不同的节奏升级自己的包,随着时间的流逝,俯瞰自己的所有系统,即使同一个组件也使用了各种不同的版本,这些不同的版本开放了不同的配置参数,这种版本配置焦油坑往往将我们拉入噩梦。一个好好的配置参数,在一个业务系统上表现良好,在另一个业务系统那里却是导致诡异问题的恶魔。

环境配置的复杂性

配置在环境间也有极大的可能产生飘移,在软件生产流水线上,一般标配是开发、测试、预发、生产四个环境,这些环境之间的配置并不完全相同,一些有助于调试类的配置只能在开发、测试环境打开。基于本地的开发和生产放在云上也常常会导致一些在本地调整的配置忘记了应用到云上的生产环境从而导致意外的生产服务停机。

铁打的团队流水的人

作为一个CTO,相信你经常需要面对这种时刻,关键时刻,痛失了一员大将,或者需要挥泪斩马谡,但是1个月的交接时间做个代码的“后事托付”都还不够呢,更何况是线上运行需要的额外的一些重要的配置变更?

你新招来的哥们投入迭代,开发新需求,然后在新的环境和机器上做部署,但不幸的事,系统跑不起来啦或者跑起来总是时不时出一些诡异的问题,因为曾经趟过的那些坑,曾经做的一些“黑配置”和紧急的fix已经随着那个兄弟一起带走啦。

配置快照

配置快照是指将系统中关键配置,例如SLB配置,nginx配置httpd.conf, 应用服务器配置,如tomcat.xml, 数据源配置,数据库配置RDS,缓存配置,应用配置如application.yml等定时(例如每天或者每小时)做一个快照存储到配置中心。

如下图所示:

config_drift_4

让你的系统有恢复“出厂设置”的可能性

有了定期的配置快照之后,很容易通过在如下通用2个配置管理的流程中,在适当的点上使用配置中心提供的配置管理工具做到我们系统的一键恢复“出厂设置”或者一键恢复到上一个有效配置状态,

config_drift_5

config_drift_6

一般来说,配置中心提供的工具集应该包含但不限于以下能力:

  • 统一分发配置到多台机器的能力
  • 配置版本管理
  • 从配置中心拉取配置并放到本地(可以使用类似confd这种工具)
  • 配置分发/拉取状态追踪(例如推送轨迹)
  • 配置变更审计能力

常用的配置中心产品介绍

  • 阿里云 ACM: 阿里云应用配置管理,前身为Diamond,算是国内最早的配置中心产品。目前在Git上有不同开源版本,在阿里云上有商业版供使用。
  • Spring Cloud Config: Spring Cloud官方用于做配置中心的工具,主要是在Java Spring领域使用。
  • ZooKeeper: ZK其本身虽具备一部分配置中心能力,但是由于本身定位于分布式协调信息管理,因此仅比较适合在应用规模不大的情况下做配置中心。

总结

本文我们探讨了在云原生时代,云上开发和运维应用时(超过2台ECS)的配置飘移问题,以及探讨了如何通过引入集中管理配置的配置中心帮助消解配置飘移的问题,最后,想跟说的是 “用什么工具解决问题不重要,重要的是知道有这么个问题”。

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
人工智能 API 开发者
FastAPI开发者福音!FastAPI-MCP:将FastAPI秒变MCP服务器的开源神器,无需配置自动转换!
FastAPI-MCP是一款能将FastAPI应用端点自动转换为符合模型上下文协议(MCP)的开源工具,支持零配置自动发现接口并保留完整文档和模式定义。
257 14
FastAPI开发者福音!FastAPI-MCP:将FastAPI秒变MCP服务器的开源神器,无需配置自动转换!
|
1月前
|
存储 缓存 网络协议
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。
|
14天前
|
Ubuntu 安全 网络安全
在Ubuntu系统下使用vsftpd配置FTP服务器的步骤
以上就是在Ubuntu系统下使用vsftpd配置FTP服务器的步骤。这些步骤都是基础的,但足够让你建立一个简单的FTP服务器。如果你需要更高级的功能,例如SSL加密、虚拟用户等,你可能需要进一步研究vsftpd的配置选项。
64 13
|
22天前
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
75 24
|
16天前
|
存储 弹性计算 数据处理
阿里云服务器2核8G、4核16G、8核32G配置热门实例价格、性能与场景全攻略
2核8G/4核16G/8核32G配置的阿里云服务器在阿里云活动中目前有经济型e、通用算力型u1、通用型c7、通用型g8i和通用型g8y五种实例可选,虽然配置相同,但是这些实例规格之间的价格差别是很大的。面对不同配置和类型的云服务器实例,有的新手用户往往因为不知道他们之间的区别,所以不知道如何选择。本文将针对常见的2核8G、4核16G、8核32G配置,深入剖析阿里云服务器中的经济型e、通用算力型u1、通用型g7及通用型g8y实例,以供大家参考和选择。
|
22天前
|
Ubuntu 网络协议
在Ubuntu 18.04服务器上配置双网口以接入互联网
总结一下,配置双网口在Ubuntu 18.04服务器就像一场冒险游戏,你小心翼翼地从查看网络布局开始,铺设新线路,最后得到了通往互联网的双重通道。祝你在网络世界的冒险旅程中更上一层楼!
57 11
|
22天前
|
存储 弹性计算 固态存储
阿里云服务器配置怎么选择?根据用户类型及使用场景配置推荐
如何选择阿里云服务器配置?2025年全解析!个人用户可选68元/年的轻量应用服务器(2核2G、200M带宽),企业用户推荐199元/年的ECS通用算力型u1实例(2核4G、5M带宽)。针对不同需求,还有内存型、计算型、高主频型及GPU服务器等多规格实例。带宽选择需根据访问量,小流量应用3M即可,高流量建议10M起步。存储方面,系统盘40GB够用,数据盘按需选择ESSD或SSD云盘,确保I/O性能满足业务需求。阿小云为你整理最新攻略,助你高效选型!
|
22天前
|
存储 弹性计算 人工智能
阿里云服务器2核8G/4核16G/8核32G配置热门实例规格对比与选购指南
如果我们是计划购买2核8G/4核16G/8核32G配置的阿里云服务器,在阿里云活动中一般会有经济型e、通用算力型u1、通用型g7、通用型g8i和通用型g8y几种常见的实例规格可选,尽管这些实例在配置上相似,但它们在性能、价格以及适用场景上存在显著差异。本文将深入解析这些实例规格的性能特点、价格差异及适用场景,为用户在阿里云服务器购买时提供详实的参考依据。
|
1月前
|
SQL 存储 数据库
KingBase服务器优化:详解Kylin参数配置。
通过适当的调整和优化这些关键参数,你的Kylin可以运行得更加流畅和高效。就像一个经过精心调校的赛车,无论是在赛道的直道还是弯道上,都能展现出卓越的性能。希望这次深入参数“操控盘”的旅行,能让你更好地理解和优化你的Kylin配置。记住,优化是一个持续的过程,不断地试验和改进,你的Kylin才能越来越强大。
55 20
|
24天前
|
弹性计算 固态存储 ice
阿里云服务器ECS内存型2核16G、4核32G和8核64G配置实例、费用和性能参数表
本文整理了2025年阿里云服务器租赁价格表,涵盖2核16G、4核32G和8核64G配置收费标准。CPU内存比为1:8,提供多种实例规格如ECS内存型r8i、通用算力型u1等。价格由CPU内存、公网带宽及系统盘组成,支持优惠折扣(年付6.7折起)。文中详细列出各配置参考价格、公网带宽与系统盘收费,并对比不同实例规格性能,如Intel Xeon和AMD EPYC处理器系列,帮助用户选择高性价比方案。具体价格以阿里云官网为准。
98 4

热门文章

最新文章

下一篇
oss创建bucket