背景
有两个高访问量的前端H5项目同时上线,为了保证微信分享接口能承受住高并发,尝试用阿里云负载均衡来配置分享接口。
虽然实际访问量没有达到预估的百万,日均有4、5万,并发有100多,所以此次配置还是相当有效的。
思路
由于项目是纯前端H5,把项目整体打包到CDN,这样就算分享接口挂掉,也不会影响H5的正常访问。那压力就集中在分享接口的承载上。
根据之前投放微信朋友圈项目的经验,服务器架构选择:多台服务器+负载均衡+云数据库,具体为 阿里云 ECS(云服务器)(8核16G)*2+SLB(负载均衡)+RDS(MySQL数据库)(1核2G)。
官网地址: 阿里云负载均衡SLB
操作方法
具体的SLB操作方法这里不再陈述,阿里云SLB的入门文档 写的很清楚了。这里只是根据实例说重点的几步和要避掉的坑。
大体有几步:创建ECS实例、搭建应用、创建负载均衡实例、添加监听和后端服务器、域名解析。
1、创建ECS实例
是按微信朋友圈一跳并发400的标准 选择ECS配置的,计费方式一定要选择 按量付费,这样可以随意增加删除ECS,推广期过后可以释放掉ECS(SLB和RDS同样是按量付费),避免不必要的资源浪费。
系统镜像选用的 护卫神PHP环境 集成了Apache、PHP、MySQL、FTP、phpMyAdmin,不必再手动去搭建服务器环境,节省了大把的非开发时间。
注意要按护卫神文档,把几个TCP端口添加到ECS的安全组里。
2、搭建应用
由于服务器环境是用的第三方镜像,应用的搭建方法要根据护卫神的说明,
注意一点:要把SLB的域名、SLB的IP、ECS的IP加入到护卫神的绑定域名里,不然无法通过SLB的IP访问哦。
3、创建负载均衡实例、添加监听和后端服务器
把2台ECS加入到SLB的默认服务器组里,第一次通过SLB的IP访问到ECS上的网页,还确实能让人惊喜一下~
通过SLB的检测菜单,可以看到SLB的实时并发量,
4、域名解析
这里说下微信公众号的配置,除了把域名加入JS安全域名外,还要把SLB和ECS的IP加入到公众号的IP白名单里,不然无法调用token。
BTW
1、除了上面提到的,把各个IP加入到护卫神的绑定域名,通过SLB的IP访问网页还会提示403错误,这里是个大坑,需要把SLB的几个IP地址:100.64.0.0/10、10.158.0.0/16、10.159.0.0/16和10.49.0.0/16,加入到ECS的IP白名单;
2、通过查看ECS的资源监视器,SLB的流量应该是均匀分发的。可以根据SLB并发量和ECS资源使用情况(TCP链接数、CUP使用率、内存使用情况),灵活的增加移除ECS的数量。
3、最后说下价格,按上面的配置,按量计费,不算带宽和流量费用,根据目前的阿里云报价,ECS+SLB+RDS的费用为6元/时,即146元/天,还是很合适的。
参考链接
阿里云负载均衡快速入门教程:https://help.aliyun.com/document_detail/27547.html?spm=a2c4g.11174283.3.1.prCOPj
护卫神说明文档:https://market.aliyun.com/products/53398003/cmjj009525.html?spm=5176.204674.1085795.9.CIhSDO
ECS在接入负载均衡服务前添加了白名单,对负载均衡服务有影响么?:
https://yq.aliyun.com/ask/58921?spm=5176.11065265.1996646101.searchclickresult.5682605emkRFY2