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)的配置飘移问题,以及探讨了如何通过引入集中管理配置的配置中心帮助消解配置飘移的问题,最后,想跟说的是 “用什么工具解决问题不重要,重要的是知道有这么个问题”。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
155 61
|
17天前
|
存储 弹性计算 安全
阿里云服务器配置选择策略参考及后期使用注意事项
对于初次购买阿里云服务器的一些新手用户来说,在云服务器配置选择和后期使用过程中有一些不清楚的地方,小编分享几点阿里云服务器配置选择策略,以及后期使用注意事项,购买过程中注意好下面这些事项,能让我们选对选好阿里云服务器,购买之后,在使用过程中,注意下面这些事项,能够让我们更好、更安全的使用阿里云服务器。下面是小编分享的一份详尽的阿里云服务器配置与使用指南,以供参考和借鉴。
|
2月前
|
安全 Linux 应用服务中间件
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
本文详细介绍了如何准备原料、搭建基础环境、进行安全防护、建设网站、管理证书以及开启BBR优化网络性能。主要内容包括获取健康云服务器、配置SSH登录、创建非root用户、启用密钥认证、安装Nginx、申请TLS证书、配置HTTPS自动跳转及优化网络性能等步骤。通过本文,读者可以掌握从零开始搭建个人网站的全过程。
51 1
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
|
1月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
2月前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
67 6
|
2月前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
2月前
|
监控 PHP Apache
优化 PHP-FPM 参数配置:实现服务器性能提升
优化PHP-FPM的参数配置可以显著提高服务器的性能和稳定性。通过合理设置 `pm.max_children`、`pm.start_servers`、`pm.min_spare_servers`、`pm.max_spare_servers`和 `pm.max_requests`等参数,并结合监控和调优措施,可以有效应对高并发和负载波动,确保Web应用程序的高效运行。希望本文提供的优化建议和配置示例能够帮助您实现服务器性能的提升。
95 3
|
2月前
|
存储 缓存 固态存储
阿里云服务器2核8G、4核16G、8核32G配置租用收费标准与活动价格参考
2核8G、8核32G、4核16G配置的云服务器处理器与内存比为1:4,这种配比的云服务器一般适用于中小型数据库系统、缓存、搜索集群和企业办公类应用等通用型场景,因此,多为企业级用户选择。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
2月前
|
存储 编解码 安全
阿里云服务器2核4G、4核8G、8核16G配置租用收费标准与活动价格参考
通常情况下,个人和一般企业用户在购买阿里云服务器时比较喜欢购买2核4G、4核8G、8核16G等配置,这些配置既能满足各种图文类中小型网站和应用又能满足企业网站应用、批量计算、中小型数据库系统等场景,2核4G配置适合新手入门或初创企业,4核8G与8核16G兼具成本与性能优势,适合通用场景,本文介绍这些配置的最新购买价格,包含原价收费标准和最新活动价格。
|
2月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
下一篇
开通oss服务