django的开源网站源码分享(基于django的web源码)

大家好,如果您还对django的开源网站源码分享不太了解,没有关系,今天就由本站为大家分享django的开源网站源码分享的知识,包括基于django的web源码的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

在这一部分中,我们将使用ECSAutoscaling使我们的DjangoWeb应用程序可扩展。

自动缩放是增加或减少正在运行的实例数量的能力。它允许您处理流量高峰并在低强度时间段内节省资金。

当您为ECS服务启用自动扩展时,AWS会创建Cloudwatch警报以确定我们是需要添加新实例还是删除冗余实例。

让我们看看它在实践中是如何工作的。

ECS弹性伸缩配置

首先,新建一个autoscale.tf,内容如下:

resource&34;&34;{\nmax_capacity=5\nmin_capacity=1\nresource_id=&34;\nscalable_dimension=&34;\nservice_namespace=&34;\n}\n\nresource&34;&34;{\nname=&34;\npolicy_type=&34;\nresource_id=aws_appautoscaling_target.prod_backend_web.resource_id\nscalable_dimension=aws_appautoscaling_target.prod_backend_web.scalable_dimension\nservice_namespace=aws_appautoscaling_target.prod_backend_web.service_namespace\n\ntarget_tracking_scaling_policy_configuration{\npredefined_metric_specification{\npredefined_metric_type=&34;\n}\ntarget_value=80\n}\n\ndepends_on=[aws_appautoscaling_target.prod_backend_web]\n}

这里我们定义:

AWSAppAutoscaling目标。我们希望将prod_backend_web服务按实例计数维度从1扩展到5。AWSAppAutoscaling政策。当ECSServiceAverageCPUUtilization指标超过80%时,我们希望扩大prod_backend_web。

我们已准备好应用更改,但首先,让我们考虑负载均衡器的健康检查。

负载均衡器健康检查

现在我们有一个非常积极的健康检查。如果容器在2秒的超时时间内未能响应两次,负载均衡器会认为此容器运行状况不佳并将其删除。

对于少量流量来说,这可能是一个不错的解决方案。但是如果很多请求到达容器并且CPU使用率上升到100%,容器将无法响应健康检查。因此,负载均衡器杀死了它们,我们将面临更糟糕的情况:根本没有容器来处理流量

可能的解决方案是增加健康检查超时和unhealthy_threshold。因此,超载的集装箱将更有可能存活。

我认为这不是一个完美的解决方案,但它适用于这个测试。如果您知道保持过载容器运行的更优雅的方法,请随时发表评论。

转到load_balancer.tf并增加unhealthy_threshold、timeout和interval参数。

34;aws_lb_target_group&34;prod_backend”{\n…\n\nhealth_check{\n…\nunhealthy_threshold=5\ntimeout=29\ninterval=30\n…\n}\n}

让我们应用我们的更改并在AWS控制台上检查它们。

CloudWatch警报

首先,进入ECS控制台,查看prod_backend_webECS服务的弹性伸缩策略。选择prodECS集群,选择prod-backend-web服务,点击“更新”。转到“设置自动缩放”步骤并单击prod-backend-web-cpu自动缩放策略。

在这里,我们看到当平均CPU利用率达到80%时,自动缩放变得有效。但是缩小的条件是什么?让我们检查与此自动扩展策略关联的CloudWatch警报。

转到CloudWatch控制台并查看警报。

在这里,我们看到当平均CPU负载在3分钟内超过80%时,我们扩大了规模。而且,当平均CPU负载在15分钟内低于72%时,我们会缩减。

如此具体的数字,但我们如何根据我们的情况调整它们呢?为此,您需要为带有aws_appautoscaling_policy中的自定义指标规范参数的警报创建和使用自定义指标。

此外,您可以在控制台中手动更改AlarmHigh和AlarmLow指标。这不是创建可重复设置的优选方式,但对于我们的测试来说没问题。因此,我将AlarmLow指标更改为50%和10分钟。

压力测试

让我们继续测试。我将使用ApacheBenchmark进行压力测试。这个工具可以向我们的服务发送大量请求,因此CPU负载上升。

首先,确保现在Web服务只运行一个容器。

此外,您需要使用ulimit-n10000增加打开文件的限制。

现在我们准备好运行基准测试了。我们将为此测试使用健康检查URL:

$ab-n100000-c1000<https://api.example53.xyz/health/>

其中-c1000并发请求数,-n100000是请求总数。

在接下来的10-15分钟内检查CloudWatch指标和ECS服务。

首先,您应该在图表中看到CPU峰值。3分钟后,ECS自动缩放开始生成新实例。

然后,平均CPU下降到80%以下。此时有3个ECS任务。

一段时间后,CPU负载再次超过80%,ECS自动缩放创建第4个实例。您可以在ECS控制台上看到它们。

所以,扩大工程;让我们检查一下缩小范围。停止ApacheBenchmark并等待10-15分钟以等待缩减。

您将看到CPU负载如何降至零,而ECS将Web服务缩减为1个实例。

重新检查ECS控制台以确保我们只有一个Web任务在运行:

因此,按比例缩小也可以。让我们提交并推送我们的更改到基础设施存储库。

结束

恭喜!在这一部分中,我们为Web服务添加了ECS自动缩放。我们增加了健康检查超时和周期,以防止杀死过载的容器。然后,我们运行压力测试并验证当CPU负载上升时实例数会增加,而当CPU负载下降时实例数会减少。

关注七爪网,获取更多APP/小程序/网站源码资源!

好了,文章到这里就结束啦,如果本次分享的django的开源网站源码分享和基于django的web源码问题对您有所帮助,还望关注下本站哦!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平