零基础5分钟上手谷歌云GCP - 服务器自动扩展

ops/2024/10/20 11:54:31/

简介

欢迎来到小李哥谷歌云GCP云计算知识学习系列,适用于任何无云计算或者谷歌云技术背景的开发者,让大家零基础5分钟通过这篇文章就能完全学会谷歌云一个经典的服务开发架构方案。

我将每天介绍一个基于全球三大云计算平台(AWS, Azure, GCP)的全球前沿云开发/架构技术基础解决方案,帮助大家快速了解国际上最热门的云计算平台上的最佳实践和前沿技术,并应用到自己的日常工作里。本次我将介绍如何根据服务器Virtual Machine的监控参数,自动扩展谷歌云GCP上的服务器。监控方案架构图如下:

方案所需基础知识 

什么是 Compute Engine Managed Instance Group?

Compute Engine Managed Instance Group(MIG)是 Google Cloud 提供的一项服务,允许用户管理和自动化一组虚拟机实例的部署和生命周期。MIG 可以根据预定义的模板和策略自动创建、更新、删除和分配实例,确保应用程序始终拥有所需的计算资源。它还支持负载均衡、自动修复和滚动更新,帮助用户轻松管理大规模、分布式的计算环境。

为什么要对服务器设置自动扩展?

设置自动扩展(Auto Scaling)是为了确保服务器资源能够灵活应对应用程序的动态需求。以下是自动扩展的重要原因:

提高可用性和性能

当应用程序的流量或负载增加时,自动扩展可以立即启动更多服务器实例,以应对增加的需求,确保应用程序始终保持高性能和快速响应,避免因资源不足导致的性能瓶颈。

优化成本

自动扩展不仅能在高峰期自动增加资源,还能在低谷期减少不必要的实例,从而优化资源使用,避免浪费。这种按需扩展的模式帮助企业根据实际需求动态调整资源,降低运营成本。

增强弹性

自动扩展使得应用程序能够自动适应不同的工作负载,无需人为干预。无论是应对突发流量还是逐步增长的负载,自动扩展都能确保系统的稳定性和弹性,减少停机风险。

简化运维管理

自动扩展减少了运维团队的手动干预需求,避免了在流量变化时频繁调整资源配置的繁琐操作,使得系统管理更加高效和自动化。

本方案包括的内容

1. 创建一个用于服务器自动扩展的Compute Engine服务器托管组

2. 指定一个监控参数,用于触发服务器横向扩展

3. 在谷歌云控制台上查看服务器托管组中的监控参数和服务器个数

云资源监控具体步骤

1. 进入谷歌云控制台,创建一个Compute Engine Instance Template服务器创建模板,用于自动扩容的服务器配置。

2. 将该Template模板命名为”autoscaling-instance01“,并选择资源为”Global“类型。

3. 点击”Advanced options“,为服务器添加MetaData元数据,”startup-script-url:gs://[YOUR_BUCKET_NAME]/startup.sh“和”gcs-bucket:gs://[YOUR_BUCKET_NAME]“,用于从Cloud Storage中获取开机启动脚本。

4. 接下来我们创建一个Instance Group,统一批量管理VM服务器

5. 为Instance Group命名为”autoscaling-instance-group-1“, template选择我们刚创建的”autoscaling-instance01“,资源类型选择”Single Zone“。

6. 为Instance Group配置区域,并关闭自动扩展,最后点击Create创建。

7.此时我们回到Compute Engine服务器管理界面,可以看到Instance Group基于我们在第一步中的Template创建的新服务器”autoscaling-instance-group-1-5dgz“。

8. 接下来我们为instance groups配置自动扩展功能,回到instance groups界面,选中我们创建的”autoscaling-instance-group-1“,并点击Edit修改。

9. 我们将Autoscaling配置开启,设置扩展组的服务器个数范围为Min:1到Max:3,添加触发服务器自动扩展的指标”New Signal“,并选则”Cloud Monitoring metric new“,再点击Configre。

10.  点击”Select Metric“选择触发服务器扩展的指标,在搜索栏中搜索自定义指标”appdemo_queue_depth_01“,该指标将监控服务器内的queue中的请求个数,选中该指标后点击Apply确认。

 11. 接下来我们设置触发服务器扩展的指标阈值,我们将阈值设置为150,再选择阈值类型“Gauge”,表示扩展组将计算过去几分钟内的均值,再与150做对比,若大于150则触发扩展。设置完成后点击Save即可完成扩展组配置。

如何用Python SDK创建一个Instance Groups自动扩展组

以下是示例代码:

from google.cloud import compute_v1
from google.protobuf import duration_pb2# 配置参数
project_id = "your-project-id"  # 替换为你的GCP项目ID
zone = "us-central1-a"  # 替换为你希望部署实例的区域
instance_group_name = "example-instance-group"  # 实例组名称
template_name = "your-instance-template"  # 替换为你创建的实例模板名称
target_pool = None  # 如果你有目标池,指定名称,否则设置为None# 创建实例组管理器
def create_instance_group_manager():instance_group_manager_client = compute_v1.InstanceGroupManagersClient()instance_group_manager = compute_v1.InstanceGroupManager(name=instance_group_name,instance_template=f"global/instanceTemplates/{template_name}",target_size=1,  # 初始实例数量base_instance_name="example-instance",zone=zone,target_pools=[f"projects/{project_id}/regions/{zone[:-2]}/targetPools/{target_pool}"] if target_pool else None,)operation = instance_group_manager_client.insert_unary(project=project_id, zone=zone, instance_group_manager_resource=instance_group_manager)operation.result()# 设置自动扩展策略
def set_autoscaler():autoscaler_client = compute_v1.AutoscalersClient()scaling_policy = compute_v1.AutoscalingPolicy(cpu_utilization=compute_v1.AutoscalingPolicyCpuUtilization(utilization_target=0.7  # 70%的CPU使用率),max_num_replicas=3,  # 最大实例数min_num_replicas=1,  # 最小实例数cool_down_period_sec=60,  # 冷却时间(秒))autoscaler = compute_v1.Autoscaler(name=f"{instance_group_name}-autoscaler",target=f"projects/{project_id}/zones/{zone}/instanceGroupManagers/{instance_group_name}",autoscaling_policy=scaling_policy,zone=zone,)operation = autoscaler_client.insert_unary(project=project_id, zone=zone, autoscaler_resource=autoscaler)operation.result()# 创建实例组管理器并设置自动扩展
create_instance_group_manager()
set_autoscaler()print("Instance group and autoscaler created successfully.")

代码解释

  • 实例组管理器: create_instance_group_manager() 函数用于创建一个新的实例组管理器(Instance Group Manager),它使用一个现有的实例模板来创建和管理实例。

  • 自动扩展策略: set_autoscaler() 函数为实例组配置自动扩展策略。当CPU使用率超过70%时,自动扩展策略将增加实例数量,最多扩展至3个实例。当负载降低时,实例数量会减少到最小1个实例。

  • 冷却时间: cool_down_period_sec 用于指定每次扩展或缩减操作后的冷却时间,以避免频繁的扩展和缩减操作。

以上就是在谷歌云GCP上对云资源监控并根据监控参数自动扩展服务器的全部步骤。欢迎大家关注零基础5分钟上手谷歌云系列,未来获取更多国际前沿的谷歌云GCP云开发/云架构方案!


http://www.ppmy.cn/ops/98108.html

相关文章

每天一个数据分析题(四百九十七)- 序列模式挖掘

序列模式挖掘 (sequence pattern mining )是指挖掘相对时间或其他模式出现频率高的模式,典型的应用还是限于离散型的序列。下列哪个选项不属于序列模式的时限约束? A. 最大跨度约束 B. 主键约束 C. 最小间隔和最大间隔约束 D. 窗口大小约…

Docker Desktop镜像路径修改一直报错

一 点击Apply & Restart报错 [Window Title] Docker Desktop[Main Instruction] Error migrating WSL disk[Content] An error occurred while migrating the Docker Desktop WSL data disk to its new location:moving disk file: rename C:\Users\Lenovo\AppData\Local\D…

远端登录基础配置实验

1.作用 方便远程管理,并且传统的console线只能一个用户访问,而远程管理的协议,可以多用户同时登录。 2.基础远程管理方式 Telnet 协议 telnet协议提供了一种通过终端远程登录到服务器的方式,可以远程对设备进行配置和管…

android——workermanager

一、workermanager Android Jetpack WorkManager是一个库,它简化了后台任务管理和异步工作处理,使得开发者可以编写更易于管理、可靠且响应用户交互的应用。WorkManager可以帮助你在合适的时间执行长时间运行的任务,比如定期数据同步、清理缓…

Qt+ffmpeg环境搭建

Qtffmpeg环境搭建 各平台常见视频开发库举例: iOS:AVFoundation AudioUnitAndroid:MediaPlayer,MediaCodecWindows:DirectShowLinux:GStreamer FFmpeg 库是一个跨平台的视频开发库, 还有 libVLC 也是一个跨平台的视频开…

P9145 [THUPC 2023 初赛] 世界杯

[题目通道]([THUPC 2023 初赛] 世界杯 - 洛谷) 简要题意:输出五常中的最强球队。 众所周知,每个国家的球队都有自己的长处,在不同规则下最强球队也有所不同。而小 M 制定的规则是输球场数最少,这是有道理的,因为输球…

「Python程序设计」基础语法:程序的注释、行与缩进

在我们编写程序代码的过程中,加入程序的注释,是一个很重要的过程。特别是对于软件工程来说,加入程序的注释,可以提高程序代码的可读性,让程序的维护难度降低。 程序注释的种类 首先要知道的是,程序的注释…

集合及数据结构第八节(下)———— 队列(Queue)、队列的模拟实现和练习

系列文章目录 集合及数据结构第八节(下)———— 队列(Queue)、队列的模拟实现和练习 队列(Queue)、队列的模拟实现和练习 队列的概念队列的使用队列模拟实现循环队列双端队列练习题 文章目录 系列文章目录集合及数据结构第八节(下&#x…