Elastic Beanstalk Django App REST API因多个EC2实例失败

时间:2018-02-09 01:15:52

标签: django elastic-beanstalk amazon-elb

我正在通过Elastic Beanstalk环境运行DJango应用程序,该环境设置为在服务器负载达到某个级别时扩展到多个实例。

Django APP被用作REST API(DRF),我安装了django-cors-headers [https://github.com/ottoyiu/django-cors-headers] app来处理来自Ionic Application的请求。正在通过Angular2的http框架提出请求,该框架会发出飞行前请求。

当只有一个实例在运行时,应用程序和请求可以正常工作。但是,当Elastic Beanstalk启动第二台服务器时,因为它已达到限制,所有请求都会开始失败。不需要身份验证的请求与请求失败的请求失败的请求相同。如果我通过Postman提出请求,它可以正常工作。所以它必须与CORS配置有关。

API使用https://github.com/manosim/django-rest-framework-api-key框架提供API密钥,因此这也是设置的一部分。

我一直在浏览网页,并尝试了几乎所有我能找到的东西。我尝试通过ebextensions在apache配置中手动设置Headers。我查看了ngnix设置,但不确定那里可以做些什么。

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题。它根本与CORS无关。问题围绕Elastic Load Balancer运行状况。在成功安装和启动Django应用程序之前,健康状态立即恢复正常。因此,我的要求是试图找到一个甚至没有运行的服务。为解决此问题,我为ELB创建了自定义运行状况检查。

  • 创建一个名为health的Django视图,让它返回200.您可以将url路径设置为您想要的任何内容。我只是/健康
  • 在ELB中配置运行状况检查以在PORT 80上使用HTTP并将ping路径设置为运行状况页面的URL。 (/健康)
  • 完成。