阿里云弹性伸缩在生产环境中的实战应用

之所以要写这篇文章,是因为11月19日正好是个周五,一下班匆匆忙忙拿起书包往家赶,谁知刚出公司大门就连续接到好几个报警电话,服务器崩掉了。赶紧回公司定位问题,发现公司发了一条公众号,链接到商城小程序的用户突增,导致服务器CPU飙高,数据库使用率也瞬间飚到100%。怎么办,赶紧手动扩容,临时增加了两台16C服务器,把压力过高的服务扩容到这两台数据,数据库之前就配置了自动扩容,很快就自动恢复了。虽然有惊无险,但是前前后后也耗费了半个多小时。

为了避免以后遇到同样的问题,花了两天时间,利用阿里云弹性伸缩服务,实现服务在压力过高时,自动扩容,压力恢复后再自动缩容。

背景:

一,生产环境硬件构成:

阿里云ECS主机

阿里云RDS数据库

阿里云MOngoDB数据库

阿里云Redis数据库

二,生产环境服务管理:

Rancher中使用Cattle容器编排调度引擎

关于rancher的使用不做详细描述,有兴趣的同学可以去查阅相关资料

整体实现思路:
请添加图片描述

开始操作:

1,创建伸缩组。

登录阿里云弹性伸缩控制台,创建伸缩组,下图是我在生产所使用的
请添加图片描述

2,创建伸缩规则。

点击伸缩组管理,进入刚刚创建的伸缩组,点击伸缩规则与伸缩活动,创建伸缩规则

这里我创建了两个规则,一个是简单增加主机(increase),另外一个简单减少主机(decrease)
请添加图片描述

3,创建生命周期挂钩。用于主机在创建后执行初始化脚本,自动添加到rancher,并扩容指定服务,实现服务的自动扩容和调度。同时需要自动增加MongoDB以及Redis数据库白名单,避免服务出现连接数据库超时

第一步:实现新增的主机自动初始化,并自动添加到rancher,先要制作一个shell脚本

初步确定需要执行的命令如下(最终整理后的脚本在演示1,2 之后):

apt-get -y update
apt-get -y upgrade
#安装rancher指定的的docker
curl https://releases.rancher.com/install-docker/18.06.sh | sh
#注册主机到rancher(该脚本涉及隐私,所以只展示一部分),步骤在下面:演示1
sudo docker run -e CATTLE_HOST_LABELS='group=ext'  --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher***********
#利用rancher提供的webhooks实现服务自动扩容,需要指定服务,获取触发地址步骤在下面:演示2
curl -X POST "http://101.200.****:18080/v1-webhooks/endpoint?key=****"

演示1:注册主机到rancher,在rancher添加主机页面找到该指令

建议添加一个主机标签,方便服务自动调度到该标签的主机,如图第五步,就是我们要的注册主机脚本
请添加图片描述

演示2:利用webhooks实现服务扩容
请添加图片描述
请添加图片描述
请添加图片描述

创建好之后复制触发地址,http://101.200.:18080/v1-webhooks/endpoint?key=

简单整理,得到最终执行的脚本:
请添加图片描述

拿到脚本后先暂存到本地,接下来开始正式创建生命周期挂钩,回到阿里云伸缩组管理,进入生命周期挂钩页面,创建生命周期挂钩
请添加图片描述

选中OOS模板,设置参数,把刚刚整理好的脚本粘贴到此处,点击创建
请添加图片描述

同样的步骤,在创建两个生命周期挂钩实现自动加入数据库白名单,最终如图
请添加图片描述

测试生命周期挂钩是否生效:

点击伸缩规则,手动执行刚刚创建的扩容规则,会自动创建一个ECS主机,如果该主机会动自动加入到rancher控制台,并自动扩容服务,说明挂钩已生效

四,自动触发扩容

1,进入阿里云云监控控制台,创建报警规则,这里我监控ECS主机CPU状态,根据需要自己配置,配置触发弹性伸缩,指定弹性伸缩规则,是扩容还是缩容,操作如图
请添加图片描述
请添加图片描述

生产环境使用还需要做一个服务正常后自动缩容服务,自动释放主机。操作大同小异

到此为止,自动扩容已经全部完成,整个过程并不复杂,但是小坑还是比较多的,这儿不做详细讲解,有问题的同学在评论区交流

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值