系统配置管理的发展:总结与反思

这是一篇关于系统配置管理系列文章的第四部分,主要内容总结如下:

  • 系列概述:该文章是“系统配置管理的发展”多部分系列的第 4 部分,完整系列包括介绍、迁移与演进、性能考虑、总结与反思等。
  • 未满足的期望

    • 磁盘分区管理器:目前无法有效使用磁盘分区管理器,管理分区困难,缺乏便捷的 API,已决定在 CentOS 上使用 kickstart 脚本来管理分区。
    • Redis/Sentinel 管理器:目前 Redis/Sentinel 管理器尚未准备好用于生产环境,软件自动重写配置会导致问题,已改为手动处理配置更改。
    • 多实例 API 锁定:多实例锁定在 API 出现故障时可能会导致配置重建暂停,已实施警报系统来解决此问题。
    • 过时的主机:删除过时主机存在问题,可能会破坏认证逻辑,SRE 工程师需要手动删除 X509 证书签名。
    • 密码更改:SCM 可以管理用户密码,但无法有效匹配用户凭据,密码每分钟会更改两次,这让安全部门感到担忧。
    • TLS 证书管理和更新:目前缺乏扫描 Vault 中所有证书的实现,更新 CA 更复杂,需要研究如何在不造成基础设施停机的情况下进行更新。
    • service_restart 钩子:该钩子存在服务多次重启和在更改尝试失败时仍触发重启的问题,SCM 应根据包安装的输出结果来决定是否运行钩子。
    • 依赖其他基础设施:新 SCM 依赖 Consul、Vault 和库存系统等基础设施组件,引入缓存可以减轻一些停机问题。
    • 水平扩展的限制:SCM API 可以在多个服务器上运行,但配置更新过程缺乏扩展功能,目前正在研究解决方法。
  • 事件

    • 包存储过载:由于 SCM 对包更新任务的请求过多,导致包存储过载,最终只能禁用所有 SCM 代理,现在已实施缓存机制来防止此类事件发生。
    • 数据源响应问题:CMDB 管理员在 Kubernetes 中进行全量重新部署时,新 SCM 错误地接受了 404 响应,导致重新部署了许多配置和解散了集群,现在新 SCM 会在部署前检查响应代码。
  • 总结:SCM 在许多基础设施中都有应用,规模越大,SRE 团队的工作效率越高,但也存在一些问题,如基础设施可重复性、文档维护等。在开发 SCM 的过程中,需要考虑各种因素,如架构规划、测试维护等,并且可以通过自动化生成文档等方式来提高效率。
  • 衡量新 SCM 实施的成功:新 SCM 提高了处理常见任务的速度,减少了 routine 任务的时间,提高了服务之间的连接性,但也需要不断改进和优化。
  • 如果提前知道,现在想改变什么:希望消除代理级变量的使用,使用基础设施测试工具如 Goss 来迁移主机和测试 SCM,使用任务管理器如 RabbitMQ 来提高新更改的速度,以及在 Go 中使用纯接口而不是结构体。
  • 关于开发人员和用户:最初开发时,作为开发者和用户都经历了一些挑战,但一旦开始使用,大家都开始欣赏它,并且有团队成员不断为其贡献新功能。

总的来说,新 SCM 在提高工作效率方面取得了一定的成果,但仍有一些需要改进和优化的地方。

阅读 202
0 条评论