这是一篇关于系统配置管理系列文章的第四部分,主要内容总结如下:
- 系列概述:该文章是“系统配置管理的发展”多部分系列的第 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 在提高工作效率方面取得了一定的成果,但仍有一些需要改进和优化的地方。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。