繁体   English   中英

使用 Django 在 AWS 上使用 EC2 对 Websockets 进行故障排除

[英]Troubleshooting Websockets with EC2 on AWS using Django

我正在使用 Django-Channels 尝试获取实时功能,例如聊天/消息传递、通知等。现在,我已经使用此处文档中描述的设置在我的笔记本电脑上一切正常: http://channels .readthedocs.io/en/latest/ 我使用本地 redis 服务器进行测试。

但是,当我部署到我的 Amazon EC2 Elastic Beanstalk 服务器(使用 AWS ElastiCache Redis)时,WebSocket 功能失败。 我正在阅读,我认为这是由于亚马逊的 HTTPS 不支持 WebSockets,所以我需要切换到安全 TCP。 我尝试这样做: https://blog.jverkamp.com/2015/07/20/configuring-websockets-behind-an-aws-elb/https://medium.com/@Philmod/load-balancing- websockets-on-ec2-1da94584a5e9#.ak2jh5h0q但无济于事。

有没有人成功地在 AWS EB 上使用 CentOS/Apache 和 Django 实现 WebSockets? Django-Channels 包是相当新的,所以我想知道是否有人经历过和/或克服了这个障碍。 提前致谢

AWS推出了支持Web套接字的新Application Load Balancer。 将您的ELB更改为应用程序负载均衡器,这将解决您的问题。

https://aws.amazon.com/blogs/aws/new-aws-application-load-balancer/

如上所述这里它可以运行使用应用负载平衡器上弹性魔豆Django的渠道。

在简化形式中,它基本上是:

  1. 创建一个ALB
  2. 添加2个目标组,一个指向端口80,另一个指向达芙妮端口,即8080。
  3. 创建2个路径规则 让默认路由指向目标组1(端口80),并将第二个路由指向使用相对路径,即。 / ws /并将其指向目标组2。
  4. 将Daphne和工人添加到supervisord(或其他init系统)
  5. DONE! 通过相对网址ws://example.com/ws/访问Daphne / websockets。

我想ALB是唯一的方法。 原因是因为使用经典LB中的SSL协议列表器,会话粘性和X-Forwaded标头将不会被转发,并将导致代理服务器重定向循环。 Doc在这里,

http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html

如果我找到现有CLB的方法,我会更新答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM