目标与准备
在这一章中,我们将为我们私有的iVX应用配置负载均衡与弹性伸缩服务。其作用是当应用访问量过高时,一台服务器无法满足需求,需要更多的服务器来处理高并发的计算请求。
负载均衡与弹性伸缩,是两个需要搭配在一起使用的服务,其中,负载均衡负责在前端接收服务请求,并分发给弹性伸缩组中的后台服务器;弹性伸缩组,负责根据预先指定的规则,监控组中的服务器负载过高时,自动扩展新的服务器,并在负载下降时,释放多余的服务器,以节省成本。其结构大致如下图所示:
最后,要使用自动拓展的服务器架构,我们除了需要完成基础的裸机部署之外,还需要将文件和数据库都进行云端部署,否则,如果将文件和数据库部署在计算服务器上,会导致由弹性伸缩自动创建出来的服务器,无法访问到存储在原始服务器上的文件和数据库。因此,这一章的内容需要依赖之前的单机部署、OSS以及RDS章节,但由于负载均衡会自动承担反向代理的工作,因此并不需要我们自行部署nginx反向代理。
创建负载均衡
首先,我们找到阿里云的负载均衡(SLB)服务,并创建一个实例。创建实例时,不需要额外的配置,只需要注意实例所在区域,要和我们的云服务器所在地域一致即可。
实例创建完成之后,我们通过配置入口开始配置:
1、第一步:选择负载均衡外部访问的协议与端口
443是https的默认端口,如果我们需要额外支持http的访问,可以再添加一个http的监听,http的默认监听端口是80。一个负载均衡,支持添加多个监听端口。
2、第二步:选择证书
https协议,需要一个证书。在这里,由于我们将使用负载均衡作为服务请求的前端,因此,之前在服务器上免费生成的证书就不适用了,需要额外配置证书。在这里,我们需要先在阿里云的SSL证书服务,申请一个证书,然后在这里选择申请好的证书。通常,单域名的证书都有免费版本可以申请,阿里云的证书申请请见相关文档,在这里我们就不重复说明了。
3、配置后端服务器
在这一步中,我们将配置负载均衡后端负责执行计算任务的服务器。我们选择默认服务器组,然后在“继续添加”入口中,可以选择到之前我们已经配置好的服务器。
选择好服务器之后,我们填写我们的服务端口,我们之前配置的是9900;权重默认为100,因为当前只有一个服务器。
4、完成配置
之后,我们还需要选择是否开启健康检查。健康检查,是负载均衡在新加入服务器之后,检查是否正常运行,仅对正常运行的服务器才发送服务请求。我们保留默认打开选项即可。选择下一步,配置完成后,可以看到这个确认界面:
配置域名
负载均衡创建完成后,我们可以在管理界面查看到它的公网IP:
接下来,我们需要在DNS服务中,将之前绑定了证书的域名,指向这个IP。在这个教学中,我们用了一个测试域名 wintest.ih5school.cn。完成域名解析,我们就可以通过这个域名访问到我们的应用了:
https://wintest.ih5school.cn/Q&A (由于这个只是一个教学用的测试应用,您查看这个文档的时候,这个服务不一定能够正常访问。)
这个访问路径,是通过阿里云的负载均衡服务,而不是直接连接到我们的服务器。
配置弹性伸缩
接下来,我们来接入弹性伸缩服务。首先,找到阿里云的弹性伸缩服务(auto scaling),并选择创建一个伸缩组:
在这里,由于我们已经配置好了一个服务器,因此,可以直接选择通过已有的ECS创建,将我们已配置完成的服务器作为一个模板。
开始创建之后,有几个要点需要注意:
1、选择模板实例
配置来源选择已有实例,然后选我们之前配置好的服务器:
2、设置最大最小实例数
我们需要制定这个弹性伸缩组,最大和最小的实例数,最小实例,填写1即可。
3、选择关联的负载均衡与RDS
最后,我们需要选择这个弹性伸缩组关联的负载均衡与RDS。关联负载均衡之后,这个弹性伸缩组就会自动接入负载均衡,管理其后端服务器了。关联RDS实例的目的,是因为RDS实例需要设置访问白名单,关联之后,弹性伸缩组在扩展服务器时,会自动去RDS中登记新的服务器,确保新的服务器可以顺利访问RDS。
配置完成后,我们的服务器就可以弹性伸缩了。当弹性伸缩条件满足时,我们会在负载均衡的后端服务器组中,看到自动创建出来的服务器:
除了以上基本配置,弹性伸缩还可以配置更加详细的伸缩策略,包括冷却时间,触发伸缩的条件等等,具体可以参考阿里云的相关文档说明。
弹性伸缩的局限性
以上,我们已经完成了弹性伸缩计算服务的配置,尽管这个服务架构,支持在高并发时自动添加服务器资源,但其依旧有一些局限性: