django – 网站的EC2架构设计
作者:互联网
我有一个网站,我很快就会推出.不完全确定流量会有多重.
我正在使用Django Nginx Gunicorn Mysql.将支持SSL / HTTPS.
作为一个起点,我想通过Elastic Load Balancing来平衡两个微实例.
MySql数据库将位于其中一个实例上.如果流量变大,我可能会将静态文件移动到CDN.微实例充当前端服务器,负责仅生成HTML / JSON并提供静态文件.静态文件主要是CSS / js和几个图像(不是很多).我预见数据库读取量会减少,写入次数也会减少.
问题:
>假设流量每天增加到10万页面浏览量,2个微观实例是否足够?
我是否必须将数据库移动到单独的实例?什么样的实例类型会好?
>如果流量每天只有1k页面浏览量怎么办?
>在微型实例上运行多少个gunicorn进程?
>一般来说,什么类型的指标可以帮助我确定我需要什么样的实例和数量?决定我需要什么样的架构的方法是什么?
非常感谢!
解决方法:
完全取决于网站计划的动态程度.用户是否为服务生成内容,还是主要是静态的?如果是前者,您可以通过将诸如头像,图像等内容放入S3并将其放在Cloudfront上来获得很多.与静态文件相同…保持服务器无状态将允许您轻松扩展.
每天100k的页面浏览量,你肯定会在微软上挣扎……你真的应该只在开发环境中使用它们,并不打算处理像服务用户这样的东西.我在负载均衡器前面至少使用一个小实例,可能听起来很奇怪,但是当事情变得繁忙时你将能够投入另一个实例而不必弄乱Route 53或者可能让你的站点失败.无状态的东西现在非常重要,因为用户生成的资产可能只能从一个实例而不是另一个实例引用.
在1k页面浏览量下,我仍然使用一个小的用于Web服务,另一个用于MySQL.您可以查看RDS,如果您正在进行此单独操作,那就太棒了,忘记需要升级版本以及维护,备份等内容.
您还可以一键单击旋转读取副本以获得峰值.查看Amazon CLI以帮助自动执行这些任务.如果你有时间压力,Cronjobs会让它变得简单,否则Opsworks,Cloudformation和Auto-Scaling都会对上述内容有所帮助.
哦,作为一个比较,我运行Apache的应用服务器,用APC的PHP服务我们的用户开始与大约80个并发用户斗争.在具有小型RDS的小型EC2实例上运行(在应用程序服务器正在下坡的同时,它位于大约15%的位置)
标签:nginx,amazon-web-services,amazon-ec2,django,amazon-elb 来源: https://codeday.me/bug/20190825/1719648.html