负载均衡与弹性伸缩
准备
跟随阿里云ACA认证教程的后三章对应的知识点文档,我学习了在阿里云平台上给Serverless配置的负载均衡的步骤,知道了弹性伸缩和负载均衡的概念。预先完成资源组创建,浏览器控制台里登录进入Serverless的管理界面。
引子
以前做django博客“友圈”的RSS订阅爬虫、随机友链传送和友链的表单申请,我买的是VPS,然后在其上装apache/django/wsgi/python/mysql等应用运行,开放端口,再设置DNS解析。而Serverless就简单多了,毕竟Server被Less掉了。大致意思是不用管VPS,直接上传代码到平台让平台来部署,绑定域名,直接访问就可以了,轻松很多,而且往往是免费的。
但这也有一些弊端,阿里云的Serverless限制了总流量,永远只能以一个用户的角度来用,没办法自定义,还会有一些限制,如:CPU最长执行时间 、总请求数、函数总请求数、函数最长执行时间等等需要自己来优化。
于是弹性伸缩成了优化的关键。我希望通过实操,学习下如何创建一个无需管理底层服务器的Serverless K8s集群和配置步骤,来简化网站框架以及能承受更多流量,还能在空闲时段自降成本的Serverless。
实操希望通过跟随教程的步骤(设置自动伸缩组、启动模板、伸缩策略、构建自响应负载变化弹性系统),来初步了解云函数、负载均衡、弹性伸缩这些名词的概念和不用买VPS安装宝塔或1Panel再安装Nginx,直接用Serverless云函数免费托管的方法。尤其是vim和部署,这还可以让我熟悉Linux指令系统。
实操
就像预习报告里说的,Server被Less掉了,直接选“无状态”应用部署方式,简单起见不改YAML,直接创建无状态应用实例,把业务代码上传上去,让平台的CI/CD来负责服务部署,如图所示,

举个不恰当的例子就比如我个人网站iamyukino.cn的Serverless,首先我将源码上传到边缘安全加速平台EO Pages_腾讯云,再经由平台构建出最终的HTML页面,然后再在平台上绑定域名,直接访问就可以了。
Serverless的请求独立使得弹性伸缩很容易实现。阿里云平台上,指标弹性伸缩HPA和定时弹性伸缩CronHPA规则这些直接用预设值即可。唯一需要改的是HPA基于CPU利用率的伸缩策略的阈值50%,意思是,当实例平均CPU利用率超过这一值时,系统会自动扩容。也可以把规则改成“基于内存使用量的策略”阈值设为70%。或者CronHPA安装定时伸缩组件,这种方式下我创建了一个每分钟触发一次的规则,实例数量设为扩展至10个。
阿里云提供了压力测试工具使我可以模拟高负载场景并实时观察实例数量:当CPU或内存使用率超过阈值时,系统自动增加了实例数量,并在控制台的伸缩活动中记录了扩容事件;停止压力测试,负载下降后,系统经过冷却时间自动触发缩容,实例数量恢复至初始值。
总结
自己个人网站iamyukino.cn的django服务器只负责后端api的点赞评论/友圈好文推荐爬虫/随机传送这些功能,其他都前后端分离托管在Vercel上,一超过50人就要考虑负载均衡了。这次实验负载均衡是基于Serverless的,不像传统的VPS,我并不完全拥有它,所以有些服务是不能跑的,特别是在免费层,如特别吃IO和网络的AList,或是并发请求特别高以及商用服务。
除了阿里云,我了解到一些平台,像Zeabur你可以将自己的VPS托管给Zeabur,它会在你的服务器上安装k3s等服务,之后你就可以直接在Zeabur的仪表盘上进行运维了。在用Serverless的时候,服务直接跑在平台CDN上的,我直接享有所属平台的CDN IP段以及带宽,这也让平台的管理更加方便,不需要大量购入物理机开虚拟机做VPS,只需要做一个小集群并做好用户分配即可。
构建虚拟云和云函数
准备
跟随阿里云ACA认证教程的前四章,我完成了Apache和Nginx服务安装和AList前端部署,知道了虚拟私有云和云函数FC的大致概念。额外查阅了菜鸟教程,来熟悉Linux指令系统,sudo/ls/cd等一些常用的命令,和vim输入wq保存并退出而不是ctrl+c关掉等内容。
计划
实操希望通过跟随教程的步骤(配置Apache服务、构建逻辑隔离的VPC环境,还有配置Nginx日志、规划网络地址、创子网、配置路由表和安全组和FC计算这些步骤),来初步了解云计算;具体如阿里云SLS日志服务的安装和配置完全靠指令,还可以让我熟悉Linux系统指令以及Nginx配置指令。 特别注意到几个特殊点:地域和可用区的选择要一致;网段规划避开保留地址段;使用的阿里云FC函数计算,它虽然可以运行二进制文件,但是和传统架构大相径庭,要深入了解。
知识点
部署完毕前端后,我们就需要一个后端,它需要能够执行AList的二进制文件,并且能开放端口来让前端可以和后端相互通信。以前我的个人网站买的是VPS,直接在服务器上装apache/django/wsgi/python/mysql 等应用运行,或者qqbot用自己的电脑/家里云+Cloudflare Tunnel又或者是Serv00这种免费的托管。
FC总是在某种条件创建实例来运行服务,也就是说这个实例是无状态的,直接拿来部署AList就会导致第一次配置完毕后过一段时间再访问就会变为初始状态。就算一开始就使用一个全量包来部署,在部署后也无法对其进行更改,绑定NAS来数据持久化。但是NAS文件系统并不能直接绑定到代码的运行时 /code/xxx 目录,查阅教程,了解到可以使用AList的指定配置文件参数,将NAS绑定到 /mnt/AList 然后指定配置文件到 /mnt/AList 。也就是通过./alist server —data /mnt/AList 命令来启动,这样就做到了所谓数据持久化。
实操
跟随阿里云ACA认证教程的第一章,安装启动Apache、设开机自启,还有查运行状态等指令。额外查阅了菜鸟教程,来熟悉Linux指令系统,sudo/ls/cd等一些常用的命令,和vim输入wq保存并退出而不是ctrl+c关掉等内容。

阿里云控制台已经帮我们创建好了名为vpc-test的专有网络,也已创建对应的交换机vswitch-1。资源在华东2上海。在UI界面创建新的安全组vpc-test-sg,将它关联到新建的VPC。安全组用预设即可:允许内网通信但限制外部访问。
创建好了之后停止实例运行解绑弹性IP,更换专有网络的功能将实例迁移到vpc-test环境,重启获得新的内网IP地址完成迁移。
第三章学习SSH连接互联网访问和内网连通性,网络安全隔离。通过包管理安装了Logtail日志采集客户端,配置接入日志库。试着用浏览器访问服务器IP地址并刷新多次来模拟产生文本日志,完成测试。

预习已部署完AList前端,通信地址在根目录的env.production里定义。我们目前并不知道这个后端URL如何填写,因为这个URL是由阿里云在FC函数创建完毕的时候才会展示,所以我们暂且搁置到一遍。进入到阿里云FC页,进入创建Web函数的页面,函数名写AList,选5244和从文件夹上传代码到函数,也就是AList的二进制文件,解压创建一个空文件夹放进去,然后上传这个文件夹到函数。齐老师特别强调不需要清理资源,因为这样可以更快进入下一次实验。
总结
这次实验,我了解了虚拟私有云的大致概念,从网络规划到资源创建,从实例迁移到功能验证,我熟悉云网络建设的一些内容,特别是可用区一致性、网段规划这些。我还额外了解了阿里云FC函数计算,它虽然可以运行二进制文件,但是和传统架构大相径庭。
特别遇到一个问题,FC函数计算的配置里提示获取设置失败:请稍后,正在加载储存。有一段时间没打开网页,就会提示这个。其实就是字面意思,报错加载存储需要时间,不过等半天也未必加载出来,直接进后台管理页面:http://alist地址:5244/@manage/settings/site把阿里相关存储都删掉,刷新下页面就进去了。
部分信息可能已经过时










