现象:利用google云搭建VM服务,在搭建实例组有一个"自动调节"功能,可以自动添加/删除MV,当自动添加VM时可能新添加的VM就是一个新的VM,你部署的代码或者环境都没了。现在解决该问题。
1、新建模板VM:作为基础VM模板,然后进虚拟机进行配置(环境配置和代码部署)。https://console.cloud.google.com/compute/instances
2、完成后,用IP进行访问,测试你的服务是否能正常访问。如果正常,停止该虚拟机。然后创建映像:来源磁盘选择刚刚新建的VM磁盘。
3、 利用映像创建实例模板:启动磁盘选择刚刚新建的映像
3、创建实例组或者实例:根据刚刚新建的实例模板创建VM。实例组开启自动调节,但满足需求时,会自动添加或者删除VM,只保留需要的VM个数。
4、创建负载均衡:主菜单中(网络服务--负载均衡)中创建负载均衡,后端配置中在实例组一项选择刚刚新建的实例组。
5、负载均衡的公共IP就是最终的访问IP,DNS解析绑定到该IP即可。
总结:当访问并发加大时,超过设置的调节限制,系统会自动添加新的VM。当我们根据上面的步骤设置后,新建的VM就会根据映像自动创建新的VM,这种情况下新VM就是完整的,部署的代码和其他服务都正常。否则新MV会根据第一次创建模板VM的启动磁盘为准,新建出来的VM就是新的,没有我们部署的代码和服务。
附:代码更新:如果我们的代码有更新,需要重新部署到服务器,可以用以下方式。
6、重新启动模板VM(第1步创建的模板VM,我们创建映像时关掉的VM)。启动后通过SSH进入VM进行代码部署,然后通过IP进行访问,测试新代码的部署是否生效。
7、通过测试后关闭该VM。然后去映像中删除上次建的映像(第2不创建的映像)。注意,记录下该映像的名称。
8、根据第2步的方式创建映像,注意新映像名称必须跟上一步删除的映像名称必须一样,不然实例组新建VM是无法找到映像。新的映像启动磁盘用第6步部署了新代码的VM磁盘。
9、完成后,更新实例。在实例组中选择实例进行"重新启动/替换"。替换完成后,新部署的代码或者服务在每个VM都生效。