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

news2024/9/19 9:45:33

简介

欢迎来到小李哥谷歌云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.coloradmin.cn/o/2065392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

改编版猜数字小游戏,猜错了就黑屏(整蛊版本)

1. 前情提要 在前一篇博客中,我们了解到了如何获得随机数,并且通过运算可以规定所获得的这个随机数的范围在多少数值之间 那么接下来我们就需要去具体去实现猜数字游戏的各种布置 2. 布置主菜单 玩一个游戏,最开始的界面都会是一个主菜单…

iPhone13手机照片被误删,有什么方法可以恢复吗?

在日常使用手机时,我们可能因为误操作、手机崩溃、或者其他原因,导致iPhone13手机中的照片丢失。遇到这种情况,手机误删照片如何恢复?在本文中,我们将分享3个妙招,帮助您恢复iPhone13上误删的照片。 一、通…

2024年第二季度SSD出货量下滑18.4%,降至6750万部,但容量增长4.1%至90.6EB

2024年第二季度SSD Exabytes实现连续季度增长 仅企业级PCIe SSD有所增长:尽管所有其他类别均出现下滑,但企业级PCIe SSD的增长是由其所有终端市场需求增加所驱动的。总体SSD出货量:总体SSD出货量环比下降18.4%,降至6750万部&…

Leetcode JAVA刷刷站(76)最小覆盖子串

一、题目概述 二、思路方向 为了解决这个问题,我们可以使用滑动窗口的方法。滑动窗口是数组/字符串问题中常用的一个技巧,特别是用于寻找子数组或子字符串的问题。 这里的关键是,我们需要知道字符串t中每个字符的出现次数,并在遍…

【Python】函数高阶【上】

本篇文章将讲解函数高阶部分: (1)函数的嵌套 (2)闭包 (3)装饰器 1、函数的嵌套 Python是以函数为作用域,在作用域中定义的相关数据只能被当前作用域或子作用域使用。 &#xf…

(QT-UI)十四、在时间轴上绘制一段段时间片

本系列预计实现 ①刻度上方文字显示, ②时间轴拖动效果, ③时间轴刻度缩放, ④时间轴和其他控件联动显示, ⑤鼠标放置到时间轴,显示具体时间。 ⑥通过定时器,实时更新时间轴 ⑦时间轴上绘制时间片 完…

PostgreSQL11 | 事务处理与并发控制

PostgreSQL11 | 事务处理与并发控制 本文章代码已在pgsql11.22版本上运行且通过,展示页由pgAdmin8.4版本提供,本文章第一次采用md文档,效果比csdn官方富文本编辑器好用,以后的文章都将采用md文档 事务管理简介 事物是pgsql中的…

自己动手写CPU_step2_构建SOPC

ROM实现指令寄存器 上一篇中实现的五级流水线需要一个输入,这个输入是指令数据,而指令数据是通过取指阶段的PC控制的,PC会一直循环的取指令。 指令寄存器实现: //指令寄存器 module inst_rom(input clk,inp…

【C++ Primer Plus习题】2.1

问题: 解答: #include <iostream> using namespace std;int main() {cout << "在下国林!" << endl;cout << "家住天府之国!" << endl;return 0; }运行结果: 考查点: 预处理头文件命名空间main函数c的标准输出和换行字符…

机器学习/数据分析--通俗语言带你入门K-邻近算法(结合案例)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 机器学习是深度学习和数据分析的基础&#xff0c;接下来将更新常见的机器学习算法注意&#xff1a;在打数学建模比赛中&#xff0c;机器学习用的也很多&a…

初识Linux · yum和vim

目录 前言&#xff1a; 1 yum 1.1 yum是什么&#xff1f; 1.2 Centos的生态和yum的本地配置 1.3 yum的相关操作 2 vim 前言&#xff1a; 我们学习Linux的时候&#xff0c;是有编程语言的基础的&#xff0c;那么呢&#xff0c;我们学习Linux的时候最迫切的就是希望能打印…

Flat Ads:全球金融应用现状与发展趋势深度解析

随着全球数字化进程的加速,金融科技(FinTech)应用正逐渐成为现代生活不可或缺的一部分。从移动银行到数字支付,再到智能理财工具,金融应用正在重新定义传统金融服务的边界,并推动行业的深刻变革。 本篇文章 Flat Ads 将从全球视角出发,深入剖析当前金融应用市场的现状,探讨未来…

开关电源测试系统方案:系统结构功能、特点、测试项目

为了应对开关电源测试中的复杂挑战&#xff0c;我们推出了NSAT-8000系列开关电源ate测试系统&#xff0c;它以其全面的功能和灵活性&#xff0c;适应了电源产品测试场景&#xff0c;解决了测试难题。 开关电源测试系统 NSAT-8000系列之开关电源测试系统适用于AC/DC和DC/DC开关电…

苹果macbook电脑怎么玩《黑神话:悟空》游戏教程来了

火爆全网《黑神话&#xff1a;悟空》是一款基于中国神话故事《西游记》改编的动作角色扮演游戏&#xff0c;它在PC平台上的系统要求已经公布&#xff0c;但目前官方尚未发布Mac版本。不过&#xff0c;Mac用户可以通过使用系统兼容工具如CrossOver来尝试在Mac上运行这款游戏。Cr…

《黑神话:悟空》游戏攻略:第一回合打法教程!

《黑神话&#xff1a;悟空》是一款以西游记为背景的动作角色扮演游戏&#xff0c;玩家在游戏中将面对各式各样的强大敌人和BOSS。在游戏的第一回合中&#xff0c;你将遇到牯护院、灵虚子、幽魂等多个BOSS。以下是详细的BOSS打法攻略&#xff0c;帮助你在战斗中游刃有余。你可以…

Ubuntu22安装MySQL8,并关闭大小写

最近因为设置MySQL不区分大小写踩了很多坑&#xff0c;把解决过程记录下来。 首先我这个是阿里云全新服务器&#xff0c;操作系统&#xff1a;Ubuntu 22.04 64位 连接到服务器后&#xff1a; 1 安装MySQL 1.1 更新软件包 以下命令皆已单独放至代码块内&#xff0c;直接复制…

服务器配置miniconda环境

目录 1. 查看服务器的操作系统2. 查看服务器的cuda版本3. 配置开发环境3.1 安装miniconda3环境3.2 创建虚拟环境3.3 在虚拟环境中安装pytorch3.4 在虚拟环境中安装库 1. 查看服务器的操作系统 执行代码&#xff1a; uname -a发现是Ubuntu 22.04 2. 查看服务器的cuda版本 执…

鸿蒙OS应用开发例题

单选题 第24/60题 自动跳下一题0 在编译构建HAP时&#xff0c;会从HAP模块及依赖的模块中收集资源文件&#xff0c;如果不同模块下的资源文件出现重名冲突 时&#xff0c;会按照优先级进行覆盖&#xff0c;现在有一个HAP依赖了两个HAR,依赖配置如下所示: // oh-package. j…

柔性织物处理 | 山大宋锐老师 | 最新演讲

笔者是清华在读研究生&#xff0c;主要关注人形机器人、具身智能。将持续分享行业前沿动态、学者观点整理、论文阅读笔记、知识学习路线等。欢迎交流 最近听了宋老师的演讲&#xff0c;以下是学习整理。部分图截自直播&#xff0c;若模糊望见谅 演讲信息&#xff1a; 【会议】…

郁李:花语与植物特征的魅力探寻

一、花语的奥秘 郁李的花语丰富多样&#xff0c;其中 “忠实” 代表着坚定不移的忠诚和信任&#xff0c;寓意着一份真挚而深厚的情感&#xff0c;无论外界如何变化&#xff0c;都能保持初心不变。“困难” 这一花语似乎不太讨喜&#xff0c;它可能象征着人生道路上难免会遭遇的…