在 AWS 上,透过 Ansible 脚本来将原本运行在 Intel 或 AMD 的节点迁移到 ARM64 以降低营运成本。
在 图一 里,addReplica.yml 负责现存的 ClickHouse 集群添加新的 ARM64 节点。removeReplica.yml 负责将 Intel 或 AMD 节点移除。其他 3 个 yml 则是我原创的脚本逻辑可复用机制,相比 Ansible 自带的机制轻量许多。
在 图二 里,是该 SaaS 环境的 purple 集群。左边是 ClickHouse 集群负责提供数据支持,右边是许多与之交互的 Kubernetes pods。
原先的框架是透过 Jenkins 来调度 Ansible 脚本,这里 Jenkinsfiles, Ansible 脚本都放在内部 github 服务器,除了需要 SRE 触发运行外,严格按照 Infrastructure as Code 执行。
图三 展示在设计 addReplica.yml 与 removeReplica.yml 时,两个动作能相互对冲,从而能在误操作发生时,可以及时用另一个脚本恢复。