阿里云——如何实现系统自动扩容

哈希涟漪
• 阅读 6176

前置知识

  1. ECS:阿里云主机,将jar部署在上面作为一个集群的可用节点。
  2. 镜像:ECS运行中的一个快照,保存了当时所有落盘的文件,不包含内存数据。
  3. 启动模板:包含了硬件资源规格与镜像的启动配置,如果直接将镜像启动为ECS实例将使用镜像中的硬件资源配置。
  4. SLB:负载均衡,通过一定的策略实现流量均摊,并提供健康检查判定节点是否可用,权重0~100,请求越多分摊越均匀。
  5. ESS:弹性伸缩,在流量激增的情况下会根据配置的启动模板增加虚拟ECS(vEVS),并将vECS加入SLB中,默认权重是50。
  6. NAS:文件存储,可以将硬盘设备挂载到多个主机上共享硬盘中的文件,我们主要用于在自动生成vECS的时候将jar文件更新为最新版本。

目前情况

我们的系统中有两台手动创建的ECS里面部署了jar作为服务。这两天服务器属于同一个SLB,外网用户主要通过访问SLB的IP,然后SLB将解析HTTPS并转发请求到应用服务器上。但是这是固定的,没有弹性。当流量洪流来袭时我们的系统CPU与内存将进到达100%,用户甚至出现请求超时的异常。但是我们并不愿意直接扩充ECS,因为只有在抢购活动时系统才会难以承担,我们没必要在平时负担这些额外ECS的费用
基于以上情况我们开始配置ESS。ESS按量计费相当划算~

问题分析

  1. 如何在vECS启动的同时启动服务进程?
  2. 如何获取最新的jar?
  3. 如何指定扩容策略?
  4. 如何指定缩容策略?
  5. 如何监控vECS的运行情况?

搭建流程

1.我们的镜像是ECS运行时的快照,也就是说其中包含的jar是当时的版本,所以我们在vECS启动时需要更新jar,但是如何更新呢?总不能一个一个的去修改吧。我们使用了NAS,每次jar有更新只需要将最新版本拷贝到共享硬盘中,然后镜像启动时自动去将最新jar复制到镜像中即可。然后通过java命令启动jar即可。

2.我们需要配置弹性伸缩组,并指扩容缩容的规则。

3.我们需要将弹性伸缩组与负载均衡相关联,并设置负载均衡的健康检查。

具体步骤如下:
阿里云——如何实现系统自动扩容
阿里云——如何实现系统自动扩容
阿里云——如何实现系统自动扩容
阿里云——如何实现系统自动扩容
配置扩容与缩容规则(简单规则为例)
阿里云——如何实现系统自动扩容
阿里云——如何实现系统自动扩容
以下脚本文件需要放在镜像中:
阿里云——如何实现系统自动扩容
阿里云——如何实现系统自动扩容

最终效果

以前ECS的监控情况如下:
阿里云——如何实现系统自动扩容
现在ECS的监控情况如下:
阿里云——如何实现系统自动扩容
弹性伸缩组会自动加入一个vECS
阿里云——如何实现系统自动扩容

目的达到,继续监控,吃饭~

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
3年前
springboot使用之快捷打包部署
本篇关键知识点:Maven的assembly插件实现自定义打包部署(包含依赖jar包) 目前springboot项目的几种常见的部署方式。1\.使用docker容器去部署,将springboot的应用构建成一个dockerimage,然后通过容器去启动镜像,这种方式在
Wesley13 Wesley13
3年前
RAC环境单实例启动数据库收到ORA
     在RAC环境中,如果你在没有启动节点的集群服务的情况下单实例启动数据库,将收到类似如下的报错:\oracle@rhel1u01\$sqlSQL\Plus:Release10.2.0.5.0ProductiononTueApr215:00:272013Copyright(
Peter20 Peter20
4年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
冴羽 冴羽
3年前
一篇从购买服务器到部署博客代码的详细教程
前言我们在实现了VuePress搭建个人博客,在和实现了代码自动同步和部署Github和Gitee,但我最终还是决定自己建站,说干就干,那我们开始吧。买服务器因为个人的工作经历,选择了阿里云服务器,我们直接买个云服务器ECS,所谓ECS服务器,直接引用官方的介绍:云服务器ECS(ElasticComputeService)是一种
Wesley13 Wesley13
3年前
ECS主动运维2.0,体验升级,事半功倍
_摘要:_ 阿里云致力于提供更好用的运维体验,让您使用ECS的过程更透明、高效,并实现更加标准化、自动化的运维方式。基于主动运维2.0,您使用ECS云服务器的体验更加流畅,而且利用系统事件,不再依赖于工单联系客服,可以通过自助处理的方式响应主动运维实例重启,减少对系统可靠性和业务连续性的影响。   云服务器ECS(ElasticCompute
Stella981 Stella981
3年前
Centos6.5静默安装Oracle 11g
环境:Centos6.564目的:无图形界面安装Oracle数据库版本:11g64一、系统配置1.安装相关依赖包,可通过挂载镜像或者阿里云、网易云等开源镜像站yuminstallbinutilsyyuminstallcompatlibcap1yyuminstallcompatlib
Stella981 Stella981
3年前
Maven使用 国内镜像配置
Maven使用国内镜像配置  Maven  setting.xml中配置<repositories<repository<idnexus</id<namelocalprivatenexus</name
Stella981 Stella981
3年前
Docker 镜像 容器 仓库
Docker包括三个基本概念镜像(Image)容器(Container)仓库(Repository)Docker镜像Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(