当我在 Google Cloud Platform 上创建集群环境时,我会创建虚拟机映像,然后从那里根据该映像启用自动缩放。
假设我需要更改此虚拟机上的任何内容,例如对 nginx 或 php 进行小配置:我通常会使用新的更改重新创建图像,并将这个新图像提供给自动缩放器。
我想知道是否存在任何最佳实践,可以让我在不重新生成图像的情况下编辑配置,很多时候我只是更改一个小的参数,比如缓冲区或增加 php 子项。
谢谢
答案1
您可以考虑使用不同的选项来配置您的图像和资源以实现您的目标。其中一个选项是使用Google Cloud 部署管理器它允许您使用模板和配置文件部署、管理和更新应用程序和资源。有两个使用部署管理器的高级示例此链接。
但是,由于您提到您只想对模板图像应用较小的更改而不构建新图像,我建议使用启动脚本使用您的模板。正如 EEAA 在他的回答中所说,这可能会导致新实例的准备就绪延迟,但这取决于您对模板映像应用了哪些更改,以及延迟会对应用程序性能产生多大影响。例如,如果启动脚本正在安装新包及其对新 VM 的依赖关系,安装需要 2 分钟,那么您可能需要为模板重建一个新映像,并进行所有这些更新。但对于更改缓冲区等参数或增加 PHP 子项,使用启动脚本更改这些参数的延迟应该可以忽略不计。
答案2
当然,不需要预先配置所有内容并将其嵌入到图像中,而是让自动缩放节点在启动时使用某种配置管理自行配置。
我使用 AWS 中的 Ansible 来执行此操作 - 图像启动、下载 ansible 剧本,然后应用它。
这种方法的一个缺点是,它会导致新创建节点的可用性出现延迟。如果这是一个问题,您可以采用混合方法,将大部分更改嵌入到映像中,并使用启动时配置管理进行小的增量更改。